Jak zaktualizować wszystkie moje moduły CPAN do ich najnowszych wersji?

136

Jak zaktualizować wszystkie moje moduły CPAN do ich najnowszych wersji?

David B.
źródło

Odpowiedzi:

145

Alternatywną metodą do używania upgradez domyślnej powłoki CPAN jest użycie cpanminusi cpan-outdated.

Są tak łatwe i zwinne w użyciu, że prawie nigdy nie wracam do powłoki CPAN. Aby zaktualizować wszystkie moduły za jednym razem, polecenie brzmi:

cpan-outdated -p | cpanm

Zalecam instalację zgodnie cpanminusz opisem w dokumentacji:

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

A następnie zainstaluj cpan-outdatedrazem ze wszystkimi innymi modułami CPAN za pomocą cpanm:

cpanm App::cpanoutdated

BTW: Jeśli używasz perlbrew, będziesz musiał powtórzyć to dla każdego Perla, który zainstalowałeś pod nim.

Możesz dowiedzieć się więcej na temat cpanminusi cpan-outdatedna repo GitHub tutaj:

draegtun
źródło
4
po co używać takich dodatkowych narzędzi, skoro istnieje wbudowane rozwiązanie (patrz druga odpowiedź)?
eav
3
„po co używać takich dodatkowych narzędzi” Chociaż jest to poza zakresem pytania OP, cpanimus ROZWIĄZUJE problem CPAN prosząc o naciśnięcie Enter i / lub wpisanie [y] es. Nie możesz niezawodnie stłumić tego zachowania za pomocą waniliowego CPAN. Staje się to ważne, gdy tylko w grę wchodzi dowolny rodzaj crona lub serwera CI i / lub jeśli chcesz mieć możliwość rozpoczęcia aktualizacji z pewnością, że nie zawiesza się, gdy jesteś poza domem przy robieniu kawy (co z mojego doświadczenia często tak jest z waniliowym CPAN) Zobacz także tę odpowiedź stackoverflow.com/questions/898782/…
Noah Sussman
[root @ portal-test bugzilla-4.4.4] # cpan-nieaktualne -p | cpanm Nie można zlokalizować metody obiektu „new” za pośrednictwem pakietu „LWP :: UserAgent” w / usr / bin / cpan-nieaktualna linia 170.
shorif2000
3
Te są stare (perl pochodzi z 2006 roku, LWP z 2005 roku). Idealnie potrzebujesz nowszej wersji obu. Jeśli z jakiegoś powodu nie możesz tego zrobić, zaktualizowałbym wersję LWP według wersji, aż cpanm | cpan-nieaktualne działa. NB. WAŻNE - Jeśli używasz Perla z zainstalowanym CentOSem, nie używaj z nimi CPAN ani CPANMINUS! Nigdy nie mieszaj z pakietami OS !! Zamiast tego użyj Perlbrew do uwarzenia własnego perla (a następnie użyj w nim cpanminus itp.).
draegtun
1
Podoba mi się to rozwiązanie, ponieważ możesz łatwo uruchomić cpan-outdated -pnajpierw, aby zobaczyć, co zrobi, zanim faktycznie uruchomisz aktualizacje. Nie jest jasne, jak zrobić cpan upgrade
próbny
51

Prosty sposób na aktualizację wszystkich pakietów Perla (modułów CPAN) jest następujący:

cpan upgrade /(.*)/

cpan rozpozna takie wyrażenie regularne i zaktualizuje / zaktualizuje wszystkie zainstalowane pakiety.

Michael Armbruster
źródło
8
Okay, to nie jest tak fajne, jak cpanminus, ale przynajmniej nie musisz niczego pobierać, aby to zadziałało.
David W.,
13
Dla tych, którzy mają problemy z tym poleceniem; Spróbuj uruchomić powłokę cpan za pośrednictwem cpan, a następnie uruchom upgrade /(.*)/w powłoce cpan.
earthmeLon
33

W przypadku Strawberry Perl spróbuj:

cpan -u
Denis Howe
źródło
4
Dla zwykłego Perla też. Ze strony podręcznika:-u Upgrade all installed modules. Blindly doing this can really break things, so keep a backup.
Chloe,
18

upgrade

BTW jest helppolecenie.

musiKk
źródło
18

Spróbuj perl -MCPAN -e "upgrade /(.\*)/". U mnie działa dobrze.

Matthias Munz
źródło