2010-09-16 9 views

Respuesta

121

Un método alternativo para usar upgrade del shell de CPAN predeterminado es usar cpanminus y cpan-outdated.

Son tan fáciles de usar & que casi nunca vuelvo a la carcasa de CPAN. Para actualizar todos los módulos de una sola vez es:

cpan-outdated -p | cpanm 


recomiendo instalar cpanminus al igual que los documentos describen:

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

y luego instalar cpan-outdated, junto con todos los demás módulos CPAN utilizando cpanm:

cpanm App::cpanoutdated 

Por cierto: Si está utilizando perlbrew entonces tendrá que rep come esto por cada Perl que hayas instalado debajo.

Puede encontrar más información acerca de cpanminus y cpan-outdated en los repositorios Github aquí:

+3

¿por qué usar tales herramientas adicionales mientras hay una solución incorporada (ver la segunda respuesta)? – eav

+3

"por qué usar tales herramientas adicionales" Mientras está fuera del alcance de la pregunta del OP, cpanimus SOLUCIONA el problema de CPAN pidiéndole que presione Enter y/o escriba [y] es. Afaict no se puede _refiablemente_ suprimir este comportamiento con CPAN de vanilla. Esto se vuelve importante tan pronto como se involucre cualquier tipo de servidor cron o CI, y/o si le gusta poder iniciar una actualización con la confianza de que no se bloqueará mientras está tomando café (lo que en mi experiencia es a menudo es el caso con CPAN de vanilla) Vea también esta respuesta http://stackoverflow.com/questions/898782/how-do-i-tell-cpan-to-install-all-dependencies –

+0

[root @ portal-test bugzilla-4.4 .4] # cpan-obsoleto -p | cpanm No se puede encontrar el método del objeto "nuevo" a través del paquete "LWP :: UserAgent" en/usr/bin/cpan-outdated línea 170. – shorif2000

41

Una manera fácil de actualizar todos los paquetes de Perl (módulos CPAN) es el siguiente forma:

cpan upgrade /(.*)/ 

cpan reconocerá la expresión regular así y actualizará/actualizará todos los paquetes instalados.

+5

Bien, esto no es tan'cool_ como' cpanminus', pero al menos no tienes que descargar nada para que esto funcione. –

+2

La expresión regular ni siquiera es necesaria. + – TimZaman

+0

esto no funciona – shorif2000

23

para Strawberry Perl, probar:

cpan -u 
+0

¡Eso fue lo que hizo! Aclamaciones. –

+3

También funciona para Perl habitual parece (al menos en Linux). – ismail

+2

Para Perl regular también. Desde la página man: '-u Actualiza todos los módulos instalados. Hacer esto ciegamente puede realmente romper las cosas, así que mantén una copia de seguridad. – Chloe

15

Trate perl -MCPAN -e "upgrade /(.\*)/". Funciona bien para mí.

Cuestiones relacionadas