我正在开发一个项目,该项目需要将所有第三方(读取:CPAN)perl 模块安装在 perforce 存储库中,以便任何依赖于它们的代码都可以成功运行,而无需其他任何人手动安装他们。我使用 cpanminus 来安装我的 CPAN 模块,所以我运行了 cpanm -L . Moose
在所需的目录中,一切都安装成功。然而,当我尝试编译用 Moose 制作的模块时,有时会出现以下错误:
Undefined subroutine &Carp::longmess_heavy called at /usr/lib/perl5/5.8.8/Carp.pm line 235.
看起来,即使 Carp 与 Moose 一起安装到我的本地目录中,它仍然使用 /user/lib/perl5/5.8.8
中的(过时的)版本。 。我可以在我的机器上升级 Carp,但是一旦我将代码 checkin 存储库,其他拥有过时 Carp 的人都会遇到同样的问题。那么我如何强制 Moose 使用本地安装的 Carp,而不是 /usr/lib/perl5/5.8.8
中的那个? ?
最佳答案
你不强制Moose,你强制perl
。您已将模块安装在 perl
不知道的位置,因此您需要告知 perl
。
由于您想要影响所有脚本,因此您需要将其放入登录脚本中。
export PERL5LIB=/home/.../lib
如果您只想影响该一个程序,您可以使用以下命令启动该程序:
PERL5LIB=/home/.../lib script
或者您可以将以下内容添加到脚本中:
use lib '/home/.../lib';
关于perl - 强制本地安装的模块使用本地安装的依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15556201/