1
9
通常,任何使用XS(编译后的C代码,动态加载)的Perl模块都只能使用与编译时相同版本的Perl。这有两个原因: 原因之一是,默认情况下,它们被安装到一个包含Perl版本号的目录中,任何其他版本的Perl都不会查看该目录。 原因二是因为PerlAPI可以在主要版本之间更改,所以即使您要将库复制到适当的目录中,它们可能工作,也可能不工作,这取决于它们使用的特性以及Perl的两个版本有多不同。在5.8和5.12之间,几乎所有代码都有可能被破坏,这是有显著差异的。 这根本不适用于 纯perl 但是,模块可以随意复制,很少有例外。只有XS代码才是问题所在。 |
2
5
一些Perl模块编译自己并链接到系统库。如果升级操作系统,这些lib可能不再存在,这将导致这些模块行为不正常或根本不运行。因此,建议重新编译Perl模块。 如果在新系统上从头开始重新安装新版本的Perl,那么应该不会遇到任何问题,因为在安装过程中,将使用正确的头和libs。 |
3
4
它将不是Perl的版本,这是一个问题,而是底层平台。Redhat4和Redhat5与Perl5.8.5和5.8.8有很大的不同。实际上,如果您发现这些版本之间存在差异,可能是一个bug。 rh4和rh5有不同的库集,必须根据这些库重新编译Perl本机扩展。如果将这些已编译的树保存在源存储库中,那么实际上需要2个树。如果您想避免这种情况,您可以“静态编译”,但这会变得非常混乱,并可能严重影响内存占用和脚本的相关加载时间,不推荐(在许多情况下甚至不可能)。 一个更干净的解决方案是安装脚本,它从CPAN下载/编译/安装副本,并保持源代码树中没有这些人工制品。在目标计算机上安装之前,您仍然可以决定是作为目标计算机上安装的一部分,还是作为构建二进制包的一部分。 |
4
-1
请找到下面提供的URL以了解如何为不同的CPAN安装模块。 http://perllinux.blogspot.in/2014/08/multiple-perl-cpan-on-single-machine.html 而且,是的,Perl的不同版本需要在所有模块上安装模块。 |
bsmedley · 为什么cpanm不安装依赖项? 9 年前 |
wytten · 无法安装MongoDB perl 10 年前 |
Zhengyang Liu · 在Net::SSLeay中安装时出错 10 年前 |
WestCoastProjects · 如何安装perl Logger模块 11 年前 |