安装 XML::DOM::XPath 时出错

Not*_*tuh 6 xml linux xpath activestate bioperl

我编写了一个使用 Bio::Seq 和 Bio::SeqIO 包的小型 Perl 脚本。当我尝试在基于 linux 的服务器上运行脚本时。我收到了很多错误,基本上告诉我尚未安装 BioPerl。

我在本地安装了 ActiveState Perl 5.26,并且已经满足了安装 Bio::Perl 的大部分先决条件。只有 XML::DOM::XPath 仍然存在问题。尝试安装软件包后,我收到以下错误:

Test Summary Report
-------------------
t/test_non_ascii.t                  (Wstat: 512 Tests: 0 Failed: 0)
  Non-zero exit status: 2
  Parse errors: Bad plan.  You planned 10 tests but ran 0.
Files=35, Tests=183,  4 wallclock secs ( 0.12 usr  0.04 sys +  3.46 cusr  0.52 csys =  4.14 CPU)
Result: FAIL
Failed 1/35 test programs. 0/183 subtests failed.
make: *** [test_dynamic] Error 255
  MIROD/XML-DOM-XPath-0.14.tar.gz
  /usr/bin/make test -- NOT OK
//hint// to see the cpan-testers results for installing this module, try:
  reports MIROD/XML-DOM-XPath-0.14.tar.gz
Failed during this command:
 MIROD/XML-DOM-XPath-0.14.tar.gz              : make_test NO


nolock_cpan> reports MIROD/XML-DOM-XPath-0.14.tar.gz
Distribution: M/MI/MIROD/XML-DOM-XPath-0.14.tar.gz
Fetching 'http://www.cpantesters.org/show/XML-DOM-XPath.yaml'...DONE

Catching error: "CPAN::Exception::yaml_process_error=HASH(0x4ca5c28)" at /data/calvin/ActivePerl-5.26/lib/CPAN.pm line 392.
        CPAN::shell() called at -e line 1
Run Code Online (Sandbox Code Playgroud)

此错误似乎与 t/test_non_ascii.t 相关,因为尝试运行命令 install "XML::DOM::XPath" 的较早输出给出了以下错误:

t/test_non_ascii.t .................... The encoding pragma is no longer supported. Check cperl at t/test_non_ascii.t line 10.
BEGIN failed--compilation aborted at t/test_non_ascii.t line 10.
  Looks like your test exited with 2 before it could output anything.
t/test_non_ascii.t .................... Dubious, test returned 2 (wstat 512, 0x200)
Failed 10/10 subtests
Run Code Online (Sandbox Code Playgroud)

有谁知道错误的确切原因是什么以及我如何解决它?

aug*_*ust 5

不知道你是否最终搞清楚了这一点,但问题是与第10行的编码t/test_non_ascii.t,它使用encoding.pm它的Perl 5.25.3之后不再支持:

use encoding 'utf8';
Run Code Online (Sandbox Code Playgroud)

在 CPAN 上的错误报告中可以找到的解决方案是将行更改为

use utf8;
Run Code Online (Sandbox Code Playgroud)

结果git diff t/test_nonascii.t t/test_non_ascii.t.new

--- t/test_non_ascii.t
+++ t/test_non_ascii.t.new
@@ -7,7 +7,7 @@ use strict;
 use Test::More tests => 10;
 use XML::DOM::XPath;

-use encoding 'utf8';
+use utf8;

 my $display_warning=0;
Run Code Online (Sandbox Code Playgroud)