Comment mettre à jour tous mes modules CPAN vers leurs dernières versions?

136

Comment mettre à jour tous mes modules CPAN vers leurs dernières versions?

David B
la source

Réponses:

145

Une méthode alternative à l'utilisation à upgradepartir du shell CPAN par défaut consiste à utiliser cpanminuset cpan-outdated.

Ceux-ci sont si faciles et agiles à utiliser que je ne retourne presque jamais au shell CPAN. Pour mettre à niveau tous vos modules en une seule fois, la commande est:

cpan-outdated -p | cpanm

Je vous recommande d'installer cpanminuscomme le décrivent les documents:

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

Et puis installez cpan-outdatedavec tous les autres modules CPAN en utilisant cpanm:

cpanm App::cpanoutdated

BTW: Si vous utilisez, perlbrewvous devrez répéter ceci pour chaque Perl que vous avez installé en dessous.

Vous pouvez en savoir plus sur cpanminuset cpan-outdatedsur les dépôts Github ici:

Draegtun
la source
4
pourquoi utiliser de tels outils supplémentaires alors qu'il existe une solution intégrée (voir la deuxième réponse)?
eav
3
"pourquoi utiliser de tels outils supplémentaires" Bien que cela ne soit pas dans le cadre de la question du PO, cpanimus résout le problème de CPAN vous demandant d'appuyer sur Entrée et / ou de taper [y] es. Afaict vous ne pouvez pas supprimer de manière fiable ce comportement avec vanilla CPAN. Cela devient important dès qu'un type de serveur cron ou CI est impliqué et / ou si vous souhaitez pouvoir démarrer une mise à niveau avec la certitude que cela ne se bloquera pas pendant que vous êtes en train de prendre un café (ce qui, d'après mon expérience, est souvent le cas avec le CPAN vanille) Voir aussi cette réponse stackoverflow.com/questions/898782/…
Noah Sussman
[root @ portal-test bugzilla-4.4.4] # cpan-obsolète -p | cpanm Impossible de localiser la méthode d'objet "new" via le package "LWP :: UserAgent" à / usr / bin / cpan-obsolète ligne 170.
shorif2000
3
Ceux-ci sont anciens (perl date de 2006, LWP de 2005). Idéalement, vous avez besoin d'une version plus récente des deux. Si pour une raison quelconque vous ne pouvez pas faire cela, je mettrais à niveau la version de LWP par version jusqu'à ce que cpanm | cpan fonctionne de manière obsolète. NB. IMPORTANT - Si vous utilisez le Perl installé par CentOS, n'utilisez pas CPAN ou CPANMINUS avec ceux-ci! Ne jamais mélanger avec les packages OS !! À la place, utilisez Perlbrew pour brasser votre propre perl (puis utilisez cpanminus, etc.).
draegtun
1
J'aime ces solutions parce que vous pouvez facilement exécuter d' cpan-outdated -pabord pour voir ce qu'il va faire avant d'exécuter réellement les mises à niveau. On ne sait pas comment faire une course à sec aveccpan upgrade
Stephen Ostermiller
51

Une manière simple de mettre à niveau tous les packages Perl (modules CPAN) est la suivante:

cpan upgrade /(.*)/

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

Michael Armbruster
la source
8
D'accord, ce n'est pas aussi cool que cpanminus, mais au moins vous n'avez rien à télécharger pour que cela fonctionne.
David W.
13
Pour ceux qui ont des problèmes avec cette commande; Essayez d'exécuter le shell cpan via cpan, puis exécutez le upgrade /(.*)/dans le shell cpan.
earthmeLon
33

Pour Strawberry Perl, essayez:

cpan -u
Denis Howe
la source
4
Pour Perl standard aussi. De la page de manuel:-u Upgrade all installed modules. Blindly doing this can really break things, so keep a backup.
Chloe
18

upgrade

BTW il y a une helpcommande.

MUSIQUE
la source
18

Essayer perl -MCPAN -e "upgrade /(.\*)/" . Ça fonctionne bien pour moi.

Matthias Munz
la source