【问题标题】:In-place Perl upgrade from source从源代码就地升级 Perl
【发布时间】:2017-05-22 15:14:54
【问题描述】:

有没有一种标准方法可以升级到 Perl 的新的次要版本(和二进制兼容),而无需从源代码进行完全重新编译?

例如,如果我安装了 Perl v5.24.0 和一堆 CPAN 模块,我是否可以将此安装升级到 v5.24.1 而无需重新编译全新的构建并对 v5 下安装的所有 CPAN 模块执行相同操作。 24.0?还是我必须创建一个所有已安装 CPAN 模块的列表,编译一个新的 Perl,然后使用新编译的版本重新安装这些 CPAN 模块?

我没有看到使用最新版本的源代码“修补”当前系统的简单方法。 (注意:我想知道是否有本地方法可以做到这一点(即不使用 perlbrew)。

【问题讨论】:

  • 您不需要重新安装模块。
  • 不要在意反对票。这是 StackOverflow,这里有一些用户认为唯一正确的 perl 问题是 how to reverse a list in perl 之类的,当然是提供的代码。他们忘记了这里也有关于以下主题的 (help center) 问题: 程序员常用的软件工具;并且是软件开发独有的实用且可回答的问题 - 您的问题与上述完全一致。

标签: perl


【解决方案1】:

如果我安装了 Perl v5.24.0 和一堆 CPAN 模块,我可以在不重新编译全新构建的情况下将此安装升级到 v5.24.1

据我所知,没有。您必须从头开始配置/编译/安装新的 perl。

并且对安装在 v5.24.0 下的所有 CPAN 模块执行相同的操作?

是的:Configure 询问您现有的 perl 版本以及是否应该在@INC 中包含它们的目录。如果您说是(我相信这是默认设置),那么所有已安装的模块都可以在您的新 perl 中使用。


也就是说:

或者我必须创建所有已安装 CPAN 模块的列表

这很容易cpan -a:

$ cpan -a
... lots of modules listed here ...

Wrote bundle file
    /home/user/.cpan/Bundle/Snapshot_2017_04_25_00.pm

并使用新编译的版本重新安装那些 CPAN 模块?

安装新的 Perl 后,运行

$ cpan Bundle::Snapshot_2017_04_25_00

(或任何名称 cpan -a 在上一步中提供的快照文件)它应该安装您之前拥有的所有内容。

【讨论】:

  • 谢谢。这可以作为一种解决方案。我仍然对没有可以升级到最新次要版本的直接内置程序感到惊讶。
【解决方案2】:

如果您使用 perlbrew,它有一个“upgrade-perl”命令。缺点是初始配置参数仍然没有传递给新构建的版本。 另见http://www.modernperlbooks.com/mt/2013/03/upgrade-in-place-with-perlbrew.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-22
    • 1970-01-01
    • 1970-01-01
    • 2016-12-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多