在作为root用户执行的CPAN依赖安装期间无法在@INC中找到

时间:2010-04-12 20:09:18

标签: perl install cpan

尝试时:

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?我错过了什么?

2 个答案:

答案 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 questionthis question