我想做 cpanm SomeModule 来安装 SomeModule 以及大约 10 个依赖项,但目标服务器无法访问互联网。我确实有一台非常相似的开发机器(相同的 Perl 环境,相同的 Perl 版本),cpanm 可以在其中下载其源模块。

在学习了 cpanm 的手册页后,我有一种感觉,我可以在开发机器上创建一个 tarball,将其传输到服务器,并使用它一次性安装模块。

不幸的是,我似乎没有找到确切的组合。特别是,由于在开发机器上已经安装了模块,我需要强制它仍然将所有依赖项添加到 tarball(当然不包括核心模块)。

有人可以给开发机器和目标机器的命令吗?

编辑:这特别是关于 cpanm 。当然,如果您可以权威地说 cpanm 绝对不可能,那也将是一个有效的答案......

编辑:到目前为止的评论和答案建议使用 pintominicpan 来创建一组 CPAN 模块源。这很有效(尤其是 pinto 使用起来非常简单)。我现在使用 pinto 来解决我当前的问题,但是 Pinto 本身仍然有很多必备模块(与 Perl-Core 相比,>100)。我对这个问题的希望是 cpanm ,它是一个独立的、免安装的脚本,可以自己完成(它有很多选项,听起来他们可以朝这个方向发展)。这对于引导 Perl 安装没有大的开销会很好。

最佳答案

您可以从 CPAN 或 metacpan 手动下载所有依赖项的 tars,然后将它们复制并按照正确的顺序一一安装。这对于十个模块来说有点工作,但还不错。你可以写一个脚本。

但是你也可以使用 minicpan 来创建一个只包含你需要的本地小 CPAN。拥有部分或全部 CPAN 的本地副本是很棒的,例如当您在飞行中破解代码时需要安装模块时,请使用 USB 驱动器。它本质上是一个充满更多目录和tars的目录。你可以选择你需要的东西,压缩它,把它移动到你的生产服务器,在那里解压,然后告诉 cpanm 从本地 CPAN 镜像安装。

关于perl - 如何使用 cpanm 为离线服务器 bundle 模块,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39471985/

10-16 22:07