【问题标题】:CPAN module prereqsCPAN 模块先决条件
【发布时间】:2015-06-11 03:34:34
【问题描述】:

我计划很快将一个模块上传到 CPAN。这是我贡献的第一个模块。我已经将模块带到了我认为的“测试版”阶段。我正在使用 ExtUtils::MakeMaker 通过 Makefile.PL 生成 Makefile(我已将其内容粘贴在下面)。 Makefile.PL 脚本列出了所有 prereq 模块。我想知道在安装过程的哪个阶段,如果 prereq 模块不存在,它们会被安装?我想知道,因为我在缺少一些 prereq 模块的单独环境中运行了 Makefile.PL,然后是 make,然后是 make install。但是,他们没有安装?我的印象是他们会,但也许我错过了什么?我正在寻找有人提供一些清晰度。先谢谢了~

Makefile.PL

#!/usr/bin/env perl 

use strict;
use warnings;
use ExtUtils::MakeMaker;

WriteMakefile(
    NAME      => 'Imgur',
    VERSION   => '0.01',
    PREREQ_PM => {
        'JSON'                      => 2.90,
        'LWP::UserAgent'            => 6.05,
        'HTTP::Request::Common'     => 6.04,
        'Data::Dumper'              => 2.154,
        'DateTime::Format::ISO8601' => 0.08,
        'Config::IniFiles'          => 2.86,
        'Scalar::Util'              => 1.42,
        'Class::Std::Utils'         => 0.0.3,
        'MIME::Base64'              => 3.15,
        'File::Slurp'               => 9999.19
    }
);

【问题讨论】:

  • 附带说明,您应该将版本指定为字符串(例如'JSON' => '2.90',)。这样可以避免浮点转换问题。

标签: perl cpan


【解决方案1】:

Makefile.PL 不安装先决条件;如果它们没有安装,它只会抱怨。安装先决条件是 CPAN 客户端的工作。

注意:Module::Install 有一个 auto_install 功能可以做到这一点,但普遍的共识似乎是使用它是一个坏主意。

【讨论】:

  • 如果你使用 Module::Build 而不是 ExtUtils::MakeMaker,你可以使用./Build installdeps。然而,有些人认为 M::B 是一个失败的实验(我认为这包括它的维护者)。
  • Module::Build 从 5.22.0 开始也不再是核心
  • @ikegami 你介意分享一些额外的讨论链接吗? xdg.me/blog/paying-respect-to-modulebuild
猜你喜欢
  • 1970-01-01
  • 2014-06-13
  • 2015-06-08
  • 2014-08-11
  • 1970-01-01
  • 2019-06-26
  • 1970-01-01
  • 2020-11-23
  • 2016-07-24
相关资源
最近更新 更多