【发布时间】:2015-07-23 03:36:26
【问题描述】:
我正在尝试从 Perl 5.8.8 迁移到 Perl 5.10.1。 (基本上 RHEL 5 到 RHEL 6.6 ) 根据 perl 提供的安装文档,在配置 perl 时,我们可以使用“-Dotherlibdirs”在 INC 路径变量中添加额外的目录。 在构建 Perl 5.10.1 时,我使用此选项来包含 Perl 5.8.8 中使用的目录。
例如
Actual Perl 5.10.1 INC list:
/usr/local/lib64/perl5
/usr/local/share/perl5
/usr/lib64/perl5/vendor_perl
/usr/share/perl5/vendor_perl
/usr/lib64/perl5
/usr/share/perl5
.
Expected Perl 5.10.1 INC list:
/usr/local/lib64/perl5
/usr/local/share/perl5
/usr/lib64/perl5/vendor_perl
/usr/share/perl5/vendor_perl
/usr/lib64/perl5
/usr/share/perl5
**/usr/lib/perl5/site_perl/5.8.8**
.
所以配置选项会是
-Dotherlibdirs="/usr/lib/perl5/site_perl/5.8.8".
在配置中有此选项,构建成功完成,但在安装 RPM(在构建后创建)并检查“perl -V”的输出后,添加的路径在 INC 变量中不可见,但“-Dotherlibdirs="/usr /lib/perl5/site_perl/5.8.8"" 在输出的配置部分可见。
如果有人可以在这里帮助我!
【问题讨论】:
-
不要那样做。特定于版本的东西是针对特定于版本的东西。
-
这是否意味着旧版本的目录在新版本中不支持?
-
Perl 在两组目录中安装模块,arch 目录和 non-arch 目录。 arch 目录包含特定于构建和版本的安装。分享这些是不安全的。 (arch 目录的形式为
version或version/archname,例如5.20.1/x86_64-linux-thread-multi。)虽然可以共享非arch 目录,但这也不是一个好方法,因为该目录中的模块可能安装了依赖项拱目录。所以虽然我不知道你的问题是什么,但你正在做一些你不应该做的事情。 -
等等,你是不是想改变系统 Perl?不要那样做!使用
-Dprefix在新目录中安装新的 Perl。 -
@ikegami:我了解拱形目录和非拱形目录的概念。我的意图是在 perl 5.10.1 中使用自定义的(我自己编写的)perl 模块,而无需更改目录。在当前安装的 perl 5.8.8 中,我的模块安装在“/usr/lib/perl5/site_perl/5.8.8”中,在将 Perl 升级到 5.10.1 后,新的 INC 变量不包含此路径。所以这就是我发帖的原因。注意:还有其他选项可用于在运行时更新 INC 变量,但我想在构建时进行。你觉得这有什么问题吗?