Voglio bloccare tutti i pacchetti da non-free
, ad eccezione di quelli che
nomino esplicitamente. Attualmente ho:
/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
(L'idea è di aggiungere una stanza esplicita per ogni pacchetto che voglio da non libero.)
Ma non funziona:
[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])
Cosa mi sto perdendo?
Risposta accettata:
Devi assicurarti di non avere un'altra priorità pin più generale che abbia la priorità sul tuo non-free
-regola esclusa. (Questo include il APT::Default-Release
impostazione di configurazione che assegna una priorità alta alla release data.)
Ad esempio, se il tuo /etc/apt/preferences
file (o un altro file in /etc/apt/preferences.d
) contiene qualcosa di simile al seguente:
Package: *
Pin: release a=unstable
Pin-Priority: 200
quindi unstable
i pacchetti avranno priorità pin 200, indipendentemente dal componente. Per farlo funzionare con il tuo file aggiuntivo, dovresti cambiarlo in
Package: *
Pin: release a=unstable, c=main
Pin-Priority: 200
(e aggiungi una stanza aggiuntiva per contrib
se ci tieni). (Nel tuo caso avresti stable
ovviamente.)
Puoi controllare l'effetto delle tue priorità pin eseguendo
apt-cache policy
Se il tuo non-free
-escludendo la configurazione funziona correttamente, dovresti vedere le voci per tutte le suite che stai monitorando, su non-free
, con una priorità dei pin di -1. Una volta che funziona, scoprirai che non puoi più installare raccoon
, o in effetti qualsiasi non-free
pacchetto (anche se menzionato esplicitamente):dovrai aggiungere il non-free
pacchetti che desideri nel tuo file di configurazione, con una priorità pin appropriata.
Ad esempio, ecco la configurazione che utilizzo:ho un file chiamato /etc/apt/preferences.d/non-free
contenente
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
I pacchetti non gratuiti vengono ancora visualizzati nelle ricerche, ma non riesco a installarli:
$ 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
e apt policy
d'accordo:
$ 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
Ma intel-microcode
è installabile e aggiornabile. Quindi, dopo un downgrade forzato alla versione oldstable, ottengo
$ 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]
La apt policy
l'output finisce per creare confusione:fai riferimento alla riga "Candidate" per vedere cosa accadrà davvero.