可以将 perl 模块从一台 Linux 机器复制到另一台机器吗?

Posted

技术标签:

【中文标题】可以将 perl 模块从一台 Linux 机器复制到另一台机器吗?【英文标题】:Can one just copy perl modules from one Linux machine to another? 【发布时间】:2020-05-14 18:37:10 【问题描述】:

我有一个由其他人设置的远程 CentOS 服务器(6.10 版)。我在机器上安装了很多 perl 模块。

我已经建立了一个本地 CentOS 服务器(版本 7.7.1908)。我想在我的本地机器上拥有完全相同的 perl 模块集。通过 cpan 一个一个地安装它们是一种选择,但我可能会遇到问题,因为某些 perl 模块是旧(非常)版本。

我想知道是否可以将模块从远程服务器复制到本地服务器。我可以这样做吗?还有其他选择吗?

【问题讨论】:

您可以使用模块跨挂载目录到您的服务器,并将其添加到带有PERLLIB 和/或PERL5LIB 变量的@INC 变量中。 How to change @INC to find Perl modules in non-standard locations。通过这种方式,您必须只支持一个模块存储库(更少的工作)。您的网络连接应该足够可靠,否则断开连接会令人不快。 如果您将模块复制到服务器作为提醒,请创建backup copy,以防您有to retreat on previous position。如果 remote server 是真正的远程服务器并且 NFS、SSH 挂载是不可能的,那么复制是唯一的选择。在这种情况下,您必须找到非常旧的模块将它们复制到本地服务器并通过 cpan 仅安装您认为安全的最新模块。 其他可能的方法是使用虚拟环境,如Docker。创建 VM 并尝试从远程服务器重新创建 perl 环境。这样,您将在同一台机器上拥有两个独立的独立 perl 环境。 请查看以下instruction是否有任何帮助。 【参考方案1】:

将模块从一台机器复制到另一台机器是不安全的,因为设置可能不同。最好重新安装它们。

您可以在cpan shell 中使用autobundle 命令来创建您在旧机器上安装的所有模块的转储。然后,您可以使用该转储告诉新机器上的cpan shell 要安装哪些模块。

感谢北极熊,这里有一篇文章的链接解释了how to reinstall the autobundle。

【讨论】:

感谢您的提示!以前不知道漂亮的autobundle 功能以及如何使用它。 谢谢。我会试试的。能否请您指出任何详细说明如何使用命令的文档。我对使用 cpan/perl 模块的知识并不多。 @user2125853 - 请参阅我的评论以及对您问题的说明,它是关于自动捆绑的。 谢谢。我去看看链接。 最好从源获取自动捆绑文档:metacpan.org/pod/…【参考方案2】:

Andy Lester 建议的解决方案可能是最好的方法。除了建议的文档之外,我还找到了文档 here。

在我的情况下,这并不是直接的,因为源服务器环境非常旧,并且我需要手动解决许多依赖项。一般来说,如果你有类似的环境和干净的安装,自动捆绑方法会很容易。

【讨论】:

以上是关于可以将 perl 模块从一台 Linux 机器复制到另一台机器吗?的主要内容,如果未能解决你的问题,请参考以下文章

linux 从一台机器复制文件到另一台linux机器上去

linux 使用scp命令从一台机器复制文件到另一台linux机器上去

scp 将数据从一台linux服务器复制到另一台linux服务器

如何将 Python/Anaconda 虚拟环境从一台计算机复制到另一台计算机?

将数据库从一台机器导入/导出到另一台机器

linux 命令