Làm cách nào để hoàn tác cài đặt ngẫu nhiên tất cả các mô-đun Perl?


8

Tôi đã cố nâng cấp các mô-đun Perl của mình thông qua CPAN, nhưng tôi không cung cấp tên regex / mô-đun để nâng cấp : perl -MCPAN -e 'upgrade'; Tôi chỉ có thể giả sử điều tồi tệ nhất (dường như được hỗ trợ bởi đầu ra của perldoc perllocal), tức là tất cả các mô-đun Perl từ CPAN đang cài đặt.

Làm thế nào tôi có thể hoàn tác mớ hỗn độn này? Tôi cho rằng tôi có thể loại bỏ /usr/local/share/perl, nhưng ý nghĩa của điều đó là gì?

Chỉnh sửa: Tôi vẫn còn 95% dung lượng trống trên ổ cứng, vì vậy đó không phải là vấn đề quá lớn. Tôi chỉ không muốn nhiều sự lộn xộn không cần thiết. Tôi đang xem xét rm'thư mục đó, thực hiện dpkg --purge perlvà làm lại apt-getquá trình cài đặt và CPAN. Nhưng nó có thực sự cần thiết hay tôi chỉ có thể loại bỏ các mô-đun không cần thiết khỏi /usr/local/share/perl?


Một số người cảm thấy thực sự không nên xóa trực tiếp các tệp hệ thống (và thư mục). Có thể tốt hơn để sử dụng những thứ như apt-gethoặc Synaptic để hệ thống xóa triệt để và cập nhật cơ sở dữ liệu cần thiết.

4
@ vasa1 Các mô-đun Perl được cài đặt theo CPAN không được theo dõi theo cách đó. Thư mục nơi các mô-đun cư trú có lẽ cần phải bị xóa. Hoặc người ta phải xóa chúng một cách thủ công thông qua CPAN và đó là một cr * pshoot nếu họ sẽ tuân theo chỉ thị gỡ cài đặt, hoặc thậm chí là một make uninstalllệnh. Thật không may, một hệ thống quản lý gói hoàn toàn khác. stackoverflow.com/questions/2626449/ Mạnh
Kevin Bowen

@maggotbrain, cảm ơn! Tôi không biết điều đó. (Perl duy nhất tôi sử dụng cho những thứ nhỏ nhặt đi kèm với HĐH.)

Câu trả lời:


5

Nhìn vào điều này gần hơn một chút, tôi không nghĩ rằng bạn cần hoặc nên xóa bất kỳ thư mục hoặc tệp nào trên hệ thống của mình.

Chạy lệnh perl -MCPAN -e 'upgrade'từ dòng lệnh sẽ không cài đặt các mô-đun bổ sung vào hệ thống của bạn.

Nó sẽ chỉ cố gắng nâng cấp các mô-đun đã cài đặt, thông qua hệ thống quản lý gói CPAN chứ không thông qua Synaptic .

Điều này tương tự như chạy lệnh 'r' và sau đó chạy lệnh nâng cấp tại cpan[1]>dấu nhắc. Xem ở đây .

CPAN và Synaptic là hai hệ thống quản lý gói riêng biệt và khác biệt.

Điều này sẽ không cài đặt tất cả các mô-đun Perl có thể từ CPAN. Nó cũng sẽ không sửa đổi gói hệ thống dB hiện có. Vì vậy, bạn chắc chắn có thể cuộn lại này một cách an toàn.

Tuy nhiên, điều này vẫn tiềm ẩn rủi ro nếu một ứng dụng hoặc hệ thống của bạn phụ thuộc vào một phiên bản cụ thể của mô-đun Perl.

Nếu bạn đã làm gián đoạn quá trình nâng cấp, rất có thể bạn đã tránh làm hại hệ thống của mình.

Tùy chọn khôi phục:

Từ một dòng lệnh, bắt đầu cpanvà chạy lệnh r để xem danh sách các mô-đun đã cài đặt và các bản nâng cấp có sẵn. Ví dụ, đây là đầu ra viết tắt từ cpan của tôi:

cpan[7]> r

Package namespace         installed    latest  in CPAN file
App::Cpan                    1.5701      1.61  BDFOY/App-Cpan-1.61.tar.gz
DBD::mysql                    4.020     4.022  CAPTTOFU/DBD-mysql-4.022.tar.gz
DBI                           1.616     1.623  TIMB/DBI-1.623.tar.gz
DB_File                       1.821     1.827  PMQS/DB_File-1.827.tar.gz
Error                       0.17010   0.17019  SHLOMIF/Error-0.17019.tar.gz
Eval::Closure                  0.06      0.08  DOY/Eval-Closure-0.08.tar.gz
....

Lấy Eval::Closuremô-đun, cho ví dụ này. Giả sử bạn để perl -MCPAN -e 'upgrade'lệnh hoàn thành và bây giờ bạn đã cài đặt phiên bản 0.08.

Nhìn vào Synaptic, trong trường hợp này, nó sẽ cho thấy phiên bản mới nhất trong kho lưu trữ vẫn sẽ là 0,06 (cụ thể là 0,06-1, trong trường hợp của tôi).

Bạn có thể quay lại phiên bản hệ thống của mình bằng cách chạy lệnh sau:

sudo apt-get install --reinstall libeval-closure-perl

Nếu bạn đã cài đặt bất kỳ mô-đun Perl nào theo cách thủ công và muốn đưa chúng trở lại phiên bản trước đó, bạn sẽ cần tải xuống lại (từ source.cpan.org hoặc các nơi khác) và cài đặt lại chúng theo cách thủ công.

Để tóm tắt: Nâng cấp các mô-đun Perl trong CPAN sẽ không ảnh hưởng đến kho lưu trữ hệ thống của bạn.

May mắn nhất. Đừng hoảng sợ.


Câu trả lời tuyệt vời và kỹ lưỡng! "Đừng hoảng sợ" là cụm từ chính ở đây. Tôi đã thấy rất nhiều đầu ra và đọc về việc sử dụng các đối số để chỉ định mô-đun, vì vậy tôi đã nhanh chóng đưa ra kết luận. Tôi đã rất ngạc nhiên khi thấy rằng tôi chỉ sử dụng hầu hết mọi không gian HD, nhưng tôi vẫn thấy một số mô-đun mà tôi không nhận ra (có thể là do phụ thuộc). Thật tốt khi biết điều này không đòi hỏi phải làm việc cho tôi!
paulrehkugler

0

Tôi khuyên bạn nên thực hiện: apt-get remove <installed-packages> && apt-get autoremove(để xóa phụ thuộc) && apt-get purge <installed-packages>(để xóa các tệp cấu hình còn lại), sau đó bạn có thể xóa các thư mục mà bạn không cần, nhưng nó đã được thực hiện cho bạn :)


2
OP đã làm điều này thông qua CPAN. Một cuộc thanh trừng sẽ không giúp ích gì vì các mô-đun này không thuộc quản lý gói.
Kevin Bowen
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.