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

是否可以在分发测试之前安装perl先决条件,以及如何安装?,perl,testing,module,makefile,prerequisites,Perl,Testing,Module,Makefile,Prerequisites,我试着从基地开始建造。每一个测试都在我的机器上通过,但是当我把它上传到CPAN以从cpantests.org获得更多的通用测试时,我不明白为什么。我可以在测试报告中看到,我的一些先决条件在测试之前没有安装,但我希望它能够安装 我试图将这些依赖项列在Makefile.PLPREREQ\u PM散列和中,但没有改变很多结果 然后,当我从本地计算机中删除依赖项并尝试使用Cpanm安装模块时,它首先下载依赖项,测试通过,安装成功 这是我第一次尝试一个模块,所以我想我错过了一些东西,也许我太习惯了Cpan

我试着从基地开始建造。每一个测试都在我的机器上通过,但是当我把它上传到CPAN以从cpantests.org获得更多的通用测试时,我不明白为什么。我可以在测试报告中看到,我的一些先决条件在测试之前没有安装,但我希望它能够安装

我试图将这些依赖项列在
Makefile.PL
PREREQ\u PM
散列和中,但没有改变很多结果

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


这是我第一次尝试一个模块,所以我想我错过了一些东西,也许我太习惯了
Cpanm
magic。谢谢你的帮助。

问题不一样。Andreas的smoker很可能成功地构建了依赖项
App::Ack
(在失败报告中看起来好像不存在)。但至少有两个问题:

  • 当测试一个发行版时,它的依赖项可能已经安装,也可能尚未安装。但是,可以保证所有依赖模块都通过
    PERL5LIB
    环境变量提供,因此
    make test
    通常有效(更具体地说,如果CPAN外壳中使用了
    install Module
    命令,则会立即安装所有依赖项。如果使用
    test Module
    命令,则只生成依赖项,而不安装依赖项。CPAN用户可以稍后使用
    install\u tested
    进行安装。)。因此可能是
    App::Ack
    未安装在此处,而只是构建。特别是这意味着
    Ack
    脚本未安装在最终位置
  • 即使安装了它,许多并行安装了多个perl的烟雾测试仪或用户也会使用此perl的非标准目录。因此,
    ack
    不会安装在
    /usr/bin
    /usr/local/bin
    中,而是安装在属于此perl的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.PL
build
中触发一种
build installdeps
nd
Makefile.PL
有点矛盾…:-)嘿@slaven rezic,谢谢你的详细回答,我很感激。我会重新考虑我的测试计划。谢谢你花时间阅读烟雾报告,也许还有我一些难看的代码。