警告

警告

我最近安装了 CentOS 6.3 (i386)。

它有两个 perl 二进制文件

/usr/bin/perl (v5.10.1)
/usr/local/appx/perl/bin/perl (v5.8.8)

我的问题:是否可以使用该应用程序中的系统范围 perl 和 perl 模块来安装一些其他功能到该应用程序?

就像下面这样:

./configue -prefix=/usrl/local/app_xyz -perl_lib_path=/usr/local/appx/perl/lib/5.8.8/

我已经尝试了上面的方法,但出现以下错误:

RRD Perl Module -----------------**Not Found**

但该 perl 模块RRDs.pm在该目录下可用/usr/local/appx/lib/5.8.8

此外,该configure脚本不必ARG 映射我们的 appx perl 二进制路径 ( /usr/local/appx/perl/bin/perl),它会自动选择系统范围的 perl 作为默认值。

答案1

Perl 5 次要版本是向后兼容的,因此 5.8.8 模块应该与 5.10.1 perl 一起使用(但有一个例外,请参阅下面的警告)。包含路径 ( @INC) 在构建 perl 时配置,但@INC可以由单独的程序修改,并且全局环境变量 $PERL5LIB 的内容被添加到前面。

export PERL5LIB=/usr/local/appx/lib/5.8.8

然而,这种方法有一个问题。 因为 $PERL5LIB 是前置的,这样@INC做会导致加载各种标准模块时优先使用 5.8.8 目录。这是不可取的。

因此,一种不太整洁但最终更好的想法是仅将符号链接/usr/local/appx/lib/5.8.8/RRD.pm(和/或 RRD 目录,如果有)到/usr/local/lib/perl5或其他一些标准@INC目录。您可以看到那些:

perl -e 'print "$_\n" foreach @INC'

请注意,可能同时存在顶级 RRD.pm 和并行 RRD 目录;如果是这样,你想对两者进行符号链接。

警告

某些 Perl 模块包含从 C 编译的部分,这些部分可能会损坏。如果 RRD.pm 不使用 C,那么您不必担心。如果是这样,您应该复制它,而不是对其进行符号链接并重建;为此,您需要源代码,该源代码可能存在,也可能不存在:(

相关内容