【问题标题】:How to handle modules that require Perl devel version on CPAN?如何在 CPAN 上处理需要 Perl 开发版本的模块?
【发布时间】:2011-03-28 22:29:00
【问题描述】:

我正在 CentOS5.5 上测试我的项目安装脚本。 我的项目需要 Date::Manip 模块,这需要 feature 模块...

当我尝试通过 CPAN 安装它(功能)时,CPAN 想要安装 Perl 5.9.5...

*** WHOA THERE!!! ***

    This is an UNSTABLE DEVELOPMENT release.
    The version of this perl5 distribution is 9, that is, odd,
    (as opposed to even) and that signifies a development release.
    If you want a maintenance release, you want an even-numbered version.

    Do ***NOT*** install this into production use.
    Data corruption and crashes are possible.

    It is most seriously suggested that you do not continue any further
    unless you want to help in developing and debugging Perl.

    If you *still* want to build perl, you can answer 'y' now,
    or pass -Dusedevel to Configure.

我该如何处理这种问题?

【问题讨论】:

  • 当前安装的是什么版本的 perl? 5.9.5 3岁左右。
  • 在 CentOS 5.5 上,它是 Perl 5.8.8... :( 并且不能只为我的项目升级到 Perl 5.10...

标签: perl cpan centos5


【解决方案1】:

use feature 是在 5.10 稳定版本中首次引入的 Perl 编译指示。

这可能意味着Date::Manip 需要 Perl 5.10。

这里的 CPAN 是错误的,不要让它安装开发 Perl 版本。

【讨论】:

  • 你怎么敢质疑伟大而强大的CPAN巫师!?!?! (抱歉,刚刚注意到今天的 Google Doodle :) +1
  • @DVK 在我的梦想中,CPAN 只会推荐与系统上安装的 Perl 版本兼容的模块... :)
【解决方案2】:

根据您的具体情况,您当然可以使用 Perl 5.10,它是 5.9 之后的稳定版本。

在一般情况下,当没有更高的稳定版本时,首先您应该尝试查看您想要的模块是否有与您的 Perl 版本兼容的旧版本。

如果不是,那就是风险/回报的权衡。在生产环境中,我个人倾向于避免任何开发分支,除非关键项目的成功仅影响您需要的模块并且您不能使用其他模块或滚动自己的模块。到目前为止,我从未遇到过没有解决方法的情况——甚至想不出一个合理的情况。

【讨论】:

    【解决方案3】:

    Date::Manip 需要 Perl 5.10 才能运行,请参阅 META.yml:

    requires:
      ...
      perl: 5.010
    

    older version (5.56) 只需要 perl 5.001 即可运行,因此您可以安全地安装。

    换句话说,如果您想要最新版本,您必须将系统的 perl 更新到至少 5.10。不幸的是,CentOS 带有一个旧的 5.8.8 版本。

    【讨论】:

    • 如何安装旧版本? (来自 cpan cli 而不是来自 cpan shell)
    • cpan SBECK/Date-Manip-5.56.tar.gz
    • 或者,如果你有 App::cpanminus,cpanm search.cpan.org/CPAN/authors/id/S/SB/SBECK/…
    • @daxim 谢谢,它有效!还有一个问题:CPAN 如何处理旧版本?我只看到 Date::Manip 的 2 个版本...如果在 2 周内发布 Date::Manip 的新版本,会发生什么?
    • 除非作者明确将它们从 CPAN 中删除,否则它们通常会在那里。相反,BackPAN 会索引所有版本,甚至是从 CPAN 中删除的版本:请参阅 backpan.perl.org/authors/id/S/SB/SBECK 以获取该作者的模块。
    【解决方案4】:

    @sebthebert 如果您希望 CPAN.pm 仅尝试安装已知可与您的 perl 版本一起使用的模块,请参阅 http://cpxxxan.barnyard.co.uk/

    【讨论】:

      【解决方案5】:

      Centos 项目提供了一个 Date::Manip 版本,可以与他们的 Perl 版本一起使用。它已预先打包以与 yum 一起使用。目前这似乎是 Date::Manip 5.44 版(早于 Perl 5.10 的要求)。

      $ sudo yum install perl-Date-Manip
      

      顺便说一句,您确定要使用 Date::Manip 吗? DateTime 通常是更好的选择。

      【讨论】:

        猜你喜欢
        • 2018-02-01
        • 1970-01-01
        • 2017-02-03
        • 2017-07-17
        • 2021-09-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-09
        相关资源
        最近更新 更多