ฉันจะอัปเดตโมดูล CPAN ทั้งหมดเป็นเวอร์ชันล่าสุดได้อย่างไร


คำตอบ:


147

วิธีอื่นในการใช้upgradeจากเปลือก CPAN เริ่มต้นคือการใช้และcpanminuscpan-outdated

สิ่งเหล่านี้ใช้งานง่ายและว่องไวมากจนแทบไม่เคยกลับไปใช้ CPAN shell เลย ในการอัพเกรดโมดูลทั้งหมดของคุณในครั้งเดียวคำสั่งคือ:

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ที่ repos Github ได้ที่นี่:


4
ทำไมต้องใช้เครื่องมือพิเศษเช่นนี้ในขณะที่มีโซลูชันในตัว (ดูคำตอบที่สอง)
eav

4
"ทำไมต้องใช้เครื่องมือพิเศษเช่นนี้" แม้ว่าจะอยู่นอกขอบเขตของคำถามของ OP แต่ cpanimus แก้ปัญหา CPAN โดยขอให้คุณกด Enter และ / หรือพิมพ์ [y] es Afaict คุณไม่สามารถระงับพฤติกรรมนี้ได้อย่างน่าเชื่อถือด้วย vanilla CPAN สิ่งนี้จะมีความสำคัญทันทีที่มีส่วนเกี่ยวข้องกับเซิร์ฟเวอร์ cron หรือ CI และ / หรือหากคุณต้องการที่จะสามารถเริ่มการอัปเกรดด้วยความมั่นใจจะไม่ค้างในขณะที่คุณไม่ได้รับกาแฟ (ซึ่งจากประสบการณ์ของฉันคือ มักใช้กับ vanilla CPAN) ดูคำตอบนี้ด้วยstackoverflow.com/questions/898782/…
Noah Sussman

[root @ portal-test bugzilla-4.4.4] # cpan-outdated -p | cpanm ไม่พบเมธอดอ็อบเจ็กต์ "ใหม่" ผ่านแพ็คเกจ "LWP :: UserAgent" ที่ / usr / bin / cpan-outdated บรรทัดที่ 170.
shorif2000

3
สิ่งเหล่านี้เก่า (วันที่ perl ตั้งแต่ปี 2549 LWP จากปี 2548) ตามหลักการแล้วคุณต้องการทั้งสองเวอร์ชันที่ใหม่กว่า หากด้วยเหตุผลบางประการที่คุณไม่สามารถทำได้ฉันจะอัปเกรดเวอร์ชัน LWP ตามเวอร์ชันจนกว่าคุณจะใช้ cpanm | cpan ที่ล้าสมัย NB. สำคัญ - หากคุณใช้ CentOS ที่ติดตั้ง Perl อย่าใช้ CPAN หรือ CPANMINUS กับสิ่งเหล่านี้! อย่าผสมกับแพ็คเกจ OS !! ใช้ Perlbrew ในการชง perl ของคุณเองแทน (แล้วใช้ cpanminus เป็นต้นภายในนี้)
draegtun

1
ฉันชอบโซลูชันนี้เพราะคุณสามารถเรียกใช้cpan-outdated -pก่อนเพื่อดูว่ากำลังจะทำอะไรก่อนที่จะดำเนินการอัปเกรดจริง ยังไม่ชัดเจนว่าจะวิ่งแบบแห้งได้อย่างไรcpan upgrade
Stephen Ostermiller

51

วิธีง่ายๆในการอัพเกรดแพ็คเกจ Perl ทั้งหมด (โมดูล CPAN) มีดังต่อไปนี้:

cpan upgrade /(.*)/

cpan จะจดจำนิพจน์ทั่วไปเช่นนี้และจะอัปเดต / อัปเกรดแพ็คเกจทั้งหมดที่ติดตั้ง


9
โอเคมันไม่เจ๋งเท่าcpanminusแต่อย่างน้อยคุณก็ไม่ต้องดาวน์โหลดอะไรเพื่อให้มันใช้งานได้
David W.

14
สำหรับผู้ที่มีปัญหากับคำสั่งนี้ ลองรัน cpan shell ผ่านcpanแล้วรันupgrade /(.*)/ใน cpan shell
earthmeLon



โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.