我正在一台没有互联网连接的机器上设置本地 perl 安装(目前,我只是在虚拟机上进行 PoC)。我已经从 RPM 存储库安装了本地 perl、CPANMakeMaker,现在我正在尝试构建 local::lib ,使用这个命令:

perl -I /home/serveradmin/local/usr/share/perl5 Makefile.PL --bootstrap=~/local/usr --no-manpages 

-I 路径是CPANMakeMaker 的位置。

> find /home/serveradmin/local -name CPAN.pm 
/home/serveradmin/local/usr/share/perl5/CPAN.pm 
 
> find /home/serveradmin/local -name MakeMaker.pm 
/home/serveradmin/local/usr/share/perl5/ExtUtils/MakeMaker.pm 

但是,它因以下错误而失败:

Can't locate ExtUtils/MakeMaker.pm in @INC (@INC contains: 
/home/serveradmin/local/usr/lib/perl5/5.10.0 /home/serveradmin/local/usr/lib/perl5  
/usr/local/lib/perl5 /usr/local/share/perl5 /usr/lib/perl5/vendor_perl  
/usr/share/perl5/vendor_perl /usr/lib/perl5 /usr/share/perl5 .) at inc/ConfigCPAN.pm line 15. 
 
Can't locate CPAN.pm in @INC (@INC contains:  
/home/serveradmin/local/usr/lib/perl5/5.10.0 /home/serveradmin/local/usr/lib/perl5  
/usr/local/lib/perl5 /usr/local/share/perl5 /usr/lib/perl5/vendor_perl  
/usr/share/perl5/vendor_perl /usr/lib/perl5 /usr/share/perl5 .). 

perl -Venv -i perl -V 都产生相同的 @INC(PERLLIB也没有设置 PERL5LIB;实际上,env | grep -i perl 没有显示任何结果):

/usr/local/lib/perl5 
/usr/local/share/perl5 
/usr/lib/perl5/vendor_perl 
/usr/share/perl5/vendor_perl 
/usr/lib/perl5 
/usr/share/perl5 
. 

我在 -I 上指定的路径没有出现在错误显示的 @INC 上,这让它看起来像 -I 不工作。但是如果我跑

perl -I /home/serveradmin/local/usr/share/perl5 -V 

这正确地将路径添加到 @INC 之前。

我的 google-fu 没有阐明这一点,因此不胜感激任何帮助/指点。

感谢您的宝贵时间。

请您参考如下方法:

Makefile.PL 可能正在启动另一个 perl 实例,但没有重新指定 -I 选项(因为它不知道它需要到)。使用 env var PERL5LIB 应该可以解决这个问题,因为它从父进程传递到子进程。

也就是说,我建议您改为修复损坏的 Perl 安装。 perlbrew 使安装 Perl 变得容易,但不安装 Perl 也很简单。如果您选择不使用 perlbrew,请阅读 INSTALL 了解您必须输入的命令,并了解如何指定安装位置。如果您需要线程支持,请不要忘记将 -Dusethreads 传递给 Configure


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!