同步 perlbrew 和 cpan 安装位置
syncing perlbrew and cpan install locations
我正在使用 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 以上(即使我想)所以我不太可能改变这个值。否则它现在工作正常。
两个问题。
您的 CPAN 部分配置覆盖了它应该安装模块的位置。通过清除 makepl_arg
.
删除此覆盖
来自 cpan
:
o conf makepl_arg ""
o conf commit
来自sh
:
echo -e -n 'o conf makepl_arg ""\no conf commit\n' | cpan
您的 PERL5LIB
告诉您的 perl
在不该查找的地方查找模块。通过删除在 ~/.bashrc
.
中设置它的指令来取消设置
您可能还有其他问题,但我们需要知道以下 sh
命令的输出才能确定:
set | grep ^PERL ; echo 'o conf' | cpan | grep 'makepl_\|make_\|mbuild_'
我正在使用 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 以上(即使我想)所以我不太可能改变这个值。否则它现在工作正常。
两个问题。
您的 CPAN 部分配置覆盖了它应该安装模块的位置。通过清除
删除此覆盖makepl_arg
.来自
cpan
:o conf makepl_arg "" o conf commit
来自
sh
:echo -e -n 'o conf makepl_arg ""\no conf commit\n' | cpan
您的
PERL5LIB
告诉您的perl
在不该查找的地方查找模块。通过删除在~/.bashrc
. 中设置它的指令来取消设置
您可能还有其他问题,但我们需要知道以下 sh
命令的输出才能确定:
set | grep ^PERL ; echo 'o conf' | cpan | grep 'makepl_\|make_\|mbuild_'