我将 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,但是这给我留下了一个非常 splinter 的系统,无法做任何事情。
有关解决此问题的有用方法的任何想法?
谢谢
最佳答案
有许多使用“local::lib”模块的“perl virtualenv”项目。这使您可以在本地目录中为您的特定应用程序安装东西。如果使用得当,这些将覆盖系统中的任何内容。
这个,https://github.com/stoned/pll , 使用 cpanm 以便您可以安装到您的虚拟环境中。
这可能不是您想要的,但需要考虑。
关于Debian : confliciting perl installations on a system 上的 Perl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10506314/