Làm cách nào để cập nhật tất cả các mô-đun CPAN của tôi lên các phiên bản mới nhất của chúng?


136

Làm cách nào để cập nhật tất cả các mô-đun CPAN của tôi lên các phiên bản mới nhất của chúng?

Câu trả lời:


145

Một phương pháp khác để sử dụng upgradetừ vỏ CPAN mặc định là sử dụng cpanminuscpan-outdated.

Đây là những cách dễ dàng và nhanh nhẹn để sử dụng mà tôi hầu như không bao giờ quay trở lại vỏ CPAN. Để nâng cấp tất cả các mô-đun của bạn trong một lần, lệnh là:

cpan-outdated -p | cpanm

Tôi khuyên bạn nên cài đặt cpanminusnhư các tài liệu mô tả:

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

Và sau đó cài đặt cpan-outdatedcùng với tất cả các mô-đun CPAN khác bằng cách sử dụng cpanm:

cpanm App::cpanoutdated

BTW: Nếu bạn đang sử dụng perlbrewthì bạn sẽ cần phải lặp lại điều này cho mỗi Perl bạn đã cài đặt bên dưới nó.

Bạn có thể tìm hiểu thêm về cpanminuscpan-outdatedtại repos Github tại đây:


4
Tại sao sử dụng các công cụ bổ sung như vậy trong khi có một giải pháp tích hợp (xem câu trả lời thứ hai)?
Eav

3
"tại sao sử dụng các công cụ bổ sung như vậy" Trong khi nó nằm ngoài phạm vi câu hỏi của OP, cpanimus DOES giải quyết vấn đề CPAN yêu cầu bạn nhấn Enter và / hoặc gõ [y] es. Afaict bạn không thể ngăn chặn đáng tin cậy hành vi này với CPAN vanilla. Điều này trở nên quan trọng ngay khi có bất kỳ loại máy chủ cron hoặc CI nào tham gia và / hoặc nếu bạn muốn có thể bắt đầu nâng cấp với sự tự tin nó sẽ không bị treo trong khi bạn ra ngoài uống cà phê (theo kinh nghiệm của tôi là thường là trường hợp với vanilla CPAN) Xem thêm câu trả lời này stackoverflow.com/questions/898782/iêu
Noah Sussman

[root @ Portal-test bugzilla-4.4.4] # cpan-lỗi thời -p | cpanm Không thể định vị phương thức đối tượng "mới" thông qua gói "LWP :: UserAgent" tại / usr / bin / cpan-
out

3
Đó là những cái cũ (perl ngày từ năm 2006, LWP từ năm 2005). Lý tưởng nhất là bạn cần phiên bản mới hơn của cả hai. Nếu vì lý do nào đó bạn không thể làm điều này thì tôi sẽ nâng cấp phiên bản LWP theo phiên bản cho đến khi bạn hoạt động lỗi thời cpanm | cpan. Lưu ý QUAN TRỌNG - Nếu bạn đang sử dụng Perl được cài đặt CentOS thì đừng sử dụng CPAN hoặc CPANMINUS với những thứ này! Không bao giờ trộn lẫn với các gói hệ điều hành !! Thay vào đó, hãy sử dụng Perlbrew để ủ perl của riêng bạn (và sau đó sử dụng cpanminus, v.v. trong phạm vi này).
Drainegtun

1
Tôi thích giải pháp này vì bạn có thể dễ dàng chạy cpan-outdated -ptrước để xem nó sẽ làm gì trước khi thực sự chạy các bản nâng cấp. Không rõ làm thế nào để chạy khô vớicpan upgrade
Stephen Ostermiller

51

Một cách dễ dàng để nâng cấp tất cả các gói Perl (mô-đun CPAN) là cách sau:

cpan upgrade /(.*)/

cpan sẽ nhận ra biểu thức chính quy như thế này và sẽ cập nhật / nâng cấp tất cả các gói được cài đặt.


8
Được rồi, đây không phải là mát mẻ như cpanminus, nhưng ít nhất bạn không cần phải tải về bất cứ điều gì để có được điều này để làm việc.
David W.

13
Đối với những người có vấn đề với lệnh này; Hãy thử chạy cpan shell qua cpan, sau đó chạy upgrade /(.*)/shell cpan.
earthmeLon

33

Đối với Dâu Perl, hãy thử:

cpan -u

4
Đối với Perl thường xuyên quá. Từ trang người đàn ông:-u Upgrade all installed modules. Blindly doing this can really break things, so keep a backup.
Chloe


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.