PERL:Test::Simple、Time::HiRes、Test::Harness、Test::Deep 和 Devel-CheckLib 具有循环依赖关系。如何解决?
MakeMaker 是一些问题的根源。其中一项测试失败了。我只需安装即可让 MM 可用于其他软件包。但这些其他包相互依赖。
我收到 @include 错误,因为模块不可用。通常这意味着添加 $PERL5Lib 或 $LD_LIBRARY_PATH 的路径,但模块尚未安装。
测试返回如下消息:
t/旧版/过载.t ................................. 可疑,测试返回 2(wstat 512,0x200) 没有运行子测试 t/Legacy/overload_threads.t ................................ 可疑,测试返回 2(wstat 512,0x200) 没有运行子测试 t/Legacy/plan.t ................................ 可疑,测试返回 2(wstat 512,0x200) 没有运行子测试
全部失败。这可能是由于 @include 错误——根据我的经验,这通常是测试失败的原因。
我应该如何解决这些依赖关系?
Test::Simple、Test::Harness 和 ExtUtils::MakeMaker 都附带 Perl(称为“核心模块”)。这些仅依赖于其他核心模块。由于核心模块随 Perl 一起提供,因此核心模块可以安全地依赖其他核心模块,而不会导致循环依赖。如果您的 Perl 缺少这些模块,那么您的 Perl 就损坏了。要解决此问题,您需要在正常的 CPAN 安装过程之外安装这些核心模块。
例如,Test::Simple 的先决条件都是核心模块,并且设计为一直安装到 Perl 5.6.2。您应该能够安装 Test::Simple。但是,它附带 5.26.3,所以您不必这样做。
造成这种情况的原因有几个。
@INC
(Perl 查找模块的目录列表)已更改。查看错误中的
@INC
,很可能是#2。
最简单的事情是不要让供应商安装 Perl 。造成这种情况的原因有很多种,您遇到过其中一个。相反,安装一个新的 Perl 副本,您可以完全控制它并将其用于所有应用程序开发。 perlbrew 让这变得简单。