Memblokir paket agar tidak dihapus dalam APT

8

Singkatnya, saya ingin dapat mengatur paket abcsehingga:

  1. apt-get remove abc harus gagal.
  2. apt-get purge abc harus gagal.
  3. apt-get upgrade abc harus bekerja.

Jika dependensi paket berubah sehingga abcharus dihapus saat dist-upgradesaya senang dipaksa untuk melakukan sesuatu dan sekali dist-upgradelagi.

Dihapus
sumber
Saya membuat metapackage penting yang bergantung pada abc, tapi itu tetap dihapus ... Saya pikir Anda harus mengkompilasi ulang abcpengaturan Essential: yesdan Priority: requireddidebian/control
Teresa e Junior
@TeresaeJunior Strange, paket penting deftergantung pada abcseharusnya bekerja. Sudah defdihapus? Apakah itu membantu jika Anda menghasilkan def Priority: required?
Gilles 'SANGAT berhenti menjadi jahat'
@Gilles Tepat, saya mengatur keduanya Essential: yesdan Priority: requireddan itu dihapus tanpa peringatan. Saya membuat skrip kecil ini untuk membuat paket, jika Anda ingin melihatnya: paste.org/44184
Teresa e Junior
Saya melihat Essential: yesitu diabaikan, jadi equivstidak cukup untuk itu ... Mungkin jika paket dibuat dengan debuild, saya akan mencoba.
Teresa e Junior

Jawaban:

5

Tidak benar-benar apa pun untuk 'pin' paket untuk dapat mencegah penghapusan, tetapi memungkinkan peningkatan.

Anda dapat memalu paku ke dalam paket, tidak dapat dihapus, dibersihkan, ditingkatkan, dijilat, apa pun ...

Tapi ini sedikit lebih rumit daripada kebanyakan hal.

Misalnya, kami ingin mem-pin firefox: (tentu saja Anda akan menggunakan nama lengkap yang benar dari paket)

echo firefox hold | dpkg --set-selections

yang kemudian akan membuat ' firefox ' abadi. TETAPI tidak bisa ditingkatkan dalam kondisi ini juga.

Untuk menghapus status penangguhan sedikit lebih mudah, tapi itu semacam gerakan menyapu:

dpkg --clear-selections

menghapus status TAHAN dari SEMUANYA! Jadi, jika Anda ingin menyimpan beberapa paket, sebaiknya simpan daftar untuk diterapkan kembali nanti

Ini sebenarnya cukup menyenangkan dan mudah dilakukan menggunakan aptitude atau synaptics , karena mereka memiliki pilihan menu untuk menyimpan / membuka paket, mengurus semua pembukuan di belakang layar untuk Anda. Saya akan merekomendasikan menggunakan salah satu dari mereka (atau salah satu dari banyak manajer paket lain yang mungkin Anda temui)

Dengan Aptitude, penggunaan baris perintah juga dimungkinkan:

aptitude hold <package>
aptitude unhold <package>

Ingat juga, Anda harus ' melepaskan ' sesuatu jika ingin memperbarui. Meskipun jika Anda menggunakan sisi GUI dari Aptitude, itu akan memberi tahu Anda jika sesuatu yang dimiliki dapat diupgrade

lornix
sumber
1
apt-getakan dengan senang hati menghapus paket yang ditahan.
bahamat