¿Cómo actualizo todos mis módulos CPAN a sus últimas versiones?

136

¿Cómo actualizo todos mis módulos CPAN a sus últimas versiones?

David B
fuente

Respuestas:

145

Un método alternativo para usar upgradedesde el shell CPAN predeterminado es usar cpanminusy cpan-outdated.

Estos son tan fáciles y ágiles de usar que casi nunca vuelvo al shell de CPAN. Para actualizar todos sus módulos de una vez, el comando es:

cpan-outdated -p | cpanm

Te recomiendo que instales cpanminuscomo lo describen los documentos:

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

Y luego instálelo cpan-outdatedjunto con todos los demás módulos CPAN usando cpanm:

cpanm App::cpanoutdated

Por cierto: si está utilizando perlbrew, deberá repetir esto para cada Perl que haya instalado debajo.

Puede encontrar más información sobre cpanminusy cpan-outdateden los repositorios de Github aquí:

draegtun
fuente
44
¿Por qué usar esas herramientas adicionales mientras hay una solución integrada (ver segunda respuesta)?
cada
3
"por qué usar tales herramientas adicionales" Si bien está fuera del alcance de la pregunta del OP, cpanimus RESUELVE el problema de que CPAN le pida que presione Entrar y / o escriba [s] es. De hecho, no puede suprimir de manera confiable este comportamiento con CPAN de vainilla. Esto se vuelve importante tan pronto como esté involucrado cualquier tipo de servidor cron o CI, y / o si desea 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 el caso con CPAN de vainilla) Ver también esta respuesta stackoverflow.com/questions/898782/…
Noah Sussman
[root @ portal-test bugzilla-4.4.4] # cpan-outdated -p | cpanm No se puede encontrar el método de objeto "nuevo" a través del paquete "LWP :: UserAgent" en / usr / bin / cpan-outdated line 170.
shorif2000
3
Esos son viejos (Perl data de 2006, LWP de 2005). Idealmente, necesitas una versión más nueva de ambos. Si por alguna razón no puede hacer esto, entonces actualizaría LWP versión por versión hasta que cpanm | cpan esté desactualizado. NÓTESE BIEN. IMPORTANTE: si está utilizando Perl instalado con CentOS, ¡no use CPAN o CPANMINUS con estos! ¡Nunca se mezcle con paquetes del sistema operativo! En su lugar, use Perlbrew para preparar su propio perl (y luego use cpanminus, etc.).
draegtun
1
Me gustan estas soluciones porque puede ejecutar fácilmente cpan-outdated -pprimero para ver qué hará antes de ejecutar las actualizaciones. No está claro cómo hacer un ensayo concpan upgrade
Stephen Ostermiller
51

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

cpan upgrade /(.*)/

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

Michael Armbruster
fuente
8
De acuerdo, esto no es tan bueno como cpanminus, pero al menos no tienes que descargar nada para que esto funcione.
David W.
13
Para aquellos que tienen problemas con este comando; Intente ejecutar cpan shell a través de cpan, y luego ejecute el upgrade /(.*)/en cpan shell.
earthmeLon
33

Para Strawberry Perl, prueba:

cpan -u
Denis Howe
fuente
44
Para Perl regular también. Desde la página de manual:-u Upgrade all installed modules. Blindly doing this can really break things, so keep a backup.
Chloe
18

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

Matthias Munz
fuente