以源代码形式捆绑perl prereq模块以进行部署?

时间:2012-09-22 18:57:13

标签: perl deployment module bundle

我的webapp取决于很多模块。当我在远程服务器上部署时,我必须cpanm重新安装所有模块,这有以下问题:

  • 慢。
  • 不能包含私人模块/私人补丁
  • 会安装最新版本的模块,而不是我正在处理的模块。

所以我想在部署时重新发布它们。我几乎可以使用PAR,但我不能,因为我不希望以二进制形式这样做 - 因为Perl版本,架构可能会有所不同。

Module::Install::Bundle是我找到的壁橱。在指定prereq后,它可以从CPAN自动获取模块及其所有依赖项(直到核心模块)。模块确实构建和测试,但“make install”什么都不做 - 它根本不安装这些先决条件。

我有什么遗漏的吗?

我在Windows上使用Strawberry Perl。

2 个答案:

答案 0 :(得分:1)

原则上,cpanm可以满​​足您的要求:

  • cpanm --notest速度很快(当然,您并不总是希望跳过测试,但是测试是造成速度下降的最大原因。除此之外,您可以尝试自己编写并行下载器)
  • cpanm FOO/Bar-1.234.tar.gz将安装确切的版本,并且可以在您的PAUSE帐户下上传您的分叉包(因此它适用于私有但仍为开源库)
  • cpanm .将发行版本安装在当前目录中,因此这可能是您的私有库的方式。
  • cpanm foo.tar.gz也可以

cpanm唯一的问题是自动化依赖项列表。

还请注意,固定库版本而不固定perl版本也没有意义。在这种情况下,您可以使用PAR。同样,对于PAR,您无需使用打包程序即可获取整体文件-您可以使用PAR :: Repository安装模块,这比整体软件包更适合调试。

答案 1 :(得分:0)

您可以查看Carton。有了它,您可以为应用程序提供一组自包含的依赖项。