Wie aktualisiere ich alle meine CPAN-Module auf die neuesten Versionen?

136

Wie aktualisiere ich alle meine CPAN-Module auf die neuesten Versionen?

David B.
quelle

Antworten:

145

Eine alternative Methode zur Verwendung upgradeaus der Standard-CPAN-Shell ist die Verwendung von cpanminusund cpan-outdated.

Diese sind so einfach und flink zu bedienen, dass ich kaum wieder auf die CPAN-Shell zurückgreifen kann. Um alle Ihre Module auf einmal zu aktualisieren, lautet der Befehl:

cpan-outdated -p | cpanm

Ich empfehle Ihnen, cpanminuswie in den Dokumenten beschrieben zu installieren :

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

Installieren Sie dann cpan-outdatedzusammen mit allen anderen CPAN-Modulen Folgendes cpanm:

cpanm App::cpanoutdated

Übrigens: Wenn Sie verwenden, müssen perlbrewSie dies für jedes Perl wiederholen, das Sie darunter installiert haben.

Mehr über cpanminusund cpan-outdatedauf den Github-Repos erfahren Sie hier:

draegtun
quelle
4
Warum solche zusätzlichen Tools verwenden, während es eine integrierte Lösung gibt (siehe zweite Antwort)?
eav
3
"Warum solche zusätzlichen Tools verwenden?" Obwohl dies außerhalb des Bereichs der OP-Frage liegt, löst cpanimus das Problem, dass CPAN Sie auffordert, die Eingabetaste zu drücken und / oder [y] es einzugeben. Allerdings können Sie dieses Verhalten mit Vanille-CPAN nicht zuverlässig unterdrücken. Dies wird wichtig, sobald ein Cron- oder CI-Server beteiligt ist und / oder wenn Sie ein Upgrade mit der Gewissheit starten möchten, dass es nicht hängen bleibt, wenn Sie Kaffee trinken (was meiner Erfahrung nach der Fall ist) häufig der Fall mit Vanille CPAN) Siehe auch diese Antwort stackoverflow.com/questions/898782/…
Noah Sussman
[root @ portal-test bugzilla-4.4.4] # cpan-veraltet -p | cpanm Objektmethode "neu" kann über Paket "LWP :: UserAgent" in / usr / bin / cpan-veraltete Zeile 170 nicht gefunden werden.
shorif2000
3
Diese sind alt (Perl stammt aus dem Jahr 2006, LWP aus dem Jahr 2005). Idealerweise benötigen Sie eine neuere Version von beiden. Wenn Sie dies aus irgendeinem Grund nicht tun können, würde ich LWP Version für Version aktualisieren, bis cpanm | cpan-veraltet funktioniert. NB. WICHTIG - Wenn Sie das von CentOS installierte Perl verwenden, verwenden Sie mit diesen kein CPAN oder CPANMINUS! Niemals mit OS-Paketen mischen !! Verwenden Sie stattdessen Perlbrew, um Ihr eigenes Perl zu brauen (und verwenden Sie dann cpanminus usw.).
Draegtun
1
Ich mag diese Lösungen, weil Sie einfach cpan-outdated -pzuerst ausführen können, um zu sehen, was sie tun werden, bevor Sie die Upgrades tatsächlich ausführen. Es ist nicht klar, wie man einen Trockenlauf mitcpan upgrade
Stephen Ostermiller
51

Eine einfache Möglichkeit, alle Perl-Pakete (CPAN-Module) zu aktualisieren, ist die folgende:

cpan upgrade /(.*)/

cpan erkennt den regulären Ausdruck wie folgt und aktualisiert / aktualisiert alle installierten Pakete.

Michael Armbruster
quelle
8
Okay, das ist nicht so cool wie cpanminus, aber zumindest müssen Sie nichts herunterladen, damit dies funktioniert.
David W.
13
Für diejenigen, die Probleme mit diesem Befehl haben; Versuchen Sie, die cpan-Shell über auszuführen cpan, und führen Sie dann die upgrade /(.*)/in der cpan-Shell aus.
EarthmeLon
33

Versuchen Sie für Strawberry Perl:

cpan -u
Denis Howe
quelle
4
Auch für normales Perl. Von der Manpage:-u Upgrade all installed modules. Blindly doing this can really break things, so keep a backup.
Chloe
18

upgrade

Übrigens gibt es einen helpBefehl.

musiKk
quelle
18

Versuchen Sie es perl -MCPAN -e "upgrade /(.\*)/". Es funktioniert gut für mich.

Matthias Munz
quelle