perl 模块循环依赖

问题描述 投票:0回答:1

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 错误——根据我的经验,这通常是测试失败的原因。

我应该如何解决这些依赖关系?

perl installation module circular-dependency
1个回答
0
投票

Test::Simple、Test::Harness 和 ExtUtils::MakeMaker 都附带 Perl(称为“核心模块”)。这些仅依赖于其他核心模块。由于核心模块随 Perl 一起提供,因此核心模块可以安全地依赖其他核心模块,而不会导致循环依赖。如果您的 Perl 缺少这些模块,那么您的 Perl 就损坏了。要解决此问题,您需要在正常的 CPAN 安装过程之外安装这些核心模块。

例如,Test::Simple 的先决条件都是核心模块,并且设计为一直安装到 Perl 5.6.2。您应该能够安装 Test::Simple。但是,它附带 5.26.3,所以您不必这样做。

造成这种情况的原因有几个。

  1. 它们被简单地删除了。检查你的 perl 包的完整性。
  2. 您的操作系统供应商(我猜测是从 RHEL 8 派生的)将 Perl 发行版分成两个包:一个包分发 Perl 二进制文件和绝对最少的模块,另一个包包含所有核心模块。找到第二个包并安装它。
  3. 您的
    @INC
    (Perl 查找模块的目录列表)已更改。

查看错误中的

@INC
,很可能是#2。

最简单的事情是不要让供应商安装 Perl 。造成这种情况的原因有很多种,您遇到过其中一个。相反,安装一个新的 Perl 副本,您可以完全控制它并将其用于所有应用程序开发。 perlbrew 让这变得简单。

© www.soinside.com 2019 - 2024. All rights reserved.