【问题标题】:How to manage the transfer of large Perl environments from one network to another如何管理大型 Perl 环境从一个网络到另一个网络的传输
【发布时间】:2019-03-29 14:37:12
【问题描述】:

我正在尝试在我雇主的网络上安装客户的 Perl 环境。当所说的客户运行我们的非 Perl 应用程序时,很多 Perl 代码在他们的(芯片构建)流程中到处运行。在客户站点的归档过程中,收集了大量的 Perl 内容(脚本、模块等)。当我的雇主网络上的所有内容都被打开时,有很多事情需要整理;例如,在客户站点捕获的 PERLLIB 环境变量有 430 多个目录条目。

毫不奇怪,我的问题更多地与系统管理员相关:验证在客户站点捕获的 Perl 环境是否解包并在我雇主的网络上顺利运行的最佳方法是什么?我意识到这是一个加载的问题,但从本质上讲,确保 PERLLIB 环境变量中的 430 多个条目被正确排序是很困难的。

解压客户环境后,当 Perl 脚本尝试运行但找不到特定模块时,我打印出 @INC 的内容(这是迄今为止最常见的问题)。然后我 grep/find 模块在提取的目录结构中的位置,并将其撞到 @INC 列表的开头。

perl -e "打印连接($/,@INC);"

如果这不是发布此类问题的最佳平台,我深表歉意,但我不知道还有什么地方可以解决如此复杂的问题。

【问题讨论】:

  • 也许PerlMonks可以回答这个问题?如果您决定在那里发帖,请不要忘记宣布交叉发帖以防止不必要的工作。
  • 你考虑过 Docker 吗? docker.com/why-docker
  • Re "在客户站点捕获的 PERLLIB 环境变量有超过 430 个目录条目。",什么????拥有多个确实没有意义。 PERL5LIB 应该用于已安装的模块,use FindBin qw( $RealBin ); use lib "$RealBin/..."; 通过脚本来查找与脚本相关的模块。

标签: perl


【解决方案1】:

您可以利用您的时间和为您的客户做的最有价值的事情就是减少@INCPERL5LIB 中的条目数量。 @INC 中的一个条目可以包含任意数量的模块,因此即使是大型复杂的项目也不需要有太多的目录来搜索。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-17
    • 1970-01-01
    • 1970-01-01
    • 2020-09-17
    • 2012-05-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多