Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Testing 用于测试的备用Perl环境_Testing_Perl_Installation - Fatal编程技术网

Testing 用于测试的备用Perl环境

Testing 用于测试的备用Perl环境,testing,perl,installation,Testing,Perl,Installation,My包括一些较旧的平台。我试图在旧的Debian 6平台上测试OpenSSL,而OpenSSL测试脚本在Perl 5.10中遇到了问题。因此,我试图在运行OpenSSL的测试套件时修复一个“测试::需要更多版本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

My包括一些较旧的平台。我试图在旧的Debian 6平台上测试OpenSSL,而OpenSSL测试脚本在Perl 5.10中遇到了问题。因此,我试图在运行OpenSSL的测试套件时修复一个“测试::需要更多版本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 required…”(无论是否使用
PERL5LIB
):

很明显,我在这台测试机上使用新的Perl时出了问题

Perl安装有什么问题


测试::更多
可用:

$ 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的安装说明如下:

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


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

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

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


您需要找出/usr/bin/perl的来源,或者将新的perl放在那里。一个自然的猜测是,您开始使用旧的Perl进行安装,安装了一个新的Perl,然后返回到旧的Perl,并且它具有原始配置。

是的,看起来您是对的。我用
/usr/bin/env perl
清除了大多数地方的硬编码(大约120个),但那个该死的makefile也有硬编码。我需要一个
maketestperl=/usr/local/bin/PERL
$ cat /opt/perl/lib/5.22.1/Test/More.pm | grep VERSION
our $VERSION = '1.001014';
$VERSION = eval $VERSION;    ## no critic (BuiltinFunctions::ProhibitStringyEval)