是否可以在分发测试之前安装perl先决条件,以及如何安装?
我试着从基地开始建造。每一个测试都在我的机器上通过,但是当我把它上传到CPAN以从cpantests.org获得更多的通用测试时,我不明白为什么。我可以在测试报告中看到,我的一些先决条件在测试之前没有安装,但我希望它能够安装 我试图将这些依赖项列在是否可以在分发测试之前安装perl先决条件,以及如何安装?,perl,testing,module,makefile,prerequisites,Perl,Testing,Module,Makefile,Prerequisites,我试着从基地开始建造。每一个测试都在我的机器上通过,但是当我把它上传到CPAN以从cpantests.org获得更多的通用测试时,我不明白为什么。我可以在测试报告中看到,我的一些先决条件在测试之前没有安装,但我希望它能够安装 我试图将这些依赖项列在Makefile.PLPREREQ\u PM散列和中,但没有改变很多结果 然后,当我从本地计算机中删除依赖项并尝试使用Cpanm安装模块时,它首先下载依赖项,测试通过,安装成功 这是我第一次尝试一个模块,所以我想我错过了一些东西,也许我太习惯了Cpan
Makefile.PL
PREREQ\u PM
散列和中,但没有改变很多结果
然后,当我从本地计算机中删除依赖项并尝试使用Cpanm
安装模块时,它首先下载依赖项,测试通过,安装成功
这是我第一次尝试一个模块,所以我想我错过了一些东西,也许我太习惯了
Cpanm
magic。谢谢你的帮助。问题不一样。Andreas的smoker很可能成功地构建了依赖项App::Ack
(在失败报告中看起来好像不存在)。但至少有两个问题:
- 当测试一个发行版时,它的依赖项可能已经安装,也可能尚未安装。但是,可以保证所有依赖模块都通过
环境变量提供,因此PERL5LIB
通常有效(更具体地说,如果CPAN外壳中使用了make test
命令,则会立即安装所有依赖项。如果使用install Module
命令,则只生成依赖项,而不安装依赖项。CPAN用户可以稍后使用test Module
进行安装。)。因此可能是install\u tested
未安装在此处,而只是构建。特别是这意味着App::Ack
脚本未安装在最终位置Ack
- 即使安装了它,许多并行安装了多个perl的烟雾测试仪或用户也会使用此perl的非标准目录。因此,
不会安装在ack
或/usr/bin
中,而是安装在属于此perl的bin目录中。此目录可能在用户的/usr/local/bin
P目录中,也可能不在用户的
。因此您不能假设P目录中ATH
在这里工作。这里的一个解决方法是将可以运行(“ack”)
临时添加到$Config{scriptdir}
。如果可能,另一种解决方案是使用应用程序模块而不是脚本。不幸的是,$ENV{PATH}
只能作为脚本调用ack
App::Ack
(它出现在requires和build_requires下的前提条件部分,您还可以在“HAVE”列中看到安装了哪个App::Ack
版本)。您还可以看到用户的路径(在ENVIRONMENT部分)。您可能会猜到这个perl的scriptdir,它通常是安装perl二进制文件的同一个目录,当前perl的路径在$^X
中可见(在“perl特殊变量”下)
如果你想重现这个行为,那么你需要从你的机器上卸载ack
,使用/configure.gnu--prefix=/path/to/custom/perl-5.X.Y
,构建一个自定义perl,并使用这个perl进行测试。我已经找到了,它可能是我搜索的:从Makefile.PLbuild
中触发一种build installdeps
ndMakefile.PL
有点矛盾…:-)嘿@slaven rezic,谢谢你的详细回答,我很感激。我会重新考虑我的测试计划。谢谢你花时间阅读烟雾报告,也许还有我一些难看的代码。