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

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

背景:
出于安全考虑,这些机器没有连接到互联网,也被认为是不必要的.

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

我打电话给我要安装我的基于Perl的软件,“目标机器”,也没有连接到互联网.可以有几个目标机器,每个都可以运行我想要安装的软件.我登录到目标机器并运行一个安装脚本,通过本地网络连接到安装机器,以获取基于Perl的软件和依赖的Perl模块并进行安装.

所以我需要知道:

>如何/在哪里获取特定版本的Perl模块,例如CGI.pm等
>如何安装这些Perl模块.是否只是将它们放置在某个目录中,例如一个库路径,并确保该目录路径位于@INC库路径环境变量中(如果还没有)

作为安装模块的一部分,我不想像做安装一样做任何事情.我希望模块可以根据需要进行预编译或准备,所以尽可能简单地安装它们.我想避免像make和它的配置这样的附加依赖,并且必须解析它的输出来检查它是否成功.

请问上述具体问题,因为我无法改变“安装机器”和“目标机器”的概念,而这些概念没有连接到互联网 – 我必须提供一个在这个安排中工作的解决方案.

解决方法

解决“我想从CPAN安装东西,但没有网络”问题的通常方法是使用David Dorward在他的答案中写道.但是,由于您要进一步说,您不希望在客户端(目标)机器上进行任何真正的安装,如果可能的话,您希望使用预编译的模块,我敦促您查看 PAR和具体是 PAR::Repository(服务器)和 PAR::Repository::Client.

由于这种方法在加快速度之前需要一些研究,所以我不会像“我只需要Foo.pm”一样提出建议.一旦谈到少数依赖关系和至少少数客户端,那么它就成为一个更为合适的解决方案.

有关其工作原理的概述,请查看我在YAPC ::欧盟2008年的演讲slides.它还提示了在客户端上提供PAR :: Repository :: Client模块的引导问题的解决方案(提示:PAR可以生成自足的可执行文件).

相关文章

1. 如何去重 #!/usr/bin/perl use strict; my %hash; while(...
最近写了一个perl脚本,实现的功能是将表格中其中两列的数据...
表的数据字典格式如下:如果手动写MySQL建表语句,确认麻烦,...
巡检类工作经常会出具日报,最近在原有日报的基础上又新增了...
在实际生产环境中,常常需要从后台日志中截取报文,报文的形...
最近写的一个perl程序,通过关键词匹配统计其出现的频率,让...