0

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

我认为这很可能可以通过更新配置文件来解决,但我不确定要更改什么。我查看了我的 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/],

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

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

4

1 回答 1

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

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

set | grep ^PERL ; echo 'o conf' | cpan | grep 'makepl_\|make_\|mbuild_'
于 2016-01-08T17:02:24.517 回答