Como atualizo todos os meus módulos CPAN para as versões mais recentes?

136

Como atualizo todos os meus módulos CPAN para as versões mais recentes?

David B
fonte

Respostas:

145

Um método alternativo para usar upgradeno shell CPAN padrão é usar cpanminuse cpan-outdated.

Estes são tão fáceis e ágeis de usar que quase nunca volto ao shell do CPAN. Para atualizar todos os seus módulos de uma só vez, o comando é:

cpan-outdated -p | cpanm

Eu recomendo que você instale cpanminuscomo os documentos descrevem:

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

E instale cpan-outdatedjunto com todos os outros módulos CPAN usando cpanm:

cpanm App::cpanoutdated

BTW: Se você estiver usando perlbrew, será necessário repetir isso para todos os Perl instalados sob ele.

Você pode descobrir mais sobre cpanminuse cpan-outdatednos repositórios do Github aqui:

draegtun
fonte
4
por que usar essas ferramentas extras enquanto há uma solução integrada (consulte a segunda resposta)?
eav
3
"por que usar essas ferramentas extras" Embora esteja fora do escopo da pergunta do OP, o cpanimus resolve o problema do CPAN pedindo que você pressione Enter e / ou digite [y] es. É certo que você não pode suprimir de forma confiável esse comportamento com o CPAN de baunilha. Isso se torna importante assim que qualquer tipo de cron ou servidor de CI estiver envolvido e / ou se você quiser iniciar uma atualização com a confiança de que ela não será interrompida enquanto você estiver tomando café (o que, na minha experiência, é frequentemente o caso com CPAN de baunilha) Veja também esta resposta stackoverflow.com/questions/898782/…
Noah Sussman
[root @ portal-test bugzilla-4.4.4] # cpan-desatualizado -p | cpanm Não é possível localizar método de objeto "nova" via pacote "LWP :: UserAgent" em / usr / bin / linha cpan-ultrapassada 170.
shorif2000
3
Essas são antigas (datas de perl de 2006, LWP de 2005). Idealmente, você precisa de uma versão mais recente de ambos. Se, por algum motivo, você não puder fazer isso, eu atualizaria a versão LWP por versão até você ter o funcionamento desatualizado do cpanm | cpan. NB. IMPORTANTE - Se você estiver usando o PerOS instalado no CentOS, não use o CPAN ou o CPANMINUS com estes! Nunca misture com pacotes de SO! Em vez disso, use o Perlbrew para preparar seu próprio perl (e use o cpanminus etc.).
draegtun
1
Gosto dessas soluções porque você pode executar facilmente cpan-outdated -pprimeiro para ver o que vai fazer antes de executar as atualizações. Não está claro como fazer uma corrida seca comcpan upgrade
Stephen Ostermiller
51

Uma maneira fácil de atualizar todos os pacotes Perl (módulos CPAN) é a seguinte:

cpan upgrade /(.*)/

O cpan reconhecerá a expressão regular como esta e atualizará / atualizará todos os pacotes instalados.

Michael Armbruster
fonte
8
Ok, isso não é tão legal quanto cpanminus, mas pelo menos você não precisa baixar nada para que isso funcione.
27412 David W.
13
Para aqueles que têm problemas com este comando; Tente executar o cpan shell via cpane, em seguida, execute o upgrade /(.*)/no shell cpan.
earthmeLon
33

Para Strawberry Perl, tente:

cpan -u
Denis Howe
fonte
4
Para Perl regular também. Na página de manual:-u Upgrade all installed modules. Blindly doing this can really break things, so keep a backup.
Chloe
18

upgrade

BTW, há um helpcomando.

musiKk
fonte
18

Tente perl -MCPAN -e "upgrade /(.\*)/". Isso funciona bem para mim.

Matthias Munz
fonte