【问题标题】:Installing cpan or cpanm modules on a behind-firewall machine with no Internet connection在没有 Internet 连接的防火墙后机器上安装 cpan 或 cpanm 模块
【发布时间】:2015-12-16 09:21:02
【问题描述】:

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

  1. 这是在防火墙机器上。没有网络访问权限。我们可以将文件 ftp 到文件夹并从那里安装模块。
  2. 我们在某些文件夹中为用户提供了 CHMOD 777。如果我们通过下载相关的.pm 文件在本地构建它们,我们可以安装 Perl 模块。但是当这些文件无法安装时,我们没有任何cpan 或cpanm。

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

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

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

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

感谢您的任何指点。

【问题讨论】:

  • 你误解了我的问题。我希望 cpanm 安装我指向本地服务器某处的模块。 cpanm 不会像默认情况下那样在线查找这些模块。希望这更清楚。
  • 我仍然不确定你想要什么。安装HTML::Restrict 时遇到的具体问题是因为an old bug in Pod::Perldoc,但这不会影响您安装模块的能力。我看不出你认为安装 App::cpanminus 会有什么不同
  • 感谢您提供的信息。在 Perl 5.8.x 中,有什么方法可以解决旧的 Pod::Perldoc 问题吗?
  • 我真的不知道。您可以尝试获取cpanm,正如我在回答中描述的那样,看看它是否会为您更新Pod::Perldoc。但正确的方法当然是升级 Perl!
  • 这真是太愚蠢了。使用过时的 Perl 版本并需要无法从 CPAN 安装它们的模块只是愚蠢的设计。拿一根羽毛笔问问你的经理,为什么他们可以使用电子邮件,而你的软件需要牢牢地停留在中世纪,而由此产生的劳动力成本是 21 世纪的水平。

标签: perl cpan cpanm


【解决方案1】:

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

  • 解压
  • 解压
  • 构建
  • 测试
  • 安装

假设您使用的是 Linux 系统,这通常采用以下形式

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

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

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

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

避免不得不单独调用gzip。同样,如果您只使用 make 系统将强制构建阶段作为先决条件

make test

没有前面的make

链接的文档有很多关于如何在其他平台上安装的内容,如果您不运行 Linux 变体

【讨论】:

    【解决方案2】:

    我还是不太明白你的想法,但你可以使用curl 获得cpanm 的独立版本。比如

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

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

    cpanm HTML-Restrict-2.2.2.tar.gz
    

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

    【讨论】:

      猜你喜欢
      • 2010-12-24
      • 1970-01-01
      • 2019-04-11
      • 2015-04-17
      • 2013-04-26
      • 2015-03-02
      • 2014-09-03
      • 1970-01-01
      • 2014-11-13
      相关资源
      最近更新 更多