Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl Can';在CPAN依赖项安装过程中,不能以root用户身份在@INC中定位_Perl_Installation_Cpan - Fatal编程技术网

Perl Can';在CPAN依赖项安装过程中,不能以root用户身份在@INC中定位

Perl Can';在CPAN依赖项安装过程中,不能以root用户身份在@INC中定位,perl,installation,cpan,Perl,Installation,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=/

在尝试执行以下操作时:

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?我缺少什么?

我相信CPAN.pm喜欢为各种任务调用许多子进程,这些子进程最终会启动新的
perl
s,它不会继承您的
-I
标志。相反,请尝试设置一个
PERL5LIB
环境变量,例如

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

另一个考虑的策略是在本地目录中简单地构建一个完整的Perl安装——然后使用Perl的CPAN实用程序。它们已经内置了所有您自己的路径。这是我通常的做法。

您不能使用简单的
-I
标志将其安装到不同的CPAN目录中。您可以使用该软件包安装一组本地库,或者查看和。

可能的重复项,我使用-I将我的非根库添加到@INC。一旦CPAN到达主模块,它就找不到所需的最近安装的模块,因为@INC的实例不包含我的目录。我没有尝试设置PERL5LIB,这很有效。本地::lib未安装在该计算机上,但很快就会安装!谢谢你的信息。