当local :: lib存在时,如何在站点范围内安装CPAN模块?

时间:2010-10-22 14:54:06

标签: perl cpan locallib padre

我最近建立了一个新系统,并希望安装Padre来检查它。 Padre安装说明专门说安装local :: lib,所以我这样做了(虽然我之前从未需要它)。然后我继续安装其他几个模块,从我的普通用户帐户sudo运行CPAN来处理安装所需的根部分。

然后,时间来测试这些模块需要支持的其中一个网络应用程序,而且看哪,apache找不到它们。他们从命令行加载得很好,快速查看~/perl5证实了我怀疑local :: lib劫持了我的CPAN会话并在那里安装了这些模块,而不是在站点范围内安装,尽管我的CPAN配置包括< / p>

makepl_arg         [INSTALLDIRS=site]
mbuildpl_arg       [--installdirs site]

我需要对CPAN配置做什么,以便即使安装了local :: lib,也可以在站点范围内安装模块?或者Padre会在没有它的情况下工作,我可以完全删除local :: lib吗?

(我希望~/perl5下安装任何模块,除非Padre坚持要求他们在那里。我正在开发的代码有自己的项目特定目录地点和其他一切都应该在整个地点。我不需要一个私人的所有位置。)

3 个答案:

答案 0 :(得分:8)

知道了。根据{{​​3}}上的说明,我设置了export PERL_MM_OPT='INSTALL_BASE=~me/perl',它覆盖了我的CPAN配置中的设置。快速export PERL_MM_OPT=让我回到正确的安装位置。

一方面,这就是我盲目遵循指示所得到的。另一方面,我希望o conf显示正在使用的实际配置设置,而不是保存的CPAN配置中的设置(即使环境变量覆盖它们)。

答案 1 :(得分:2)

  

快速导出PERL_MM_OPT =让我回到正确的安装位置。

当我尝试在全球范围内安装Starman时,这对我没有帮助。我不得不编辑/root/.bashrc来评论(或删除)下一行:

  1. export PERL_LOCAL_LIB_ROOT =“$ PERL_LOCAL_LIB_ROOT:/ root / perl5”;
  2. export PERL_MB_OPT =“ - install_base / root / perl5”;
  3. export PERL_MM_OPT =“INSTALL_BASE = / root / perl5”;
  4. export PERL5LIB =“/ root / perl5 / lib / perl5:$ PERL5LIB”;
  5. export PATH =“/ root / perl5 / bin:$ PATH”;

答案 2 :(得分:0)

基于this comment,似乎local::lib安装了自己的CPAN.pm版本。如果是这种情况,您可能需要找到原始CPAN.pm并确保在运行CPAN shell时加载了该CPAN.pm。类似的东西:

perl -I /usr/lib/perl5 -MCPAN -e shell

可能会这样做。您可能还会发现perl -V对于查看Perl编译器为其模块使用的包含路径有用。