5

我将 Debian 开发系统(作为测试)上的所有 perl 模块更新为最新版本。我想看看升级实时服务器上的模块是否安全。它似乎有效,除了我开始从 Imager 收到一个奇怪的错误(与 API 版本号有关,但现在这并不重要)。

我尝试重新安装 Imager 和任何相关的库,但似乎没有解决问题。

进一步看,我发现有问题的开发系统似乎有多个 perl 目录,包括:

/usr/lib/perl (which contains 5.14.2 and subdirs)
/usr/lib/perl5 (which contains a range of perl modules)
/usr/local/lib/perl (which contains another 5.14.2 and a set of modules)
and even /root/perl5 (which contains a small list of modules including i486-linux-gnu-thread-multi-64int)

看起来(尽管我不完全确定我是否正确阅读了此内容),系统上的模块已使用每种可能的方法安装,apt-get、aptitude、cpan、从源代码安装和 cpanminus,并且不同的模块是最终进入不同的 perl 目录(我猜是安装),主要是 /usr/local/lib/perl 或 /usr/lib/perl5。我不知道那里至少有 2 个不同的 perl 安装。

认为/usr/lib/perl 是我想保留的,所以,我尝试将 /usr/local/lib/perl 重命名为 perl.save 然后链接 /usr/local/lib/perl /usr/lib/perl . 然后我重新安装了所有丢失的软件包。
大多数软件包似乎都安装了,但是我收到了这个不祥的消息;


有 /usr/local/lib/perl/5.14.2

想要 /usr/lib/perl/5.14

您的 perl 和您的 Config.pm 似乎对它们运行的​​架构有不同的想法。

Perl 认为:[5.14.2]

配置说:[i486-linux-gnu-thread-multi-64int]

这可能会也可能不会导致问题。如果您在构建此扩展时遇到问题,请检查您的 perl 安装。


之后,该特定模块的安装失败。可能有充分的理由。

我想解决这个问题的原因是我们的开发系统都是虚拟的,而所有其他开发系统都是这个(损坏的)系统的克隆 - 所以这是一个我需要解决的问题,而不需要从头开始重建整个系统(虽然他是一个选项)。

我确实尝试克隆系统,然后清除 perl,但是这让我的系统非常破碎,无法做任何事情。

有关解决此问题的有用方法的任何想法?谢谢

4

3 回答 3

1

有许多使用“local::lib”模块的“perl virtualenv”项目。这使您可以在本地目录中为您的特定应用程序安装东西。如果使用得当,这些将覆盖系统中的任何内容。

这个https://github.com/stoned/pll使用 cpanm 以便您可以安装到您的虚拟环境中。

这可能不是您想要的,但需要考虑。

于 2012-08-13T19:00:07.843 回答
0

根据我上面的评论,cpanm 以 root 身份安装并配置为将模块放入 /root/perl5。这让我意识到我被一个男生错误抓住了——当我 sudo -s 到 root 时,root 所拥有的环境与我以 root 或 su - root 身份登录时的环境不同。因此,已经在各种宫殿中安装了一些东西,其中一些隐藏在另一个环境中(例如,不包括在@INC 中)。由于 ikegami 指出的问题,系统也没有找到所有的库。

于 2012-08-16T05:40:32.417 回答
0

以防万一有人对此仍有疑问,我正在本地安装 5.18(对我来说是第一次),我将 2 个库添加到 PERL5LIB。在安装 Moose 后,我在安装 Moose 时遇到问题,没有问题。

于 2014-03-27T13:12:35.873 回答