如何管理开源Perl项目使用的模块的安装?

时间:2013-03-21 21:18:05

标签: perl makefile cpan catalyst

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

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

这方面的最佳做法是什么?我应该将所有必需的模块列入Makefile.pl?我现在感到焦虑,因为我在这个项目上努力工作,尝试遵循很多好的做法,但觉得我在这一点上犯了一个错误(因为没想到​​这个)。

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

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

我建议您查看carton(来自同一作者的精彩cpanm)。

我是Ruby的bundler的粉丝,而纸盒的文档将其描述为“Bundler for Perl”。我曾经尝试过一段时间,看起来很有希望。

答案 2 :(得分:1)

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

要获取您使用的模块列表,您当然可以手动编译列表。但是,如果您碰巧拥有 Catalyst的权威指南,那么第129页上有一个方便的Bash函数,我不确定我可以在这里重现。还有Perl::PrereqScanner::App,我没有直接使用,但是由Dist :: Zilla使用。

FWIW,如果您使用Dist::Zilla来管理您的发行版(即使是我没有上传到CPAN的私有项目,我也可以这样做),它可以(默认情况下)跟踪您的依赖关系。