Bagaimana cara membatalkan instalasi semua modul Perl yang tidak disengaja?

8

Saya mencoba untuk memutakhirkan modul Perl saya melalui CPAN, tetapi saya tidak menyediakan nama regex / modul untuk memutakhirkan perl -MCPAN -e 'upgrade':; Saya hanya dapat mengasumsikan yang terburuk (yang tampaknya didukung oleh output dari perldoc perllocal), yaitu semua modul Perl yang dipasang oleh CPAN.

Bagaimana saya bisa membatalkan kekacauan ini? Saya kira saya bisa menghapus /usr/local/share/perl, tetapi apa implikasinya?

Sunting: Saya masih memiliki ruang kosong 95% pada hard drive saya, jadi ini bukan masalah besar. Aku hanya tidak ingin banyak kekacauan yang tidak perlu. Saya sedang mempertimbangkan rmdirektori itu, melakukan dpkg --purge perldan mengulang apt-getproses instalasi dan CPAN. Tetapi apakah itu benar-benar perlu, atau bisakah saya menghapus modul yang tidak perlu dari /usr/local/share/perl?

paulrehkugler
sumber
Beberapa orang merasa itu bukan ide yang baik untuk langsung menghapus file sistem (dan folder). Mungkin lebih baik menggunakan hal-hal seperti apt-getatau Synaptic sehingga sistem melakukan penghapusan secara menyeluruh dan memperbarui database yang diperlukan.
4
@ vasa1 Perl modul yang dipasang di bawah CPAN tidak dilacak dengan cara itu. Direktori tempat modul berada mungkin perlu dihapus. Atau seseorang harus menghapusnya secara manual melalui CPAN dan ini adalah cr * pshoot jika mereka akan mematuhi perintah uninstall, atau bahkan make uninstallperintah. Sayangnya sistem manajemen paketnya sangat berbeda. stackoverflow.com/questions/2626449/…
Kevin Bowen
@maggotbrain, terima kasih! Saya tidak tahu itu. (Satu-satunya Perl yang saya gunakan untuk hal-hal kecil datang dengan OS.)

Jawaban:

5

Melihat ini sedikit lebih dekat, saya tidak berpikir Anda perlu atau harus menghapus direktori atau file apa pun di sistem Anda.

Menjalankan perintah perl -MCPAN -e 'upgrade'dari baris perintah tidak akan menginstal modul tambahan ke sistem Anda.

Itu hanya akan mencoba untuk meningkatkan modul yang diinstal, melalui sistem manajemen paket CPAN, dan tidak melalui Synaptic .

Ini mirip dengan menjalankan perintah 'r' dan kemudian menjalankan perintah upgrade pada cpan[1]>prompt. Lihat di sini .

CPAN dan Synaptic adalah dua sistem manajemen paket yang terpisah dan berbeda.

Ini tidak akan menginstal semua modul Perl yang mungkin dari CPAN. Juga tidak akan memodifikasi paket sistem yang ada dB. Jadi, Anda pasti dapat mengembalikan ini dengan aman.

Namun, ini masih berpotensi berisiko jika aplikasi atau sistem Anda bergantung pada versi tertentu dari modul Perl.

Jika Anda telah menghentikan proses upgrade, kemungkinan besar Anda terhindar dari merugikan sistem Anda.

Opsi pemulihan:

Dari baris perintah, mulai cpan, dan jalankan perintah r untuk melihat daftar modul yang diinstal dan peningkatan yang tersedia. Sebagai contoh, berikut adalah singkatan dari cpan saya:

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
....

Ambil Eval::Closuremodul, untuk contoh ini. Katakanlah Anda membiarkan perl -MCPAN -e 'upgrade'perintah selesai dan Anda sekarang sudah menginstal versi 0.08.

Melihat Synaptic, dalam hal ini, itu akan menunjukkan bahwa versi terbaru dalam repositori masih akan 0,06 (0,06-1, khususnya, dalam contoh saya).

Anda dapat memutar kembali ke versi sistem Anda, dengan menjalankan perintah berikut:

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

Jika Anda telah memasang modul Perl apa pun secara manual dan ingin mengembalikannya ke versi sebelumnya, Anda perlu mengunduhnya lagi (baik dari source.cpan.org atau di tempat lain), dan menginstalnya secara manual.

Untuk meringkas: Meningkatkan modul Perl dalam CPAN seharusnya tidak mempengaruhi repositori sistem Anda.

Semoga berhasil. Jangan panik.

Kevin Bowen
sumber
Jawaban luar biasa dan menyeluruh! "Jangan panik" adalah frasa kunci di sini. Saya melihat banyak output dan membaca tentang menggunakan argumen untuk menentukan modul, jadi saya mengambil kesimpulan terlalu cepat. Saya telah terkejut untuk menemukan bahwa saya menggunakan hampir setiap ruang HD, tapi aku masih melihat beberapa modul saya tidak mengenali (mungkin karena dependensi). Senang mengetahui ini tidak memerlukan pekerjaan untuk saya!
paulrehkugler
0

Saya akan merekomendasikan melakukan: apt-get remove <installed-packages> && apt-get autoremove(untuk menghapus dependensi) && apt-get purge <installed-packages>(untuk menghapus reman file config) maka Anda dapat menghapus folder yang tidak Anda butuhkan, tetapi harus sudah dilakukan untuk Anda :)

Stefan
sumber
2
OP melakukan ini melalui CPAN. Pembersihan tidak akan membantu karena modul-modul ini tidak berada di bawah manajemen paket.
Kevin Bowen