¿Cómo bloquear los no gratuitos con las preferencias de apt?

¿Cómo bloquear los no gratuitos con las preferencias de apt?

Quiero bloquear todos los paquetes denon-free , excepto aquellos que nombro 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 agregar una estrofa explícita para cada paquete que quiero que no sea gratuito).

Pero no funciona:

root@silber:/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?

Respuesta1

Debe asegurarse de no tener otra prioridad de pin más general que tenga prioridad sobre su non-freeregla de exclusión. (Esto incluye elAPT::Default-Release configuración que asigna una alta prioridad a la versión determinada).

Por ejemplo, si su /etc/apt/preferencesarchivo (u otro archivo en /etc/apt/preferences.d) contiene algo como lo siguiente:

Package: *
Pin: release a=unstable
Pin-Priority: 200

entonces unstablelos 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 contribsi eso le interesa). (En tu caso tendríasstable por supuesto).

Puedes comprobar el efecto de las prioridades de tus pines ejecutando

apt-cache policy

Si su non-freeconfiguración de exclusió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, ni ningún non-freepaquete (incluso si se menciona explícitamente); deberá agregar elnon-free paquetes que desee a 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-freeque 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 no gratuitos todavía aparecen 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 policyacepta:

$ 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-microcodees instalable y actualizable. Por lo tanto, después de una degradación forzada a la versión antigua estable, 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]

El apt policyresultado termina siendo algo confuso; consulte la línea "Candidato" para ver qué va a pasar realmente.

información relacionada