同步perlbrew和cpan安装位置

时间:2016-01-08 15:57:23

标签: perl cpan perlbrew

我使用perlbrew在我的主目录中运行本地perl,并使用cpan来安装新模块。但是,我似乎配置错​​了。当我使用cpan时,它总是将库安装到〜/ perl目录,但我的perlbrew位于〜/ perl5目录中。这导致了创建适当的PERL5LIB目录的一些问题,而是我应该包括perl或perl5库以及以什么顺序。我似乎一直在遇到鸡蛋和鸡蛋问题,其中包括首先导致加载错误的模块或抱怨使用的错误版本。具体来说,它抱怨5.8.8 perl版本(首先我在决定升级到稍微不那么古老的版本之前安装,仍然是/ bin / perl的版本)与我使用的10.1库冲突。 / p>

我认为这可以通过更新配置文件来修复,但我不确定要改变什么。我看看我的cpan config.pm并且我没有看到任何定义安装方向的东西,事实上我不确定cpan如何知道在本地安装而不是尝试安装到全局cpan目录。

有人能指出我需要更改的相应配置值,以便让cpan更新我的perlbrew库,而不是获得两个独立的库吗?

修改

好吧,我很失明。答案就在我的配置文件〜/ .cpan / CPAN / MyConfig.pm中。我发誓我多次查看文件,甚至搜索perl这个词来搜寻可能指向我的〜/ perl目录的任何行,但不知何故错过了我正在寻找的令人眼花缭乱的明显配置选项...不确定如何。

无论如何,一旦我看到它,我只需要改变指向的地方,这需要一些错误的试验。我更改了这一行:

'makepl_arg' => q[PREFIX=~/perl],

'makepl_arg' => q[PREFIX=~/perl5/perlbrew/perls/perl-5.10.1/],

当然是perl版本I用于perlbrew的位置。这似乎解决了我的问题,如果我不是盲目的话应该很容易。

我确实有一个烦恼,我有这行和我的PERL5LIB变量,在〜/ .bashrc中设置,有效硬编码指向perllib的perl-5.10.1版本,这意味着如果我决定切换到另一个perl版本我需要更新两个引用或再次出现问题。我不知道如何制作cpan或者我的PERL5Lib,知道它应该从它应该使用的perls目录中推断出哪个版本的perl。这对我来说不是一个大问题,我不认为我会被允许升级到5.10.1(即使我想),所以我不太可能#&# 39;我会改变这个值。否则它现在工作正常。

1 个答案:

答案 0 :(得分:1)

两个问题。

  1. 您的CPAN已部分配置,会覆盖应安装模块的位置。清除makepl_arg

    ,删除此覆盖

    来自cpan

    o conf makepl_arg ""
    o conf commit
    

    来自sh

    echo -e -n 'o conf makepl_arg ""\no conf commit\n' | cpan
    
  2. 您的PERL5LIB正在告诉您perl寻找不应该的模块。通过删除在~/.bashrc中设置它的指令取消设置。

  3. 您可能还有其他问题,但我们需要知道以下sh命令的输出才能确定:

    set | grep ^PERL ; echo 'o conf' | cpan | grep 'makepl_\|make_\|mbuild_'