2

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

  • 减缓。
  • 不能包含私有模块/私有补丁
  • 将安装最新版本的模块,而不是我正在处理的模块。

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

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

有什么我错过的吗?

我在 Windows 上使用草莓 Perl。

4

3 回答 3

1

Pinto为您提供了一种私有的超级 CPAN 镜像,它只在您需要时升级,并且只升级您想要升级的模块。它还可以接受带有私有补丁的 tarball。 这是有关该主题的视频

于 2012-09-22T20:18:59.887 回答
1

cpanm 原则上可以做你想做的事:

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

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

另请注意,在不固定 perl 版本的情况下固定库版本是没有意义的。在这种情况下,您可以使用 PAR。此外,使用 PAR,您无需使用打包程序来获取单片文件 - 您可以使用 PAR::Repository 安装模块,这比单片包更适合调试。

于 2018-07-14T19:01:25.437 回答
0

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

于 2012-09-22T19:41:48.323 回答