如何在没有Internet连接的机器上安装Perl模块?
我需要在未连接到internet的联网计算机上安装基于Perl的软件。因此,我想下载Perl模块的特定版本和/或最新版本,还想知道这些模块是否需要安装过程 背景:如何在没有Internet连接的机器上安装Perl模块?,perl,download,module,installation,local,Perl,Download,Module,Installation,Local,我需要在未连接到internet的联网计算机上安装基于Perl的软件。因此,我想下载Perl模块的特定版本和/或最新版本,还想知道这些模块是否需要安装过程 背景: 出于安全原因,这些机器没有连接到互联网,这也被认为是不必要的 我将下载的模块放在一台我称之为“安装服务器”的机器上,它包含我的基于Perl的软件,还包含Perl模块的本地副本 我将一台我想安装基于Perl的软件的机器称为“目标机器”,也没有连接到internet。可以有几个目标机器,每个机器都可以运行我要安装的软件。我登录到目标机器并
出于安全原因,这些机器没有连接到互联网,这也被认为是不必要的 我将下载的模块放在一台我称之为“安装服务器”的机器上,它包含我的基于Perl的软件,还包含Perl模块的本地副本 我将一台我想安装基于Perl的软件的机器称为“目标机器”,也没有连接到internet。可以有几个目标机器,每个机器都可以运行我要安装的软件。我登录到目标机器并运行安装脚本,该脚本将通过本地网络连接到安装机器,以获取基于Perl的软件和相关Perl模块并安装它们 所以我需要知道:
perlmakefile.PL&&make&&make-test&&makeinstall
过程
但要做到这一点,需要手动跟踪所有依赖项。解决“我想从CPAN安装东西,但没有网络”问题的通常方法是使用minicpan,如David Dorward在回答中所述。但是,由于您更进一步,说您根本不希望在客户端(目标)机器上进行任何实际安装,并且如果可能的话,您希望使用预编译模块,因此我敦促您签出,特别是(服务器)和
因为这种方法需要一些研究才能跟上速度,所以我不建议将其用于“我只需要Foo.pm”之类的问题。一旦您讨论了少数依赖项和至少少数客户机,那么它将成为一个更合适的解决方案
要了解它的工作原理,请查看我在YAPC::EU 2008上的演讲。它还提示了解决PAR::RealSt::Client模块在客户端上可用的引导问题的解决方案(提示:PAR可以生成自包含的可执行文件)。您可以使用将其他非公共模块插入其中。如果您需要更好地控制版本(即不选择最新版本),则可能需要创建一个新版本
使用这些解决方案中的任何一种,您都可以将CPAN客户端配置为从本地源提取。这可能是一个你提前知道的目录,或者是一些你动态计算出来的东西,比如CD或thumb驱动器。这只是正确设置配置的问题
您可以为大部分工作创建操作系统包,但这仍然意味着您必须至少在第一次编译它们。您应该在回答中强调minicpan。这是解决这个问题的正确方法。@David Dorward-谢谢你在我发布问题后这么快就回复我。正如在最初的问题中提到的,我希望避免make-install等,因为它增加了复杂性,因为我必须手动查找依赖项,我必须确保make存在并正确工作。如果有一个一致、健壮的自动化系统能够干净地处理make的所有结果,我会很乐意遵循这个过程。如果make必须用于提供预编译模块以满足程序的依赖性,那么将Perl称为可移植的intepreted语言似乎是不诚实的。进一步阅读后,我发现模块可能包含C代码,这可以解释为什么make是必要的。遗憾的是,它确实为精确定义配置管理和安装过程添加了更多的步骤。Rob:对于许多简单的模块,将.pm文件复制到@INC目录的适当子目录中确实有效。但是这种方法充满了危险。@Rob:Perl是可移植的,但这并不能阻止人们用它创建不可移植的东西。CPAN只是第三方代码。谢谢tsee的回答。在这个阶段,本地CPAN镜像可能不是适合我的解决方案,因为我有一个相当小的特定模块列表,我希望获得这些模块以满足我的程序的依赖性。此外,我不“拥有”本地CPAN将驻留的机器,并且可能在那里