我想做 cpanm SomeModule
来安装 SomeModule
以及大约 10 个依赖项,但目标服务器无法访问互联网。我确实有一台非常相似的开发机器(相同的 Perl 环境,相同的 Perl 版本),cpanm
可以在其中下载其源模块。
在学习了 cpanm
的手册页后,我有一种感觉,我可以在开发机器上创建一个 tarball,将其传输到服务器,并使用它一次性安装模块。
不幸的是,我似乎没有找到确切的组合。特别是,由于在开发机器上已经安装了模块,我需要强制它仍然将所有依赖项添加到 tarball(当然不包括核心模块)。
有人可以给开发机器和目标机器的命令吗?
编辑:这特别是关于 cpanm
。当然,如果您可以权威地说 cpanm
绝对不可能,那也将是一个有效的答案......
编辑:到目前为止的评论和答案建议使用 pinto
或 minicpan
来创建一组 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/