Copot paket dengan aman di Gentoo

12

Saya ingin menghapus paket tertentu di Gentoo dan melihat-lihat halaman emerge man. Saya menemukan --unmergeopsi:

PERINGATAN: Tindakan ini dapat menghapus paket-paket penting! Menghapus semua paket yang cocok. Ini tidak memeriksa dependensi, sehingga dapat menghapus paket yang diperlukan untuk pengoperasian sistem Anda dengan benar. Argumennya bisa berupa atom atau ebuild. Untuk versi sadar ketergantungan dari --unmerge , gunakan --depclean atau --prune .

Namun, saya ingin emerge untuk memeriksa apakah paket yang ingin saya hapus diperlukan oleh paket lain yang terinstal di sistem. --depcleandan --prunetidak menyediakan fungsionalitas itu:

  • --depclean menghapus paket yang diinstal sebagai dependensi, tetapi tidak diperlukan lagi
  • --prune "menghapus semua kecuali versi paket tertinggi yang diinstal dari sistem Anda"

Apakah tidak ada versi pengecekan ketergantungan --unmerge?

daniel kullmann
sumber

Jawaban:

17

Saya pikir tidak depcleanbekerja seperti yang Anda gambarkan. Tanpa argumen yang ada, tetapi jika Anda memberikannya nama paket itu berfungsi seperti unmergedengan pemeriksaan dependensi tambahan. Dari emerge(1):

Depclean berfungsi sebagai versi yang menyadari ketergantungan --unmerge. Ketika diberi satu atau lebih atom, ia akan memisahkan paket yang cocok yang tidak memiliki dependensi terbalik. Gunakan --depcleanbersama-sama dengan --verboseuntuk menunjukkan dependensi terbalik.

Saya selalu menggunakan --depclean( -c) untuk memisahkan paket-paket individual; ini bekerja dengan baik

Michael Mrozek
sumber
6

gentoolkit datang untuk membantu:

equery d <atom>

Anda dapat memeriksa dependensi terlebih dahulu, kemudian melanjutkan untuk menghapus paket setelah memeriksa dependensinya.

Spidey
sumber
5

Cara lain untuk mencapai hasil yang sama (walaupun itu bukan perintah yang dihapus dengan memeriksa ketergantungan):, emerge --deselect packageyang menghapus paket dari file dunia. Sekarang, menjalankan emerge --depcleanakan menghapus paket itu jika tidak diperlukan oleh paket lain.

njsg
sumber
Apakah itu berarti emerge --depcleanmenghapus semua paket yang diinstal menggunakan emerge --oneshot(kecuali paket-paket itu diperlukan oleh paket dari dunia)?
daniel kullmann
@danielkullmann ya. itu menghitung seluruh grafik dependensi dan menghapus apa yang tidak ditarik oleh paket apa pun di dunia. Anda dapat menggunakan emerge --noreplace --selectuntuk menambahkan paket yang sudah diinstal tanpa mengkompilasi ulang, btw.
njsg
1

Terkadang, emerge --unmerge berikan pesan peringatan ini:

 * This action can remove important packages! In order to be safer, use
 * `emerge -pv --depclean <atom>` to check for reverse dependencies before
 * removing packages.

Tampaknya ini adalah cara yang disarankan untuk melakukan pemeriksaan dependensi sebelum menghapus paket. Saya masih berharap, bahwa ada cara yang lebih baik, lebih otomatis, untuk mencapai ini.

daniel kullmann
sumber