【问题标题】:Issue regarding Perl @INC path upgrade at build time构建时有关 Perl @INC 路径升级的问题
【发布时间】: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 目录的形式为versionversion/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 变量,但我想在构建时进行。你觉得这有什么问题吗?

标签: perl rhel


【解决方案1】:

我更喜欢在一个目录中安装多个 perl,而不是升级:

./Configure -des -Dprefix=/usr/local/perls/perl-5.09
./Configure -des -Dprefix=/usr/local/perls/perl-5.10
./Configure -des -Dprefix=/usr/local/perls/perl-5.x

它们都有自己的 bin 和 modules 目录。 然后很容易,您可以为所需的 perl 创建一个符号链接,所有路径都是正确的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-26
    • 2020-07-30
    • 1970-01-01
    • 1970-01-01
    • 2019-10-02
    • 2017-07-30
    相关资源
    最近更新 更多