Bagaimana cara melarang paket tertentu untuk diinstal?

27

Dapatkah saya mengonfigurasi Ubuntu untuk tidak pernah menginstal paket tertentu walaupun itu diperlukan oleh paket lain yang saya instal?

Ivan
sumber
Anda tidak dapat menginstal paket tanpa ketergantungannya, kecuali jika Anda ingin merusak sistem Anda.
enzotib
2
@enzotib, pertama-tama Anda salah: dependensi paket bisa berlebihan. ada banyak contoh, atau Anda dapat menginstal setara dengan paket yang diperlukan dengan cara lain (misalnya saya telah menginstal openjdk-6 karena diperlukan oleh semua aplikasi java di repo, tapi saya tidak pernah benar-benar menggunakan openjdk-6, saya atur segalanya untuk menggunakan openjdk-7 atau Oracle JDK 7 sebagai gantinya). Dan hal kedua - saya tidak mengatakan saya ingin paket dependen diinstal - hanya bisa melempar kesalahan dalam hal ini, saya hanya ingin memastikan paket tertentu tidak pernah diinstal pula.
Ivan
Ada pertanyaan serupa .
Nimmermehr

Jawaban:

28

Seperti pada Debian kita dapat menggunakan apt-pinning untuk versi dan kontrol instalasi di Ubuntu juga.

Untuk memblokir instalasi paket yang diberikan, kita dapat memasukkan baris berikut /etc/apt/preferences

Package: <nameofpackage>
Pin: origin ""
Pin-Priority: -1

Dengan memberikan prioritas negatif untuk pin ini, kami akan memblokir instalasi dari <nameofpackage>asal tidak ditentukan lebih lanjut, yaitu repositori lokal kami. Tentu saja kita dapat menggunakan apt-pinning untuk menyematkan versi paket tertentu atau asal tertentu.

Sebelum Anda melanjutkan, sangat disarankan untuk membaca dokumentasi yang diberikan di atas dan halaman manual dari apt_preferences karena kesalahan dalam file-file ini tidak diperiksa oleh apt dan jika terjadi dapat merusak manajemen paket Anda.

Untuk alternatif, dan untuk mencegah pembaruan paket yang diberikan lihat:

Takkat
sumber
Apakah Anda tahu apakah ini bisa berfungsi di Ubuntu 12.04? Pertanyaan lain adalah melaporkan bahwa mungkin itu tidak berhasil.
Lucio
1
@ Lucio: tentu - masih berfungsi; baru saja mengujinya untuk bekerja di 12.10 juga.
Takkat
3
Di Package:-line, Anda bisa daftar beberapa paket yang dipisahkan dengan spasi, seperti ini: Paket: metacity-litymetacity-common libmetacity-private0a. (Sepertinya pola seperti Paket: metacity * juga dimungkinkan)
Volker Siegel
5
Di Ubuntu 16.04 Pin: origin ""tidak bekerja untuk saya, tetapi Pin: release *berhasil.
barbaz
3

Di debian, Anda dapat memblokir paket, dan paket itu tidak akan ditingkatkan lagi

# echo name_of_package hold | dpkg --set-selections

tapi saya tidak yakin Anda bisa melarang

maniat1k
sumber
Saya baru saja mencobanya di Ubuntu 15.10 (wily) dan tidak memblokir paket; baru saja memberi saya peringatanpackage not in database
Brent Baccala
2

Saya memiliki paket yang terus menyelinap masuk dan menghancurkan git

sudo apt-mark hold libgnutls-deb0-28

harus mencegah paket yang diinstal

Alexx Roche
sumber