2016-03-30 110 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