Как обновить все мои модули 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

Кстати: если вы используете, perlbrewто вам нужно будет повторить это для каждого Perl, который вы установили под ним.

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

draegtun
источник
4
зачем использовать такие дополнительные инструменты, пока есть встроенное решение (см. второй ответ)?
2012 г.
3
«Зачем использовать такие дополнительные инструменты» Хотя cpanimus НЕ решает проблему с OP, он решает проблему CPAN, требуя от вас ввода Enter и / или ввода [y] es. Afaict вы не можете надежно подавить это поведение с ванильным CPAN. Это становится важным, как только задействуется какой-либо сервер cron или CI и / или если вы хотите иметь возможность начать обновление с уверенностью, что оно не зависнет, пока вы не пьете кофе (что, по моему опыту, часто бывает с ванильным CPAN) См. также этот ответ stackoverflow.com/questions/898782/…
Ноа Суссман
[root @ portal-test bugzilla-4.4.4] # cpan-устаревший -p | cpanm Не удается найти метод объекта "new" через пакет "LWP :: UserAgent" в строке / usr / bin / cpan-устаревшей 170.
shorif2000
3
Это старые (Perl датируется 2006 г., LWP с 2005 г.). В идеале вам нужна более новая версия обоих. Если по какой-то причине вы не можете сделать это, я буду обновлять версию LWP до версии, пока у вас не заработает устаревшая cpanm | cpan. NB. ВАЖНО! Если вы используете Perl, установленный в CentOS, не используйте CPAN или CPANMINUS вместе с ними! Никогда не смешивайте с пакетами ОС! Вместо этого используйте Perlbrew, чтобы приготовить свой собственный perl (а затем используйте cpanminus и т. Д. В этом).
draegtun
1
Мне нравятся эти решения, потому что вы можете легко запустить cpan-outdated -pсначала, чтобы увидеть, что он собирается делать, прежде чем запускать обновления. Не ясно , как сделать всухую сcpan upgrade
Стивен Ostermiller
51

Простой способ обновить все пакеты Perl (модули CPAN) заключается в следующем:

cpan upgrade /(.*)/

cpan распознает регулярное выражение, подобное этому, и обновит / обновит все установленные пакеты.

Майкл Армбрустер
источник
8
Хорошо, это не так прохладно , как cpanminus, но , по крайней мере , вам не нужно ничего скачивать , чтобы получить эту работу.
Дэвид В.
13
Для тех, у кого проблемы с этой командой; Попробуйте запустить оболочку cpan через 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.
Хлоя
18

Попробуй perl -MCPAN -e "upgrade /(.\*)/". Он отлично работает для меня.

Матиас Мунц
источник