在没有 Internet 连接的防火墙后机器上安装 cpan 或 cpanm 模块

Installing cpan or cpanm modules on a behind-firewall machine with no Internet connection

我已经读过 related threads like these,但他们没有完全了解我们的情况。

  1. 这是在有防火墙的机器上。不能上网。我们可以 ftp 文件到文件夹并从那里安装模块。
  2. 我们在某些文件夹上为我们的用户设置了 CHMOD 777。如果我们通过下载相关的 .pm 文件在本地构建它们,我们就可以安装 Perl 模块。但是当这些文件无法安装时,我们没有任何cpancpanm

我想安装,例如HTML::Restrict。如果我执行下载 + 安装操作,Restrict.pm 会给我这个错误:

/lib/HTML/Restrict.PM:328: Unknown command paragraph "=encoding UTF-8" 

在线阅读了一下,这表明这可能是一个旧的 Perl 问题。我们使用 5.8.x。我们自己的开发机器拥有 5.16.x 和互联网访问权限,因此安装模块是小菜一碟。无论如何,我的一台旧机器也有 5.8.x,并且通过 cpanminus 安装模块在那里工作(通过互联网)。

所以,问题:是否可以通过FTP安装"cpanminus"(cpanm),然后也通过FTP上传特定的模块文件到服务器,以及然后进入 shell 并通过 cpanm 将模块指向相应的 .pm 文件来安装模块?

感谢您的指点。

您应该看看 perldoc perlmodinstall,其中详细介绍了如何从其分发版安装模块。它遵循的应该是熟悉的咒语

  • 解压缩
  • 解压
  • 建造
  • 测试
  • 安装

假设您使用的是 Linux 系统,这通常采用

的形式
  • gzip -d My-Module-Distribution.tar.gz
  • tar -xof My-Module-Distribution.tar
  • perl Makefile.PL
  • make
  • make test
  • make install

但在 解压 阶段之后,您通常会发现一个 README 文件或其他文本文件,其中描述了要采取的任何异常步骤

显然可以合并其中的一些步骤。例如,大多数人可能想使用

tar -xvfz My-Module-Distribution.tar.gz

以避免必须单独调用 gzip。同样,如果您只使用

,make 系统将强制构建阶段作为先决条件
make test

没有前面的make

链接文档说了很多关于如何在其他平台上安装,你应该不会运行一个Linux变体

我还是不太明白你的想法,不过你可以用curl弄个单机版的cpanm。例如

curl -sS --location https://cpanmin.us/ --output cpanm

然后你应该能够将它复制到你的目标机器,把它放在你的 PATH 上,然后做

cpanm HTML-Restrict-2.2.2.tar.gz

但我怀疑您是否会发现您遇到的特定错误有任何变化