perl - 强制本地安装的模块使用本地安装的依赖项

标签 perl dependencies perl-module cpan dependency-management

我正在开发一个项目,该项目需要将所有第三方(读取: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/

相关文章:

Perl 如何从作为数组元素的文件句柄中读取一行

c# - 反射.Net : how to load dependencies?

android - 重复的jar入口-android

apache - 在 mod_perl 2 下关闭响应

perl - 如何使用 ioctl 获取终端的宽度和高度?

perl - 让 perl 脚本使用多个辅助脚本中的一个

Perl Mechanize 在使用代理时抛出连接错误

perl - 使用 Config::Simple 读取带键但不带值的 MySQL 配置文件

html - 如何在perl中使用Mechanize单击按钮?

.net - Microsoft.ApplicationInsights.Log4NetAppender