Bagaimana cara memperbarui semua modul CPAN saya ke versi terbaru?

136

Bagaimana cara memperbarui semua modul CPAN saya ke versi terbaru?

David B
sumber

Jawaban:

147

Metode alternatif untuk menggunakan upgradedari shell CPAN default adalah dengan menggunakan cpanminusdan cpan-outdated.

Ini sangat mudah dan gesit untuk digunakan sehingga saya hampir tidak pernah kembali ke shell CPAN. Untuk meningkatkan semua modul Anda sekaligus, perintahnya adalah:

cpan-outdated -p | cpanm

Saya sarankan Anda menginstal cpanminusseperti yang dijelaskan dokumen:

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

Dan kemudian instal cpan-outdatedbersama dengan semua modul CPAN lainnya menggunakan cpanm:

cpanm App::cpanoutdated

BTW: Jika Anda menggunakan perlbrewmaka Anda perlu mengulanginya untuk setiap Perl yang telah Anda instal di bawahnya.

Anda dapat mengetahui lebih lanjut tentang cpanminusdan cpan-outdateddi repo Github di sini:

draegtun.dll
sumber
4
mengapa menggunakan alat tambahan seperti itu sementara ada solusi bawaan (lihat jawaban kedua)?
eav
4
"mengapa menggunakan alat tambahan seperti itu" Meskipun berada di luar cakupan pertanyaan OP, cpanimus TIDAK memecahkan masalah CPAN yang meminta Anda untuk menekan Enter dan / atau mengetik [y] es. Afaict Anda tidak dapat secara andal menekan perilaku ini dengan vanilla CPAN. Ini menjadi penting segera setelah semua jenis cron atau server CI terlibat, dan / atau jika Anda ingin dapat memulai peningkatan dengan keyakinan itu tidak akan hang saat Anda keluar mendapatkan kopi (yang menurut pengalaman saya adalah sering terjadi pada vanilla CPAN) Lihat juga jawaban ini stackoverflow.com/questions/898782/…
Noah Sussman
[root @ portal-test bugzilla-4.4.4] # cpan-outdated -p | cpanm Tidak dapat menemukan metode objek "baru" melalui paket "LWP :: UserAgent" di / usr / bin / cpan-outdated baris 170.
shorif2000
3
Itu sudah lama (perl tanggal dari 2006, LWP dari 2005). Idealnya Anda membutuhkan versi yang lebih baru dari keduanya. Jika karena alasan tertentu Anda tidak dapat melakukan ini maka saya akan memutakhirkan versi LWP demi versi sampai Anda mendapatkan cpanm | cpan-outdated bekerja. NB. PENTING - Jika Anda menggunakan Perl yang terinstal CentOS maka jangan gunakan CPAN atau CPANMINUS dengan ini! Jangan pernah bercampur dengan paket OS !! Sebagai gantinya gunakan Perlbrew untuk membuat perl Anda sendiri (dan kemudian gunakan cpanminus dll di dalamnya).
draegtun
1
Saya suka solusi ini karena Anda dapat dengan mudah menjalankannya cpan-outdated -pterlebih dahulu untuk melihat apa yang akan dilakukannya sebelum benar-benar menjalankan peningkatan. Tidak jelas bagaimana melakukan dry run dengancpan upgrade
Stephen Ostermiller
51

Cara mudah untuk mengupgrade semua paket Perl (modul CPAN) adalah dengan cara berikut:

cpan upgrade /(.*)/

cpan akan mengenali ekspresi reguler seperti ini dan akan memperbarui / meningkatkan semua paket yang diinstal.

Michael Armbruster
sumber
9
Oke, ini tidak keren seperti cpanminus, tapi setidaknya Anda tidak perlu men-download apa saja untuk mendapatkan ini untuk bekerja.
David W.
14
Bagi mereka yang mengalami masalah dengan perintah ini; Coba jalankan cpan shell via cpan, lalu jalankan upgrade /(.*)/di shell cpan.
earthmeLon
35

Untuk Strawberry Perl, coba:

cpan -u
Denis Howe
sumber
5
Juga untuk Perl biasa. Dari halaman manual:-u Upgrade all installed modules. Blindly doing this can really break things, so keep a backup.
Chloe
18

upgrade

BTW ada helpperintah.

musiKk
sumber
18

Coba perl -MCPAN -e "upgrade /(.\*)/". Ini bekerja dengan baik untuk saya.

Matthias Munz
sumber