2010-09-16 10 views

Odpowiedz

121

Alternatywną metodą korzystania z upgrade z domyślnej powłoki CPAN jest użycie cpanminus i cpan-outdated.

Są one tak łatwe, że rzadko kiedy wracam do powłoki CPAN. Aby uaktualnić wszystkie moduły w jednym zamachem jest:

cpan-outdated -p | cpanm 


polecam zainstalować cpanminus jak docs opisać:

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

a następnie zainstalować cpan-outdated wraz ze wszystkimi innymi modułami CPAN korzystających cpanm:

cpanm App::cpanoutdated 

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

Możesz dowiedzieć się więcej na temat cpanminus i cpan-outdated w repo GitHub tutaj:

+3

po co używać takich dodatkowych narzędzi, gdy jest wbudowane rozwiązanie (patrz druga odpowiedź)? – eav

+3

"Dlaczego używać takich dodatkowych narzędzi" Chociaż jest poza zakresem pytania PO, cpanimus DOES rozwiązuje problem CPAN, prosząc o naciśnięcie Enter i/lub wpisanie [y] es. Afaict nie można _niepewnie_ tłumić tego zachowania za pomocą wanilii CPAN. Staje się to ważne, gdy tylko jakiś serwer cron lub CI jest zaangażowany i/lub jeśli chcesz rozpocząć aktualizację z ufnością, że nie zawiesi się, gdy będziesz dostawać kawę (co z mojego doświadczenia wynika często w przypadku wanilii CPAN) Zobacz także tę odpowiedź http://stackoverflow.com/questions/898782/how-do-i-tell-cpan-to-install-all-dependencies –

+0

[root @ portal-test bugzilla-4.4 .4] # cpan-outdated -p | cpanm Nie można zlokalizować metody obiektu "nowy" przez pakiet "LWP :: UserAgent" w/usr/bin/cpan-nieaktualna linia 170. – shorif2000

41

łatwy sposób zaktualizować wszystkie pakiety Perl (moduły CPAN) jest w następujący sposób:

cpan upgrade /(.*)/ 

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

+5

Dobra, to nie jest takie _cool_ jako' cpanminus', ale przynajmniej nie musisz niczego pobierać, aby to działało. –

+2

Wybiór regularny nie jest nawet potrzebny. + – TimZaman

+0

to nie działa – shorif2000

23

Dla Strawberry Perl, spróbuj:

cpan -u 
+0

To załatwiło sprawę! Twoje zdrowie. –

+3

Działa również na zwykły perl (przynajmniej w Linuksie). – ismail

+2

Również dla zwykłego Perla. Ze strony podręcznika: '-u Uaktualnij wszystkie zainstalowane moduły. Ślepe robienie tego może naprawdę załamać rzeczy, więc zachowaj kopię zapasową. " – Chloe

15

Spróbuj perl -MCPAN -e "upgrade /(.\*)/". Działa to dobrze dla mnie.

Powiązane problemy