【问题标题】:Bundling perl prereq module in source form for deployment?以源代码形式捆绑 perl prereq 模块以进行部署?
【发布时间】:2018-07-15 03:01:25
【问题描述】:

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

  • 慢。
  • 不能包含私有模块/私有补丁
  • 将安装最新版本的模块,而不是我正在开发的模块。

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

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

我错过了什么吗?

我在 Windows 上使用 Strawberry Perl。

【问题讨论】:

    标签: perl deployment module bundle


    【解决方案1】:

    Pinto 为您提供了一种私有的超级 CPAN 镜像,它只在您需要时升级,并且只升级您想要升级的模块。它还可以接受带有私有补丁的 tarball。 Here's a video on the subject.

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • 刚刚试了一下,如果我没记错的话,还是只能重新编译二进制版本(安装--cached),或者从网上获取。我应该提到包括私有模块/补丁是我的目标之一。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-26
        • 1970-01-01
        • 2020-11-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多