可以将 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 使用scp命令从一台机器复制文件到另一台linux机器上去
scp 将数据从一台linux服务器复制到另一台linux服务器