我的 testing environment包括一些较旧的平台。我正在尝试在较旧的 Debian 6 平台上测试 OpenSSL,而 OpenSSL 测试脚本在 Perl 5.10 上遇到问题。所以我试图在运行 OpenSSL 的测试套件时修复“需要 Test::More version 0.96...”。
我下载了 Perl 5.22.1,从源代码构建它,并使用 ./configure -des -Dprefix=/opt/perl
安装在 /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...”(使用和不使用 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 是这样说的:
When using the newer perl, you can add these paths again in the PERL5LIB environment variable or with perl's -I runtime option.
我不太明白为什么默认情况下新的 PM 文件不包含在新的 Perl 中。而且我不明白为什么通过 PERL5LIB
添加它们不能解决问题。所以我猜这意味着 PERL5LIB
不是问题的一部分。
最佳答案
调试这些从来都不是一件有趣的事......
你的问题是,当你make test
时,它最终会执行/usr/bin/perl .././test/run_tests.pl
,这将引入旧的 Perl 而不是您创建的新 Perl。
您需要弄清楚它从哪里获得/usr/bin/perl,或者将您的新 Perl 放在那里。一个自然的猜测是,您开始使用旧的 Perl 安装,安装一个新的,然后又回到旧的,并且它具有原始配置。
关于testing - 用于测试的备用 Perl 环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36379136/