尝试时:
perl -I'/v1/data/site_perl' -MCPAN -e 'install Log::Dispatch';
我继续得到“无法找到@INC中的Params / Validate.pm”。查看输出时,/ v1 / data / site_perl不在显示的@INC中,即使我使用-I。
我不是root,所以我更改了我的CPAN配置,以便:
'makepl_arg' => q[LIB=/v1/data/site_perl INSTALLSITEMAN1DIR=/v1/data/site_perl/man/man1 INSTALLSITEMAN3DIR=/v1/data/site_perl/man/man3 INSTALLMAN1DIR=/v1/data/site_perl/man/man1 INSTALLMAN3DIR=/v1/data/site_perl/man/man3]
所以即使设置了LIB。
在基本脚本中我有:
use lib '/v1/data/site_perl';
use Params::Validate;
没有问题。
如何在不强制安装的情况下使Log :: Dispatch使用lib / v1 / data / site_perl?我错过了什么?
答案 0 :(得分:3)
我相信CPAN.pm喜欢为各种任务调用很多子流程,这些子流程最终会启动新的perl
,它们不会继承你的-I
标志。相反,请尝试设置PERL5LIB
环境变量,例如
PERL5LIB='/v1/data/site_perl' perl -MCPAN -e 'install Log::Dispatch'
要考虑的另一个策略是在本地目录中简单地构建一个完整的Perl安装 - 然后使用那个 perl的CPAN实用程序。他们已经内置了所有自己的路径。这是我倾向于这样做的方式。
答案 1 :(得分:2)
您无法使用简单的-I
标志安装到其他CPAN目录中。您可以使用local::lib包来安装本地库集,或者参阅this question和this question。