【问题标题】:Perl, multiple active CPAN-modules possiblePerl,可能有多个活动的 CPAN 模块
【发布时间】:2014-04-27 07:35:26
【问题描述】:

我更新了一个 CPAN 模块(我使用的旧模块有 2 年的历史),之后我的软件与新模块出现问题。 因为它处于生产状态,所以我再次安装了旧版本,一切都很好。 但是我需要新可用模块中的一些功能来获得新的软件功能。

所以...是否可以让一个模块的两个版本都处于活动状态并在 perl 中以某种方式(例如使用版本)来处理它们??

因为它与网络有关,我无法在新计算机上尝试新模块,因为防火墙只允许一个生产服务器访问远程计算机。

感谢您的帮助! 克里斯

【问题讨论】:

  • 你联系作者了吗?他可能愿意解决 HEAD 中的问题。
  • 如果您告诉我们这个模块是什么以及它带来了哪些问题,那么我们也许可以提供更多帮助。

标签: perl perl-module cpan


【解决方案1】:

Perl 6 能够并行加载同一模块的多个版本,并根据需要使用它们。但由于你没有指定 Perl 版本,我假设是 5.x。

答案是否定的。您当然可以同时安装它们(使用 local::lib 之类的东西将它们放在不同的库目录中),但您不能在同一进程中同时使用它们,因为它们会占用彼此的命名空间。

一种解决方案可能是安装新版本,下载旧版本的副本,然后仔细检查源以重命名它,使其具有完全不同的名称,例如,Foo::Bar -> Foo::Bar::Compat。然后你可以加载并使用它们,因为它们会有不同的名称。

【讨论】:

  • 使用他人不能使用的名称相似的另一种语言,其帮助较小,甚至可能有害。提出这个问题的人现在会认为他们只需要升级 Perl,这与事实相去甚远。
【解决方案2】:

在 Perl 5 中不可能做你想做的事。

最好的解决方案是在你的测试服务器上安装新版本的模块,运行你的测试套件并修复新版本的模块暴露的问题。

如果您没有测试服务器或测试套件,那么您不应该对您的生产应用程序进行任何维护,直到您设置好这两个东西。

如果有什么阻碍您设置测试服务器和编写测试套件,那么我最好的建议是给自己找份新工作。

【讨论】:

  • 问题不是第二台服务器,而是只有主服务器被允许访问远程机器。
  • 然后修复它。你不能指望在破碎的环境中做好工作。
猜你喜欢
  • 2016-07-11
  • 2011-12-08
  • 2014-10-18
  • 2018-06-24
  • 2013-11-09
  • 2013-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多