如何在不安装CPAN模块的情况下安装deps?

时间:2009-11-10 14:21:54

标签: perl deployment module installation cpan

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

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

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

3 个答案:

答案 0 :(得分:10)

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

perl Makefile.PL
make installdeps

答案 1 :(得分:8)

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

然而,MakeMaker是旧闻,大多数人都要求圣诞老人消失。如果您想要更好地控制,包括创建自己的目标和流程,Module::Build更容易使用以及跨平台(即使这意味着不使用其他makeModule::Build {1}},或者在不同盒子上的相同操作系统上的任何内容)。如果您偏离正常的消费级安装流程,那么没有gmake,您的生活将更加轻松。

有些人很欣赏MakeMaker构建文件的简洁性,但是一旦构建完成,你就不会花很多时间搞乱你的构建文件,所以它并没有那么多真正的好处。当你获得的小利益锁定Module::Install时,它根本不是一场胜利。


2014年更新:{{3}}现已失宠,需要维护人员。它从来没有达到人们可以使用它来构建和分发XS模块的程度。它在Perl v5.19中已被弃用,尽管您仍然可以从CPAN获取它。

答案 2 :(得分:4)

您可以查看Module::ScanDeps以生成要安装的相关模块列表。或Par::Packer将整个内容打包为“app”。