【问题标题】:Alternate Perl environment for testing用于测试的备用 Perl 环境
【发布时间】:2016-03-30 21:17:59
【问题描述】:

我的testing environment 包含一些较旧的平台。我正在尝试在较旧的 Debian 6 平台上测试 OpenSSL,而 OpenSSL 测试脚本在使用 Perl 5.10 时遇到了问题。所以我试图在运行 OpenSSL 的测试套件时修复 "Test::More version 0.96..."

我下载了 Perl 5.22.1,从源代码构建它,并将其安装在 /opt/perl./configure -des -Dprefix=/opt/perl

$ ls /opt/perl/
bin  lib

$ ls -Al /opt/perl/bin/ | grep perl
-rwxr-xr-x 2 root root 1879707 Mar 30 12:01 perl
-rwxr-xr-x 2 root root 1879707 Mar 30 12:01 perl5.22.1
-rwxr-xr-x 2 root root   45365 Mar 30 12:01 perlbug
...

$ ls /opt/perl/lib
5.22.1  site_perl

我创建了一个脚本来将调用转发到新的 Perl:

$ which perl
/usr/local/bin/perl

$ cat /usr/local/bin/perl
#!/usr/bin/env bash

LD_LIBRARY_PATH="/opt/perl/lib:$LD_LIBRARY_PATH"; PERL5LIB="/opt/perl/lib/5.22.1:$PERL5LIB"; \
/opt/perl/bin/perl5.22.1 "$@"

但是,当我运行 OpenSSL 测试脚本时,我继续遇到 "Test::More version 0.96 required..."(有和没有PERL5LIB):

$ make test
( cd test; \
      SRCTOP=../. \
      BLDTOP=../. \
      EXE_EXT= \
      OPENSSL_ENGINES=.././engines \
        /usr/bin/perl .././test/run_tests.pl  )
../test/recipes/01-test_abort.t ........... Test::More version 0.96 required--this is only version 0.92 
...

我显然在这台测试机器上使用新的 Perl 做错了。

Perl 安装有什么问题?


Test::More 可用:

$ find /opt/perl -name '*More*'
/opt/perl/lib/5.22.1/Test/More.pm

而且好像是符合要求的版本:

$ cat /opt/perl/lib/5.22.1/Test/More.pm | grep VERSION
our $VERSION = '1.001014';
$VERSION = eval $VERSION;    ## no critic (BuiltinFunctions::ProhibitStringyEval)

相关,我对 Perl 没有经验,所以我有很多空白。我认为它与PERL5LIB 有关,因为Test::More 似乎与它有关。 Perl 的 INSTALL 有这样的说法:

使用较新的 perl 时,您可以在 PERL5LIB 环境变量或使用 perl 的 -I 运行时选项。

我不太明白为什么新的 PM 文件默认不包含在新的 Perl 中。而且我不明白为什么通过PERL5LIB 添加它们并不能解决问题。所以我猜这意味着PERL5LIB 不是问题的一部分。

【问题讨论】:

    标签: testing perl installation


    【解决方案1】:

    调试这些从来都不是一件有趣的事......

    您的问题是,当您 make test 时,它最终会执行 /usr/bin/perl .././test/run_tests.pl,这将引入旧的 Perl 而不是您创建的新 Perl。

    您需要弄清楚 /usr/bin/perl 从哪里获得,或者将新的 Perl 放在那里。很自然的猜测是,您开始使用旧的 Perl 进行安装,安装了新的 Perl,然后又回到旧的 Perl,并且它具有原始配置。

    【讨论】:

    • 是的,看起来你是对的。我用/usr/bin/env perl(大约120个)清除了大多数地方的硬编码,但是那个该死的makefile也有硬编码。我需要一个make test PERL=/usr/local/bin/perl
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-15
    • 1970-01-01
    • 1970-01-01
    • 2020-10-17
    • 1970-01-01
    • 2013-03-27
    • 2023-02-02
    相关资源
    最近更新 更多