Pertanyaan Bagaimana cara menghapus dependensi yang direkomendasikan dan disarankan dari paket yang di-uninstall?


saya tahu tentang Bagaimana cara menghapus dependensi paket yang dicopot pemasangannya? dan saya mencoba

apt-get autoremove

tetapi itu tidak menghilangkan dependensi yang direkomendasikan / disarankan oleh paket lain.

Artinya, jika saya menginstal paket X yang merekomendasikan Y, tapi saya tidak menginstal Y, dan kemudian saya menginstal paket Z yang tergantung pada Y. dan kemudian saya lakukan

apt-get remove --auto-remove Z

maka Y tidak secara otomatis dihapus meskipun tidak ada yang bergantung padanya. (X "mengambil" Y, meskipun itu tidak tergantung padanya).


14
2017-09-28 10:33


asal


Bisakah Anda malah mengatakan apa paket yang melakukan ini? - Braiam
Ada banyak contoh, jadi saya mencoba untuk mengekstrak esensi masalah dalam uraian di atas. Anda benar bahwa saya seharusnya juga memasukkan contoh konkret: Pertimbangkan pemasangan texlive-full. Ini menginstal banyak paket font, yang disarankan (tetapi tidak diperlukan) oleh banyak paket yang sudah ada sebelumnya (saya tidak ingat persis yang mana, tapi saya pikir libreoffice yang sudah ada sebelumnya atau matplotlib atau oktaf menyarankan ini). Jadi masalahnya adalah bahwa "apt-get install texlive-full" diikuti dengan "apt-get remove --purge --auto-remove texlive-full" tidak meninggalkan sistem dalam keadaan asli yang sama. - user2809402


Jawaban:


Jika Anda ingin menghapus paket yang direkomendasikan dari sistem Anda, bahkan jika masih ada beberapa paket yang terinstal yang merekomendasikan (atau menyarankan) mereka, letakkan yang berikut ini dalam file /etc/apt/apt.conf.d/99_norecommends (menciptakannya):

APT::Install-Recommends "false";
APT::AutoRemove::RecommendsImportant "false";
APT::AutoRemove::SuggestsImportant "false";

Dokumentasi untuk opsi ini di sini.

Kemudian, langkah selanjutnya harus menghapus semuanya. Jika tidak, luncurkan aptitude, dan ketik g dan g lagi.

Konfigurasi ini juga menonaktifkan pemasangan otomatis dari paket yang direkomendasikan saat menggunakan apt-get. Untuk aptitude itu dapat dilakukan dari konsol GUI, menu Pilihan> Preferensi> "Instal paket yang direkomendasikan secara otomatis" (hapus centang).


12
2018-01-02 19:29



Saya tidak akan merekomendasikan untuk tidak menginstal rekomendasi karena sebagian besar waktu berguna. - Braiam
@Braiam Ini bukan apa yang diminta OP. Komentarmu untuk dia, bukan untukku. - Totor
Saya hanya mengatakan bahwa itu mungkin berlebihan. - Braiam
@Braiam Itulah POV Anda. Saya hidup cukup baik dengan InstallRecommends cacat. Sebagai catatan, itu dinonaktifkan secara default sampai Debian Squeeze dirilis, yaitu sejak Februari 2011 (tidak tahu tentang Ubuntu). Selain itu, Anda mungkin tidak memerlukan konfigurasi yang sama pada server atau pengaturan desktop. - Totor
InstalRecommends: Karena mengapa menginstal 5MB barang yang Anda inginkan, kapan Anda juga dapat menginstal 1GB barang yang tidak Anda inginkan? - Mark K Cowan


apt-get autoremove akan meninggalkan paket "disarankan" dan "disarankan" di belakang. Logikanya sedikit membingungkan, seperti "mungkin ada paket lain yang menggunakannya" (tanpa mendaftar apa pun tentangnya di APT).

Tapi, mengikuti logika yang sama, APT juga bisa menolak untuk menghapus apa pun karena, Anda tidak pernah tahu.

Bagaimanapun, Anda dapat menghapus semua "direkomendasikan" dan "disarankan" paket pada sistem Anda dalam satu perintah, tanpa harus mengubah konfigurasi:

sudo apt-get autoremove -o APT::Autoremove::RecommendsImportant=0 -o APT::Autoremove::SuggestsImportant=0

Namun diperingatkan. Saya melakukan ini pada sistem saya, itu membebaskan banyak ruang, namun saya harus secara manual menginstal ulang beberapa paket untuk mendapatkan kembali fungsionalitas yang hilang, seperti mampu me-mount partisi FAT, misalnya. (exfat-sekering adalah ketergantungan opsional / saran sekering, jika saya ingat dengan baik). Saya akhirnya menginstal ulang semua paket yang disarankan / disarankan untuk menyelamatkan diri dari masalah.

Saya tidak tahu ada cara mudah untuk menentukan bahwa Anda ingin dependensi opsional / disarankan dari paket tertentu dihapus. apt-get tidak menawarkan opsi seperti itu.

Manajer paket lainnya mungkin lebih baik dalam hal ini. Beberapa manajer paket (DNF) memiliki pendekatan "transaksional" terhadap manajemen paket, yang berarti Anda dapat kembali ke titik sebelumnya.


4
2018-01-29 03:52





Sebenarnya perintahnya adalah:

sudo apt-get autoremove <Z>

Tapi ini tipuan! Jika salah satu dependensi memiliki beberapa paket terinstal sebelumnya yang merekomendasikan / menyarankan mereka maka apt tidak akan menghapusnya.

Anda tidak menentukan paket apa, tetapi misalnya, jika saya menginstal plugin IcedTea, itu akan menginstal Java / OpenJRE oleh dependensi. Jika saya menghapusnya menggunakan sudo apt-get autoremove icedtea-7-plugin Anda akan melihat bahwa itu tidak akan menghapus Java / OpenJRE, karena LibreOffice juga menyarankan paket.

Jadi, untuk menghapusnya Anda harus terlalu spesifik tentang paket yang ingin Anda uninstall yang normal autoremovebiasa:

sudo apt-get autoremove <Z> <dependency of Z>

Dengan cara ini Anda bisa yakin paket Anda dihapus.

Anda juga dapat menggunakan deborphan untuk menghapus beberapa dependensi.


0
2017-10-08 14:32



By the way, pemahaman saya dari apt manpage adalah bahwa autoremove tidak mengharapkan nama paket, dan hanya akan membersihkan semua dependensi paket yang tidak diperlukan dalam sistem. Jadi Anda harus melakukan 2 langkah: "apt-get remove Z" diikuti oleh "apt-get autoremove". Kedua langkah ini dapat dilakukan sekaligus dengan "hapus apt-get --auto-remove Z", seperti yang disebutkan dalam pertanyaan awal saya. Tapi seperti yang saya katakan, masalahnya adalah bahwa ada beberapa paket yang tersisa yang tidak dihapus jika mereka disarankan oleh sesuatu yang lain. - user2809402
Ya, Anda menggambarkan masalah saya dengan sempurna. Terima kasih. Tapi, sayangnya, Anda belum menyelesaikannya, karena saya tidak ingin pergi ke /var/log/apt/history.log dan mencari semua paket Y yang dipasang beberapa bulan lalu dengan Z (dalam contoh Anda, Y = java / jre, Z = icedtea plugin) dan kemudian secara manual menambahkan semuanya ke baris perintah apt. Saya ingin hanya menentukan Z, dan sisa ketergantungan yang akan diambil secara otomatis, bahkan jika mereka disarankan oleh paket X lain (X = libreoffice dalam contoh Anda). - user2809402
Sayangnya, ini adalah cara kerja sistem apt, lebih suka menyimpan paket daripada menghapusnya, bahkan jika mereka tidak diperlukan lagi. Satu-satunya cara untuk menghapusnya adalah secara manual atau dengan deborphan tetapi deborphan mungkin melewatkan beberapa paket. Anda dapat menggunakan Debug:: pilihan dan juga periksa saya jawaban lain tentang ini. Anda juga bisa menggunakan --no-install-recommends, tetapi apt-get tidak menginstal paket yang disarankan secara default. - Braiam
@ user2809402 Anda juga harus memeriksanya askubuntu.com/q/244470/169736 - Braiam
Braiam- Terima kasih untuk pointer deborphan. Saya akan memeriksanya. - user2809402


Benar, jika Anda ingin menghapus paket <Z> dengan ketergantungan hanya ketik:

sudo apt-get autoremove --purge <Z>

-1
2017-10-03 08:04



Terima kasih, tapi sayangnya, menambahkan "--purge" hanya menghapus konfigurasi paket yang dihapus dengan "autoremove". Tapi sejauh yang saya bisa lihat, itu tidak mengubah keputusan yang paket untuk dihapus. Artinya, dependensi Z yang disarankan oleh beberapa paket X yang sudah ada, masih belum dihapus, apakah saya menentukan "--purge" atau tidak. - user2809402
Juga, autoremove bekerja di seluruh sistem. Jadi kapanpun Anda menelepon autoremove, itu akan menghapus semua paket yang tidak digunakan pada sistem Anda. Instalasi paket, lalu autoremoving biasanya tidak akan mengembalikan sistem ke kondisi yang sama, dan malah akan meninggalkan banyak paket "sisa". - Rolf