【问题标题】:How do I install deps for CPAN module without installing it?如何在不安装 CPAN 模块的情况下安装 deps?
【发布时间】:2010-12-15 01:35:01
【问题描述】:

这是我之前的问题about developing Perl applications 的后续。假设我使用 Module::Install 将应用程序开发为 CPAN 模块。现在我将代码上传到生产服务器,比如使用git push,我想安装Makefile.PL 中列出的应用程序依赖项。如果我只是运行cpan .,它会尝试像普通的 Perl 模块一样安装应用程序,即。开始将模块和文档复制到整个系统的标准 Perl 目录。

这就是它应该的方式吗?您是否将应用程序安装到标准 Perl 目录中?我习惯于将我的 Perl 应用程序放在一个单独的 lib 目录中。否则,我似乎必须管理很多其他事情,比如在路径上的某处安装资源等。如果我只想安装Makefile.PL 中声明的 deps 并运行应用程序测试以确保一切正常,应该做什么有吗?

(这是否记录在某处?我的意思是,是否有部署和更新非平凡 Perl 应用程序的最佳实践?或者每个人都以自己的方式做这件事?)

【问题讨论】:

  • 你为什么不使用 [Dist::Zilla][dzil] Module::Install 已经很老了。 [dzil]:dzil.org

标签: perl deployment module installation cpan


【解决方案1】:

如果您使用的是Module::Install,那么您实际上是在幕后使用ExtUtils::MakeMaker。您可以使用 MakeMaker 的所有功能及其提供的目标。尽管文档没有显示所有功能,但在生成的Makefile 中可以找到一些有价值的东西。

然而,MakeMaker 是旧闻,大多数人都要求圣诞老人让它消失。如果您想要更好的控制,包括创建自己的目标和流程,Module::Build 更容易使用以及跨平台(即使这只是意味着不使用不同的makegmake 或在不同盒子上的相同操作系统上的任何东西)。如果您偏离正常的消费级安装过程,没有MakeMaker,您的生活会更轻松。

有些人欣赏Module::Install 构建文件的简洁性,但是一旦构建完成,您就不会花费大量时间来处理您的构建文件,因此它并没有什么真正的好处。当您获得的一点好处将您锁定在MakeMaker 中时,这根本不是一场胜利。


2014 年更新:Module::Build 现在已经失宠,需要维护者。它从来没有达到人们可以使用它来构建和分发 XS 模块的地步。它在 Perl v5.19 中已被弃用,尽管您仍然可以从 CPAN 获得它。

【讨论】:

  • 我已经改成Module::Build,感觉好多了。 0.36 版本添加了一个 installdeps 操作,这正是我所要求的。谢谢。
【解决方案2】:

您可以查看Module::ScanDeps 以生成用于安装的依赖模块列表。或者Par::Packer 将整个东西打包成一个“应用程序”。

【讨论】:

  • 谢谢 (+1),但这不是我想要的。 M::S 与我想使用的整个 Module::Install 机器完全正交。至于P::P,恐怕会让事情变得不必要的复杂。我的大多数应用程序都是 Catalyst Web 应用程序,当我想修复某些东西时,在服务器上拥有一个“实时”存储库非常方便。
【解决方案3】:

我可能会误会,但我认为您正在寻找的是

perl Makefile.PL
make installdeps

【讨论】:

  • 谢谢,看来我是这样做的:)
  • 我试过这个,但没有成功。那是因为根据dagolden.com/index.php/1528/…,这只适用于基于Module::Install的发行版
猜你喜欢
  • 2011-12-26
  • 1970-01-01
  • 2012-02-03
  • 2010-12-05
  • 2013-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-30
相关资源
最近更新 更多