如何将我的所有 CPAN 模块更新到最新版本?
Posted
技术标签:
【中文标题】如何将我的所有 CPAN 模块更新到最新版本?【英文标题】:How do I update all my CPAN modules to their latest versions? 【发布时间】:2011-04-13 06:29:22 【问题描述】:【问题讨论】:
【参考方案1】:在默认 CPAN shell 中使用upgrade
的另一种方法是使用cpanminus
和cpan-outdated
。
它们使用起来非常简单灵活,以至于我几乎不会再回到 CPAN shell。要一次性升级所有模块,命令是:
cpan-outdated -p | cpanm
我建议您像文档描述的那样安装cpanminus
:
curl -L https://cpanmin.us | perl - App::cpanminus
然后使用cpanm
安装cpan-outdated
以及所有其他CPAN 模块:
cpanm App::cpanoutdated
顺便说一句:如果您使用的是perlbrew
,那么您将需要为您在其下安装的每个 Perl 重复此操作。
您可以在此处的 Github 存储库中找到有关 cpanminus
和 cpan-outdated
的更多信息:
【讨论】:
为什么在有内置解决方案的情况下使用这些额外的工具(见第二个答案)? “为什么要使用这些额外的工具”虽然它超出了 OP 问题的范围,但 cpanimus 确实解决了 CPAN 要求您按 Enter 和/或键入 [y]es 的问题。 Afaict 你不能可靠地 用 vanilla CPAN 抑制这种行为。一旦涉及任何类型的 cron 或 CI 服务器,和/或如果您希望能够开始升级并确信它不会在您外出喝咖啡时挂起(根据我的经验是香草CPAN通常是这种情况)另见此答案***.com/questions/898782/… [root@portal-test bugzilla-4.4.4]# cpan-outdated -p | cpanm 无法通过 /usr/bin/cpan-outdated 第 170 行的包“LWP::UserAgent”定位对象方法“new”。 那些都是旧的(perl 从 2006 年开始,LWP 从 2005 年开始)。理想情况下,您需要两者的更新版本。如果由于某种原因你不能这样做,那么我会逐个升级 LWP 版本,直到你得到 cpanm|cpan-outdated 工作。注意。重要 - 如果您使用的是 CentOS 安装的 Perl,那么请不要将 CPAN 或 CPANMINUS 与这些一起使用!切勿与 OS 软件包混用!!而是使用 Perlbrew 来酿造你自己的 perl(然后在其中使用 cpanminus 等)。 我喜欢这个解决方案,因为您可以轻松地先运行cpan-outdated -p
,在实际运行升级之前先看看它会做什么。目前尚不清楚如何使用cpan upgrade
进行试运行@【参考方案2】:
升级所有 Perl 包(CPAN 模块)的简单方法如下:
cpan upgrade /(.*)/
cpan 将识别这样的正则表达式,并将更新/升级所有已安装的软件包。
【讨论】:
好吧,这不像cpanminus
那样酷,但至少你不需要下载任何东西来让它工作。
对于那些对此命令有问题的人;尝试通过cpan
运行cpan shell,然后在cpan shell 中运行upgrade /(.*)/
。【参考方案3】:
对于 Strawberry Perl,请尝试:
cpan -u
【讨论】:
也适用于常规 Perl。来自手册页:-u Upgrade all installed modules. Blindly doing this can really break things, so keep a backup.
选项cpan -u
更新需要多长时间?【参考方案4】:
试试perl -MCPAN -e "upgrade /(.\*)/"
。对我来说效果很好。
【讨论】:
【参考方案5】:upgrade
顺便说一句,有一个help
命令。
【讨论】:
以上是关于如何将我的所有 CPAN 模块更新到最新版本?的主要内容,如果未能解决你的问题,请参考以下文章
将我的 Xcode 更新到最新版本会删除我之前安装的 SDK 吗?