如何在没有Internet连接的计算机上安装Perl模块?

the*_*now 15 perl install module local download

我需要在没有连接到互联网的联网机器上安装基于Perl的软件.因此,我想下载Perl模块的特定版本和/或最新版本,我还想知道这些模块是否需要安装过程.

背景:
出于安全原因,机器未连接到互联网,也认为不必要.

我将下载的模块放在我称之为"安装服务器"的机器上,它包含我的基于Perl的软件,并且还包含Perl模块的本地副本.

我打电话给我想安装基于Perl的软件的机器,"目标机器",也没有连接到互联网.可以有几台目标机器,每台机器都可以运行我想要安装的软件.我登录目标计算机并运行安装脚本,该脚本将通过本地网络连接到安装机器,以获取基于Perl的软件和相关的Perl模块并安装它们.

所以我需要知道:

  1. 如何/在何处获得Perl模块的特定版本,例如CGI.pm等
  2. 如何安装这些Perl模块.是将它们放在某个目录中的情况,例如库路径,并确保此目录路径在@INC库路径环境变量中,如果它还没有?

作为安装模块的一部分,我宁愿不要做make install等任何事情.我希望模块可以根据需要进行预编译或准备,以便安装它们尽可能简单.我想避免其他依赖项,如make及其配置,并且必须解析其输出以检查它是否成功.

请通过询问上述具体问题来帮助我,因为我无法改变未连接到互联网的"安装机器"和"目标机器"的概念 - 我必须提供在此安排下工作的解决方案.

tse*_*see 14

解决"我想从CPAN安装东西但没有网络"问题的常用方法是使用minicpan,David Dorward在他的回答中写道.但是,由于你更进一步,说你根本不想在客户端(目标)机器上进行任何真正的安装,并且如果可能的话你想要使用预编译的模块,我建议你查看PAR和特别是PAR :: Repository(服务器)和PAR :: Repository :: Client.

由于这种方法在你加速之前需要进行一些研究,我不会建议"我只需要Foo.pm"就像问题一样.一旦你谈论了少数几个依赖关系和至少一些客户端,那么它就变成了一个更合适的解决方案.

有关它如何工作的概述,请查看我在YAPC :: EU 2008上的演讲幻灯片.它还暗示了在客户端上提供PAR :: Repository :: Client模块的引导问题的解决方案(提示:PAR可以生成自包含的可执行文件).


bri*_*foy 11

您可以创建一个MiniCPAN,它只包含CPAN中的所有内容的最新版本.您可以使用CPAN :: Mini :: Inject将其他非公共模块插入其中.如果您需要更好地控制版本(即不选择最新版本),您可能需要创建DPAN.

使用这些解决方案中的任何一种,您都可以将CPAN客户端配置为从本地源提取.这可能是您提前知道的目录,也可能是您动态识别的内容,如CD或拇指驱动器.这只是正确设置配置的问题.

您可能能够为大多数工作创建操作系统包,但这仍然意味着您必须至少在第一次编译它们.


Que*_*tin 6

1) 如何/从哪里获得特定版本的 Perl 模块,例如 CGI.pm 等

http://search.cpan.org/

如果您不想要最新版本,可以通过访问面包屑中的链接获取较早版本。

http://img.skitch.com/20091209-bu7kt3bj65374k7iijfnhrue2y.png

2) 如何安装这些 Perl 模块。是否只是将它们放在某个目录中的某个位置,例如库路径,并确保该目录路径在 @INC 库路径环境变量中(如果它还没有)?

有时会奏效,但你真的应该经历这个perl Makefile.PL && make && make test && make install过程。

这样做需要您手动追踪所有依赖项。您可能会更好地使用minicpan 之类的东西

  • @Rob:Perl 是可移植的,但这并不能阻止人们用它创建不可移植的东西。CPAN 只是第三方代码。 (3认同)