2012-07-06 171 views
5

我跟着这个helpful tutorial来为我的用户安装Perl。我很遗憾链接到外部网站,但我认为阅读这是了解如何回答问题的唯一方法。无root安装CPAN模块

Anywho,我喂默认为CPAN配置 - 通过教程中创建的.cpanCPAN目录 - 但出于某种原因,CPAN还是想挖成/usr/lib/ - 当我尝试 - 它只是不能得到安装一个模块。这是在安装DBD::CSV时。

以下是错误消息:

All tests successful (7 subtests UNEXPECTEDLY SUCCEEDED), 3 tests skipped. 
Files=23, Tests=706, 3 wallclock secs (2.28 cusr + 0.54 csys = 2.82 CPU) 
/usr/bin/make test -- OK 
Running make install 
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
ERROR: Can't create '/perl5lib/lib/Bundle/DBD' 
mkdir /perl5lib: Permission denied at /usr/lib/perl5/5.8.8/ExtUtils/Install.pm line 457 
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
at -e line 1 
make: *** [pure_site_install] Error 13 
/usr/bin/make install -- NOT OK 

这似乎是去错了perl5lib

回答

5

呀,当地:: LIB帮助。我建议使用cpanm而不是cpan。我认为它默认安装〜/ perl5/lib/perl5。这是super useful tutorial

+0

您好 - 感谢您的回复。我试着安装cpanm,它需要访问我受限制的文件夹。我将继续进行local :: lib的引导安装,我将继续。但我想知道,有没有办法改变环境。变量与正常的cpan,使它不会在usr/lib中查找? – PinkElephantsOnParade 2012-07-06 18:17:44

+1

是的,环境变量** PERL5LIB **是你想要的。 – 2012-07-06 18:20:41

0

你是否配置了cpan中的myconfig.pm,而不是让它自动填充所有的默认值?在cpan配置期间,您需要为Makefile.PL部分添加PREFIX =“”,以便将模块安装到您拥有写入权限的新位置。由于它已经自动为你配置,进入.cpan/CPAN /,找一个MyConfig.pm并编辑它。找到“makepl_arg”行并将[]中的值更改为包含PREFIX =“”。然后尝试perl -MCPAN -e shell并安装一个模块。

5

local::lib会导致安装程序使用INSTALL_BASE,我认为这会被破坏。我使用perlbrew来安装Perl的本地副本。

  • 您不会因为系统的Perl安装而惹祸,所以您不会破坏您的操作环境。
  • 允许您安装多个版本和版本的Perl,不会麻烦。
  • INSTALL_BASE不需要使用。
  • 无需特殊权限。