Como bloquear não-livres com preferências do apt?

Como bloquear não-livres com preferências do apt?

Quero bloquear todos os pacotes non-free, exceto aqueles que nomeio explicitamente. Atualmente, tenho:

/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

(A ideia é adicionar uma estrofe explícita para cada pacote que desejo de não-livre.)

Mas não 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])

o que estou perdendo?

Responder1

Você precisa garantir que não tenha outra prioridade de pin mais geral que tenha prioridade sobre sua non-freeregra de exclusão. (Isso inclui a APT::Default-Releasedefinição de configuração que atribui alta prioridade à versão específica.)

Por exemplo, se o seu /etc/apt/preferencesarquivo (ou outro arquivo em /etc/apt/preferences.d) contiver algo como o seguinte:

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

então unstableos pacotes terão prioridade de pin 200, independentemente do componente. Para fazer isso funcionar com seu arquivo adicional, você deve alterar isso para

Package: *
Pin: release a=unstable, c=main
Pin-Priority: 200

(e adicione uma estrofe adicional contribse você se importa com isso). (No seu caso, você teria, stableé claro.)

Você pode verificar o efeito de suas prioridades de pin executando

apt-cache policy

Se sua non-freeconfiguração de exclusão estiver funcionando corretamente, você deverá ver entradas para todos os conjuntos que está rastreando, em non-free, com uma prioridade de pin de -1. Quando isso estiver funcionando, você descobrirá que não poderá mais instalar o raccoon, ou mesmo qualquer non-freepacote (mesmo que mencionado explicitamente) - você precisará adicionar os non-freepacotes que deseja ao seu arquivo de configuração, com uma prioridade de pin apropriada.

Por exemplo, aqui está a configuração que uso: tenho um arquivo chamado /etc/apt/preferences.d/non-freecontendo

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

Pacotes não gratuitos ainda aparecem nas pesquisas, mas não consigo instalá-los:

$ 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 policyconcorda:

$ 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

Mas intel-microcodeé instalável e atualizável. Assim, após um downgrade forçado para a versão oldstable, recebo

$ 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]

O apt policyresultado acaba sendo um tanto confuso — consulte a linha “Candidato” para ver o que realmente vai acontecer.

informação relacionada