【问题标题】:How to manage the installation of modules used by an open source Perl project?如何管理开源 Perl 项目使用的模块的安装?
【发布时间】:2013-03-11 14:24:15
【问题描述】:

我在 small open-source Perl project 上工作,使用 Catalyst、Open Street Map 和几十个模块。我尝试尽可能多地使用 CPAN 上的模块,因为我的目标不是重新发明轮子。

所有这些东西都是通过 cpanm 和 local::lib 安装的。每次我需要新的东西时,我都会安装几个模块和依赖项(使用 cpanm 非常简单)。现在,我在问自己,那些将克隆我的项目的人如何能够安装几十个模块而不会感到头疼?

这方面的最佳做法是什么?我应该在 Makefile.pl 中列出所有必需的模块吗?我现在对此感到焦虑,因为我在这个项目上努力工作,尝试遵循很多好的实践,但我觉得我在这个特定点上犯了错误(不要考虑这个)。

我需要一些关于这个问题的建议,因为一切看起来都很神奇,以至于我不相信在 Makefile 中使用 'require' 关键字列出模块名称就足够了。我也希望不必在项目中包含所有依赖项并提交所有这些庞大的包以供以后使用。

【问题讨论】:

    标签: perl makefile cpan catalyst


    【解决方案1】:

    如果您使用 Catalyst,您可以在为您的 Catalyst 应用程序创建的 Makefile.PL 中添加所需的模块作为依赖项。

    【讨论】:

    • 我可能有用的是指出 OP 只需要在他的代码中列出出现在 use 语句中的 CPAN 模块。
    • @SinanÜnür 当您安装数百个模块但只“使用”其中一些模块时,这一点很重要!
    【解决方案2】:

    我建议您看一下carton(与出色的 cpanm 出自同一作者)。

    我是 Ruby 的 bundler 的忠实粉丝,carton 的文档将其描述为“Bundler for Perl”。不久前我尝试过它,它看起来很有希望。

    【讨论】:

      【解决方案3】:

      您应该只列出(在Makefile.PL 中)您直接需要的那些模块(即,您在模块中的userequire 的那些)。您无需担心间接需要的模块(即,您使用的模块);这是安装人员的工作。

      要获得您使用的模块列表,您当然可以手动编译该列表。但是,如果您碰巧有 The Definitive Guide to Catalyst,那么第 129 页上有一个方便的 Bash 函数,我不确定是否可以在此处重现。还有Perl::PrereqScanner::App,我没直接用过,但是Dist::Zilla用的。

      FWIW,如果您使用 Dist::Zilla 来管理您的分发(我什至对我不上传到 CPAN 的私人项目也这样做),它可以(并且默认情况下)为您跟踪依赖关系。

      【讨论】:

      • 感谢@edward-baudrez 的回答。太糟糕了,我没有使用 Perl::PrereqScanner::App ,现在我觉得我用最糟糕的轮子重新发明了轮子。
      猜你喜欢
      • 2019-12-13
      • 2010-11-15
      • 2011-10-02
      • 1970-01-01
      • 2014-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多