Quiero bloquear todos los paquetes de non-free
, a excepción de aquellos que
nombre explícitamente. Actualmente, tengo:
/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
(La idea es que agrego una estrofa explícita para cada paquete que quiero de no libre).
Pero no funciona:
[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])
¿Qué me estoy perdiendo?
Respuesta aceptada:
Debe asegurarse de que no tiene otra prioridad de PIN más general que tenga prioridad sobre su non-free
-Regla excluyente. (Esto incluye el APT::Default-Release
ajuste de configuración que asigna una alta prioridad a la versión dada).
Por ejemplo, si su /etc/apt/preferences
archivo (u otro archivo en /etc/apt/preferences.d
) contiene algo como lo siguiente:
Package: *
Pin: release a=unstable
Pin-Priority: 200
entonces unstable
los paquetes tendrán prioridad de pin 200, independientemente del componente. Para que esto funcione con su archivo adicional, debe cambiar esto a
Package: *
Pin: release a=unstable, c=main
Pin-Priority: 200
(y agregue una estrofa adicional para contrib
si te importa eso). (En tu caso tendrías stable
por supuesto.)
Puede verificar el efecto de las prioridades de sus pines ejecutando
apt-cache policy
Si tu non-free
-excluir la configuración funciona correctamente, debería ver entradas para todas las suites que está rastreando, en non-free
, con una prioridad de pin de -1. Una vez que esté funcionando, descubrirá que ya no puede instalar raccoon
, o de hecho cualquier non-free
paquete (incluso si se menciona explícitamente):deberá agregar el non-free
paquetes que desee en su archivo de configuración, con una prioridad de pin adecuada.
Como ejemplo, aquí está la configuración que uso:tengo un archivo llamado /etc/apt/preferences.d/non-free
que contiene
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
Los paquetes que no son gratuitos siguen apareciendo en las búsquedas, pero no puedo instalarlos:
$ 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
y apt policy
está de acuerdo:
$ 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
Pero intel-microcode
es instalable y actualizable. Por lo tanto, después de una degradación forzada a la versión estable anterior, obtengo
$ 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
la salida termina algo confusa:consulte la línea "Candidato" para ver qué sucederá realmente.