142 votes

Comment mettre à jour tous mes modules CPAN à leur dernière version ?

Comment mettre à jour tous mes modules CPAN à leur dernière version ?

155voto

draegtun Points 17081

Une méthode alternative à l'utilisation de upgrade à partir du shell CPAN par défaut est d'utiliser cpanminus y cpan-outdated .

Ils sont si faciles et agiles à utiliser que je ne reviens presque jamais au shell CPAN. Pour mettre à jour tous vos modules en une seule fois, la commande est la suivante :

cpan-outdated -p | cpanm

Je vous recommande d'installer cpanminus comme le décrivent les docs :

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

Et ensuite, installez cpan-outdated ainsi que tous les autres modules CPAN utilisant cpanm :

cpanm App::cpanoutdated

BTW : Si vous utilisez perlbrew vous devrez alors répéter cette opération pour tous les Perl que vous avez installés sous ce système.

Vous pouvez en savoir plus sur cpanminus y cpan-outdated sur les dépôts Github ici :

5 votes

Pourquoi utiliser de tels outils supplémentaires alors qu'il existe une solution intégrée (voir la deuxième réponse) ?

4 votes

"Pourquoi utiliser de tels outils supplémentaires ? Bien que cela ne fasse pas partie de la question de l'OP, cpanimus résout le problème de CPAN qui vous demande d'appuyer sur Entrée et/ou de taper [y]es. En fait, vous ne pouvez pas de manière fiable supprimer ce comportement avec vanilla CPAN. Cela devient important dès qu'une sorte de cron ou de serveur CI est impliqué, et/ou si vous voulez être capable de démarrer une mise à jour avec la certitude qu'elle ne se bloquera pas pendant que vous allez chercher un café (ce qui, selon mon expérience, est souvent le cas avec vanilla CPAN) Voir aussi cette réponse stackoverflow.com/questions/898782/

1 votes

[Root@portal-test bugzilla-4.4.4]# cpan-outdated -p | cpanm Can't locate object method "new" via le paquet "LWP::UserAgent" à /usr/bin/cpan-outdated ligne 170.

57voto

Une façon simple de mettre à jour tous les paquets Perl (modules CPAN) est la suivante :

cpan upgrade /(.*)/

cpan reconnaîtra l'expression régulière comme celle-ci et mettra à jour/mise à niveau tous les paquets installés.

10 votes

Ok, ce n'est pas aussi cool como cpanminus mais au moins, vous n'avez pas besoin de télécharger quoi que ce soit pour que ça fonctionne.

15 votes

Pour ceux qui ont des problèmes avec cette commande, essayez de lancer le shell cpan via cpan puis exécutez le programme upgrade /(.*)/ dans le shell cpan.

36voto

Denis Howe Points 315

Pour Strawberry Perl, essayez :

cpan -u

5 votes

Pour Perl ordinaire aussi. De la page de manuel : -u Upgrade all installed modules. Blindly doing this can really break things, so keep a backup.

0 votes

L'option cpan -u combien de temps prend la mise à jour ?

18voto

musiKk Points 6933

upgrade

BTW il ya un help commandement.

18voto

Matthias Munz Points 513

Essayez perl -MCPAN -e "upgrade /(.\*)/" . Cela fonctionne bien pour moi.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X