已经主动保持停滞CPAN包(GnuPG的)我想改善这种安装文件,他们正常退出,如果gpg二进制文件(这GnuPG是一个包装)无法找到。有点寻求其他包的灵感后,我想出了添加这Makefile.PL:

my @paths = grep { -x "$_/gpg" } split /:/, $ENV{PATH}, $ENV{PGP_PATH};

unless ( scalar @paths ) {
    print <<EOD;
I can't find the gpg binary on your system. If it's not installed in your usual PATH, set $ENV{PGP_PATH} to include where it can be found and try installing again.
EOD

    exit(0);
}

WriteMakefile(
    'NAME'        => 'GnuPG',
    'VERSION_FROM' => 'GnuPG.pm',
    'EXE_FILES'    => [ gpgmailtunl ],
    'LICENSE'      => 'GPL',
    'LIBS'         => [ @paths ],
);

这是否看起来理智?

有帮助吗?

解决方案

在一般的概念是好的 - 如果你需要什么样的工作不存在,不创建生成文件。在CPAN测试人员对规则与失败零个状态退出(这惹恼了我很多,不过没关系,我不想跟一个成功状态失败!)

问:你保持在那里PGP被发现在安装时,因此,如果其他人使用Perl模块,没有他们的路径上的位置,该模块仍然可以运行的记录?

有关DBD :: Informix中,我有没有这些模块不能被编译刚性依赖关系;在Makefile.PL是在自己,因为这项权利的主要生产。它还试图处理覆盖超过15年的软件版本;它的寿命变得复杂了。如果先决条件(一些Perl模块;一些非Perl的软件)。不可用,也不会安装

其他提示

如果您正在使用模块::安装或家族的一员,你可以用做

requires_external_bin 'gpg';

请参阅模块::安装::对于细节外部

没有充分的理由来重新发明轮子。

那岂不是更有意义,只是打印一个警告?对于安装本身GPG必要吗?

代码本身我看起来不错。但也许有一个内置的“这”功能。 :)。

有关更准确,你应该看看文件::这或至少使用文件::规格 - >路径()。

文件::这将是一个跨平台解决方案。您将需要可以捆绑成INC /目录或要求它与configure_requires安装。对于EU :: MM它可以用做

    META_MERGE => {
        configure_requires => {
            'File::Which' => 0,

模块::安装也是一个很好的解决方案,但你需要释放分布的新版本模块的每一次新版本::安装被释放,变化是重要的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top