1

我有一台无法访问 Internet 的 Linux 服务器(访问被防火墙阻止)。我想安装一个新的 Perl。我有什么选择,最好的方法是什么?系统 Perl(包括在 OS 安装中)必须保持不变。

我一直在使用 perlbrew,我认为这是进行在线安装的最佳方式。但是 perlbrew 中涉及的所有步骤似乎都需要互联网访问:您从网上下载它,它从网上下载新的 Perl 版本等,我还没有找到如何让它离线工作的胶水。

如果 perlbrew 没有问题,我可以将 Perl 从源代码构建到服务器上的自定义位置。我认为这最终可能会变得复杂、耗时且容易出错。每次更新 Perl 时,我都会手动创建一个新版本。

还有其他我目前不知道的安装方式。当然,我可以坚持使用 Perl 系统,但它是一个过时的版本,而且我已经在使用新的语法特性。或者我可以开始协商更改防火墙策略以允许 perlbrew 访问 Internet。

4

4 回答 4

5

但是 perlbrew 中涉及的所有步骤似乎都需要互联网访问

如果配置正确,则不会。

要离线安装 perlbrew 本身,请安装App-perlbrew dist。手动跟踪其依赖项是一件苦差事,因此请准备一个 MiniCPAN 镜像-p包括 Perl dists),将其转移到目标机器并配置 CPAN 以使用本地镜像。运行cpan App::perlbrew安装。

安装 perlbrew 后,运行其mirror命令将 CPAN 镜像配置为$PERLBREWROOT/Config.pm. 编辑此文件以将其更改为本地 MiniCPAN 镜像。将 Perl dist tarball 放入$PERLBREWROOT/dists/.


请注意,编译 Perl 需要一个有效的 C 编译器工具链,以及可选的 libdb (BerkeleyDB) 和 gdbm 的开发文件。(再次阅读该INSTALL文件,即使 perlbrew 的自动配置和 Perl 的configure.SH默认设置对您隐藏了这些细节。)

离线获取编译器工具链可能要困难得多,除非之前已经使用操作系统安装来编译其他 C 内容。

于 2012-04-20T09:06:01.663 回答
2

perlbrew 没有什么特别之处。如果您不打算使用它来下载 Perl 源代码,那么它不会为您节省太多。一旦你有了 Perl 源代码,你只需要配置和安装它:

% ./Configure -des -Dprefix=/path/to/installation
% make install

完成后,该 Perl 的所有内容都在该安装路径下。

我不喜欢 perlbrew 主要是因为它向人们隐藏了这个任务是多么简单,所以他们觉得他们无法自己完成。

于 2012-04-20T11:39:46.433 回答
1

你有没有考虑从不同的方向攻击它?如果您每次都必须请求互联网访问,那么保持最新状态将是一件痛苦的事情。同样,如果您错过/错误配置了 CPAN 镜像中的任何软件包,一旦您实际尝试使用它们就很难纠正。

也许只是用精简的 linux + perl + 模块构建一个小型 VM。保持最新状态,然后将全部内容保存在 USB 记忆棒上。您将拥有一个众所周知的易于安装的安装。

于 2012-04-20T09:53:42.363 回答
0

我个人所做的是在我离线(而不是在度假)时使用 git checkout 。一旦你有了整个 git 工作目录,通过检查标签来构建任何发布的版本是微不足道的:

git checkout v5.17.4
git clean -f # cleanup previously compiled .o files etc
sh ./Configure ...

根据您如何将文件传输到您的主机,这可能很方便,因为您还可以在那里设置一个私人 git 存储库,以便其他计算机可以git push在那里进行新的提交。

于 2012-10-18T06:34:16.517 回答