Saya ingin memblokir semua paket dari non-free
, kecuali untuk yang saya
sebutkan secara eksplisit. Saat ini, saya memiliki:
/etc/apt/sources.list
:
deb http://ftp.us.debian.org/debian stable main contrib non-free
/etc/apt/preferences.d/non-free_policy
:
Explanation: Disable packages from `non-free` tree by default
Package: *
Pin: release c=non-free
Pin-Priority: -1
(Idenya adalah, saya menambahkan bait eksplisit untuk setiap paket yang saya inginkan dari paket tidak gratis.)
Tapi itu tidak berhasil:
[email protected]:/etc/apt/preferences.d# apt-get -s install firmware-linux-nonfree
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut.
Statusinformationen werden eingelesen.... Fertig
Die folgenden NEUEN Pakete werden installiert:
firmware-linux-nonfree
0 aktualisiert, 1 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.
Inst firmware-linux-nonfree (0.43 Debian:8.4/stable [all])
Conf firmware-linux-nonfree (0.43 Debian:8.4/stable [all])
Apa yang saya lewatkan?
Jawaban yang Diterima:
Anda perlu memastikan bahwa Anda tidak memiliki prioritas pin lain yang lebih umum yang diprioritaskan daripada non-free
Anda -tidak termasuk aturan. (Ini termasuk APT::Default-Release
pengaturan konfigurasi yang menetapkan prioritas tinggi untuk rilis yang diberikan.)
Misalnya, jika /etc/apt/preferences
. Anda file (atau file lain di /etc/apt/preferences.d
) berisi sesuatu seperti berikut:
Package: *
Pin: release a=unstable
Pin-Priority: 200
lalu unstable
paket akan memiliki prioritas pin 200, terlepas dari komponennya. Untuk membuatnya berfungsi dengan file tambahan Anda, Anda harus mengubahnya menjadi
Package: *
Pin: release a=unstable, c=main
Pin-Priority: 200
(dan tambahkan bait tambahan untuk contrib
jika Anda peduli tentang itu). (Dalam kasus Anda, Anda akan memiliki stable
tentu saja.)
Anda dapat memeriksa pengaruh prioritas pin Anda dengan menjalankan
apt-cache policy
Jika Anda non-free
-tidak termasuk konfigurasi berfungsi dengan benar, Anda akan melihat entri untuk semua suite yang Anda lacak, di non-free
, dengan prioritas pin -1. Setelah berhasil, Anda akan menemukan bahwa Anda tidak dapat lagi menginstal raccoon
, atau sebenarnya non-free
package (bahkan jika disebutkan secara eksplisit) — Anda harus menambahkan non-free
paket yang Anda inginkan ke file konfigurasi Anda, dengan prioritas pin yang sesuai.
Sebagai contoh, inilah pengaturan yang saya gunakan:Saya memiliki file bernama /etc/apt/preferences.d/non-free
mengandung
Package: intel-microcode
Pin: release n=buster, c=non-free
Pin-Priority: 100
Explanation: Disable packages from non-free tree by default
Package: *
Pin: release c=non-free
Pin-Priority: -1
Paket tidak gratis masih muncul dalam pencarian, tetapi saya tidak dapat menginstalnya:
$ sudo apt install lmbench
Reading package lists... Done
Building dependency tree
Reading state information... Done
Package lmbench is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
E: Package 'lmbench' has no installation candidate
dan apt policy
setuju:
$ apt policy lmbench
lmbench:
Installed: (none)
Candidate: (none)
Version table:
3.0-a9+debian.1-2 -1
-1 http://ftp.fr.debian.org/debian buster/non-free amd64 Packages
-1 http://ftp.fr.debian.org/debian testing/non-free amd64 Packages
-1 http://ftp.fr.debian.org/debian unstable/non-free amd64 Packages
Tapi intel-microcode
dapat diinstal dan diupgrade. Jadi setelah downgrade paksa ke versi oldstable, saya mendapatkan
$ apt policy intel-microcode
intel-microcode:
Installed: 3.20190618.1~deb9u1
Candidate: 3.20190618.1
Version table:
3.20190618.1 100
-1 http://ftp.fr.debian.org/debian buster/non-free amd64 Packages
-1 http://ftp.fr.debian.org/debian testing/non-free amd64 Packages
-1 http://ftp.fr.debian.org/debian unstable/non-free amd64 Packages
*** 3.20190618.1~deb9u1 100
100 /usr/var/lib/dpkg/status
$ apt list --upgradable
intel-microcode/stable,testing,unstable 3.20190618.1 amd64 [upgradable from: 3.20190618.1~deb9u1]
apt policy
keluaran akhirnya agak membingungkan — lihat baris “Calon” untuk melihat apa yang sebenarnya akan terjadi.