如何将所有CPAN模块更新到最新版本?


136

如何将所有CPAN模块更新到最新版本?

Answers:


145

upgrade从默认CPAN shell 使用的另一种方法是使用cpanminuscpan-outdated

这些是如此简单易用,以至于我几乎再也没有回到CPAN shell了。要一次性升级所有模块,命令是:

cpan-outdated -p | cpanm

我建议您cpanminus像文档描述的那样安装:

curl -L https://cpanmin.us | perl - App::cpanminus

然后cpan-outdated使用cpanm以下命令与所有其他CPAN模块一起安装:

cpanm App::cpanoutdated

顺便说一句:如果您正在使用,perlbrew则需要对安装在其下的每个Perl重复此操作。

你可以找到更多关于cpanminuscpan-outdated在这里的Github上回购:


4
为什么在有内置解决方案的同时使用此类额外工具(请参阅第二个答案)?
eav 2012年

3
“为什么要使用这样的额外工具”尽管超出了OP的讨论范围,但是cpanimus确实解决了CPAN的问题,要求您按Enter键和/或键入[y] es。使用香草CPAN 无法可靠地抑制这种行为。一旦涉及到任何类型的cron或CI服务器,这便变得很重要,并且/或者如果您希望能够开始升级而确信在外出喝咖啡时它不会挂起(根据我的经验,这是很重要的)香草CPAN通常就是这种情况)另请参
见此

[root @ portal-test bugzilla-4.4.4]#cpan已过时-p | cpanm无法找到对象的方法“新”经包装“LWP :: UserAgent的”是/ usr / bin中/ CPAN-过时线170
shorif2000

3
这些都是旧的(perl日期始于2006年,LWP版本始于2005年)。理想情况下,您都需要较新的版本。如果由于某种原因您不能执行此操作,那么我将逐个升级LWP版本,直到您使cpanm | cpan过时为止。注意 重要信息-如果您使用的是安装了CentOS的Perl,则不要将CPAN或CPANMINUS与它们一起使用!切勿与OS软件包混用!!而是使用Perlbrew酿造您自己的Perl(然后在其中使用cpanminus等)。
draegtun 2014年

1
我喜欢这种解决方案,因为cpan-outdated -p在实际运行升级之前,您可以轻松地先运行以查看其功能。目前尚不清楚如何与cpan upgrade
斯蒂芬·奥斯特米勒

51

升级所有Perl软件包(CPAN模块)的一种简单方法是:

cpan upgrade /(.*)/

cpan将识别出这样的正则表达式,并将更新/升级所有已安装的软件包。


8
好吧,这是不是很酷cpanminus,但至少你没有下载任何东西得到这个工作。
David W.

13
对于那些对此命令有疑问的人;尝试通过运行cpan shell cpan,然后upgrade /(.*)/在cpan shell中运行。
EarthmeLon

33

对于Strawberry Perl,请尝试:

cpan -u

4
对于常规的Perl也是如此。从手册页:-u Upgrade all installed modules. Blindly doing this can really break things, so keep a backup.
Chloe


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.