gpt4 book ai didi

perl - 是否可以在分发测试之前安装 perl 先决条件?如何安装?

转载 作者:行者123 更新时间:2023-11-28 20:08:52 27 4
gpt4 key购买 nike

我尝试构建 a Perl distribution for a home-made module , 来自 Module::Starter根据。每个测试都在我的机器上通过,但当我将其上传到 CPAN 以从 cpantesters.org 获得更多通用测试时,some test failed on other architectures or OS ,但我不明白为什么。我可以在测试报告中看到我的一些先决条件在测试前没有安装,但我希望安装。

我试图将这些依赖项列到 Makefile.PL PREREQ_PM 哈希和 then in the TEST_REQUIRES hash 中, 但它并没有改变很多结果。

然后,当我从我的本地机器上删除依赖项并尝试使用 Cpanm 安装我的模块时,它首先下载依赖项,测试通过并且安装成功。

这是我第一次尝试一个模块,所以我想我遗漏了一些东西,也许我太习惯了 Cpanm 魔法。感谢您的帮助。

最佳答案

问题有所不同。 Andreas 的吸烟者很可能成功地构建了依赖项 App::Ack(在失败报告中看起来像是不存在)。但是这里至少有两个问题:

  • 当一个发行版被测试时,它的依赖项可能已经安装也可能还没有安装。但是,通过 PERL5LIB 环境变量可以保证所有依赖模块都可用,因此 make test 通常可以正常工作(更具体地说,如果 install Module 命令在 CPAN shell 中使用,然后立即安装所有依赖项。如果使用 test Module 命令,则仅构建依赖项,但不安装依赖项。CPAN 用户可以进行安装稍后使用 install_tested)。所以可能 App::Ack 没有安装在这里,只是构建。特别是这意味着 ack 脚本没有安装在最终位置。
  • 即使安装了它,许多冒烟测试者或同时安装了多个 perl 的用户也会为这个 perl 使用非标准目录。所以ack不会安装在/usr/bin/usr/local/bin,而是安装在这个perl的bin目录下.此目录可能根本不在用户的 PATH 中。所以你不能假设 can_run("ack") 在这里工作。这里的解决方法是将 $Config{scriptdir} 临时添加到 $ENV{PATH}。如果可能的话,另一种解决方案是使用 App 模块而不是脚本。不幸的是,它看起来像 ack 只能作为脚本调用。

如果你看一个 sample fail report ,然后你可以看到 App::Ack 已经安装(它出现在 requires 和 build_requires 下的 PREREQUISITES 部分,你还可以看到哪个 App::Ack 版本是安装在“HAVE”列中)。您还可以看到用户的 PATH(在 ENVIRONMENT 部分)。你可能会猜到这个 perl 的 scriptdir,它通常是安装 perl 二进制文件本身的目录,并且当前 perl 的路径在 $^X 中可见(在“Perl special variables”下).

如果你想重现这个行为,那么你需要从你的机器上卸载 ack,使用 ./configure.gnu --prefix=/path/to/构建一个自定义的 perl custom/perl-5.X.Y,并使用此 perl 进行测试。

关于perl - 是否可以在分发测试之前安装 perl 先决条件?如何安装?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18855635/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com