2010-09-16 43 views

回答

121

从默认CPAN外壳中使用upgrade的替代方法是使用cpanminuscpan-outdated

这些都很简单&灵活使用,我几乎没有回到CPAN外壳。要一气呵成升级所有的模块是:

cpan-outdated -p | cpanm 


我建议你安装cpanminus像文档描述:

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

,然后使用cpanm所有其他CPAN模块一起安装cpan-outdated

cpanm App::cpanoutdated 

顺便说一句:如果您使用perlbrew那么您将需要代表对于你安装在它下面的每一个Perl,都要吃这个。

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

+3

为什么使用这种额外的工具,而有一个内置的解决方案(见第二个答案)? – eav 2012-11-08 08:37:37

+3

“为什么使用这些额外的工具”虽然它不在OP的问题范围之内,但cpanimus可以解决CPAN要求您按Enter键和/或键入[y] es的问题。 Afaict用vanilla CPAN不能可靠地抑制这种行为。只要涉及任何类型的cron或CI服务器,并且/或者如果您希望能够开始升级并且信心不会在您外出喝咖啡时挂起(这在我的经验中是经常与香草CPAN的情况下)另请参阅此答案http://stackoverflow.com/questions/898782/how-do-i-tell-cpan-to-install-all-dependencies – 2013-12-27 16:33:02

+0

[root @ portal-test bugzilla-4.4 .4]#cpan-outdated -p | cpanm 无法通过位于/ usr/bin/cpan-outdated第170行的程序包“LWP :: UserAgent”找到对象方法“new”。 – shorif2000 2014-06-05 11:52:12

41

一个简单的方法来升级所有的Perl包(CPAN模块)是以下方式:

cpan upgrade /(.*)/ 

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

+5

好吧,这不是'cpanminus'的_cool_,但至少你不必下载任何东西就可以使它工作。 – 2012-04-26 02:21:16

+2

正则表达式甚至没有必要。 + – TimZaman 2014-05-19 09:01:55

+0

这不起作用 – shorif2000 2014-06-05 11:48:19

23

草莓Perl中,尝试:

cpan -u 
+0

这个伎俩!干杯。 – 2013-12-30 23:21:22

+3

它也适用于通常的Perl,似乎(至少在Linux上)。 – ismail 2015-04-06 13:38:00

+2

对于普通的Perl也是如此。从手册页:'-u升级所有已安装的模块。盲目做这件事可能会破坏事情,所以保持备份。“ – Chloe 2016-04-04 03:04:59

15

尝试perl -MCPAN -e "upgrade /(.\*)/"。这对我来说可以。

相关问题