【问题标题】:Method to Install dependencies for Application not destined for CPAN为不用于 CPAN 的应用程序安装依赖项的方法
【发布时间】:2014-11-21 00:55:47
【问题描述】:

看起来大多数 Perl 模块在 Makefile.PL 中声明了它们对其他模块的依赖关系,然后 CPAN 使用它来安装这些依赖关系。

但现在我制作的不是一个模块,而是一个永远不会在 CPAN 上结束的最终用户应用程序,我希望能够轻松地在任何给定机器上安装该应用程序的依赖项。有没有 Perl 标准的方法来做到这一点?

【问题讨论】:

  • 无论如何都要让它成为一个模块(也许叫它App::...)。然后可以使用您使用的任何构建系统(例如Module::Build)或使用cpanm 等工具安装它。构建系统会处理依赖关系,但也会更容易安装、测试等。

标签: perl


【解决方案1】:

不管怎样,让它成为一个模块并将它放在App::… namespace 中。代码将存在于lib/App/**.pm 库文件中,脚本只是一个薄包装; perlfind 就是一个很好的例子。使用 MooseX::App 等 CLI 框架来帮助将功能拆分为模块,从而使代码更易于测试和重用。

如您所知,基于模块的发行版直接使用metafile 或间接使用构建系统声明其依赖关系,然后由您使用任何构建系统(例如Module::Build)打包或由使用任何安装工具的用户(例如cpanm)。

【讨论】:

  • 答案基于an earlier comment并扩展而来,请点赞Biffen
  • 谢谢。后续问题:Module::Build 似乎使用 CPAN shell 来安装依赖项。但是有些人不会安装它,因为并非所有测试都通过。如果我自己打开 shell,我可以强制安装,但是有没有办法配置 Module::Build 来强制或记录安装依赖项?
猜你喜欢
  • 2014-01-02
  • 1970-01-01
  • 2011-02-07
  • 1970-01-01
  • 1970-01-01
  • 2017-11-08
  • 2021-02-24
  • 2010-10-28
  • 2019-12-16
相关资源
最近更新 更多