Як оновити всі мої модулі CPAN до їх останніх версій?


136

Як оновити всі мої модулі CPAN до їх останніх версій?

Відповіді:


145

Альтернативним методом використання upgradeз оболонки CPAN за замовчуванням є використання cpanminusта cpan-outdated.

Це настільки просто та спритно у використанні, що я навряд чи повернувся до оболонки CPAN. Щоб оновити всі свої модулі за один раз, команда:

cpan-outdated -p | cpanm

Я рекомендую вам встановити cpanminus як описують документи:

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

А потім встановити cpan-outdatedразом з усіма іншими модулями CPAN за допомогоюcpanm :

cpanm App::cpanoutdated

BTW: Якщо ви користуєтесь, perlbrewвам потрібно буде повторити це для кожного Perl, який ви встановили під ним.

Ви можете дізнатися більше про cpanminusтаcpan-outdated в репозиторіях GitHub тут:


4
навіщо використовувати такі додаткові інструменти, хоча існує вбудоване рішення (див. другу відповідь)?
eav

3
"навіщо використовувати такі додаткові інструменти" Хоча це не виходить за рамки питання про ОП, cpanimus НЕ вирішує проблему CPAN з проханням натиснути Enter та / або ввести [y] es. Афакт ви не можете надійно придушити таку поведінку за допомогою ванільного CPAN. Це стає важливим, як тільки задіяний будь-який cron або сервер CI, і / або якщо ви хочете мати можливість почати оновлення з впевненістю, що він не зависне, поки ви не будете отримувати каву (що, на мій досвід, це часто трапляється з ванільним CPAN) Дивіться також цю відповідь stackoverflow.com/questions/898782/…
Ной Суссман

[root @ portal-test bugzilla-4.4.4] # cpan-застарілий -p | cpanm Неможливо знайти об'єктний метод "новий" через пакет "LWP :: UserAgent" за адресою / usr / bin / cpan-застарілий 170.
shorif2000

3
Це старі часи (perl датується з 2006, LWP з 2005). В ідеалі вам потрібна нова версія обох. Якщо з якихось причин ви не можете цього зробити, я б оновив версію LWP до версії, поки ви не застаріли cpanm | cpan-застарілою. NB. ВАЖЛИВО - Якщо ви використовуєте встановлений PerOS PerOS, тоді не використовуйте CPAN або CPANMINUS з цими! Ніколи не змішуйте з пакетами ОС !! Замість цього використовуйте Perlbrew, щоб заварювати свій власний perl (а потім використовувати cpanminus тощо у цьому).
draegtun

1
Мені подобаються такі рішення, тому що ви можете легко запустити cpan-outdated -pперший, щоб побачити, що він буде робити, перш ніж реально запустити оновлення. Незрозуміло, як зробити сухий бігcpan upgrade
Стівен Остерміллер

51

Простий спосіб оновлення всіх пакетів Perl (модулів CPAN) полягає в наступному:

cpan upgrade /(.*)/

cpan розпізнає такий регулярний вираз і оновить / оновить усі встановлені пакети.


8
Добре, це не так прохолодно , як cpanminus, але , по крайней мере , вам не потрібно нічого завантажувати , щоб отримати цю роботу.
David W.

13
Для тих, хто має проблеми з цією командою; Спробуйте запустити оболонку cpan via cpan, а потім запустіть її upgrade /(.*)/в оболонці cpan.
earthmeLon

33

Для полуничного Perl спробуйте:

cpan -u

4
Для регулярних Perl теж. Зі сторінки чоловіка:-u Upgrade all installed modules. Blindly doing this can really break things, so keep a backup.
Хлоя,


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.