2016-03-30 99 views
1

我的testing environment包含一些较老的平台。我试图在一个较旧的Debian 6平台上测试OpenSSL,并且OpenSSL测试脚本在Perl 5.10中遇到了问题。所以我试图在运行OpenSSL的测试套件时修复“Test :: More version 0.96 required ...”用于测试的替代Perl环境

我下载的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 "[email protected]" 

然而,当我运行OpenSSL测试脚本时,我仍然遇到“测试::更多版本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有这样一段话:

当使用较新的perl的,你可以在 PERL5LIB环境变量或Perl的-I选项运行时再次添加这些路径。

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

回答

2

调试这些绝不是什么好玩...

你的问题是,当你make test它最终确实/usr/bin/perl .././test/run_tests.pl这是会老的Perl拉,而不是您创建的新的Perl。

你需要弄清楚它从哪里得到/ usr/bin/perl,或者把你的新Perl放在那里。一个自然的猜测是,你开始用你的旧Perl安装,安装一个新的,回到你的旧的,并且它有原始配置。

+0

是的,看起来你是对的。我用'/ usr/bin/env perl'(大约120个)清除了大部分地方的硬编码,但是那个该死的makefile也有硬编码。我需要'make测试PERL =/usr/local/bin/perl'。 – jww