2012-02-14 75 views
2

我在Linux机器上有一个日期系统perl 5.8.8,并从ActiveState安装了5.12.4。 perl的cpan_home~root/.cpan。我正要改变新的perl的cpan_home,但后来我意识到我没有知道我是否真的必须这样做,或者它是否会导致模块的多个副本被下载到不同的目录,实际上他们可能会共享。在一台机器上安装各种Perl安装是否安全共享cpan_home?

所以他们可以吗?它安全吗?关于编译?或者我必须去单独的cpan_home目录?

请注意,我首先尝试了perlbrew,但是因为Can't load '../lib/auto/IO/IO.so' for module IO: ../lib/auto/IO/IO.so: wrong ELF class: ELFCLASS64 at ../lib/XSLoader.pm line 70.而失败了所以,我没有去追究这个问题,而是去找了易于安装的ActivePerl。

回答

5

我在我的系统上有十几个Perl版本,他们都使用~/.cpan。我从来没有遇到过问题,但我不能说它是安全的。这取决于其中的设置。具体而言,

  • build_dir_reuse应该(可能)为零。
  • makepl_arg不应该包含INSTALL_BASE
  • mbuildpl_arg不应该包含--install_base

“安装基础”会覆盖安装模块的位置。如果您开始在一个位置安装所有版本的模块,由于版本,发行版和Perl版本之间不兼容,您将遇到问题。

如果你想分享.cpan并有一个本地安装目录,你可能会使用PREFIX=/home/username/perl5 LIB=/home/username/perl5/lib而不是INSTALL_BASE=/home/username/perl5。它使用更智能的目录结构。

顺便说一下,local :: lib会导致使用“安装基础”,所以如果你使用local :: lib和多个安装的Perl,你会遇到问题。

+0

更新为清晰起见。 – ikegami 2012-02-14 22:36:06

+0

谢谢,ikegami。 'build_dir_reuse'听起来好像有可能混淆事物。不过,我不确定我是否正在关注'INSTALL_BASE'。这些设置驻留在'CPAN/Config.pm'中,甚至是单独的'.cpan',但错误的设置相同,你可以用一个模块来打开perl模块。另一方面,一个共享的'.cpan',每个perl都有自己合理的'INSTALL_BASE'听起来不错,不是吗?但是你有更多的代表,所以你可能会更清楚...... :) – Lumi 2012-02-15 18:01:49

+0

他们在'〜/ .cpan/CPAN/MyConfig.pm'中。 – ikegami 2012-02-15 19:24:42