3

在尝试这样做时:

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

4

2 回答 2

3

我相信 CPAN.pm 喜欢为各种任务调用很多子流程,而这些最终会启动 new perls,它不会继承您的-Iflag。相反,请尝试设置PERL5LIB环境变量,例如

PERL5LIB='/v1/data/site_perl' perl -MCPAN -e 'install Log::Dispatch'

要考虑的另一个策略是在本地目录中简单地构建一个完整的 Perl 安装——然后使用perl 的 CPAN 实用程序。他们已经内置了您自己的所有路径。这是我倾向于这样做的方式。

于 2010-04-12T20:28:03.453 回答
2

您不能使用简单的-I标志安装到不同的 CPAN 目录。您可以使用local::lib包来安装一组本地库,或者查看这个问题这个问题

于 2010-04-12T21:05:34.210 回答