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-free
regra de exclusão. (Isso inclui a APT::Default-Release
definição de configuração que atribui alta prioridade à versão específica.)
Por exemplo, se o seu /etc/apt/preferences
arquivo (ou outro arquivo em /etc/apt/preferences.d
) contiver algo como o seguinte:
Package: *
Pin: release a=unstable
Pin-Priority: 200
então unstable
os 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 contrib
se 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-free
configuraçã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-free
pacote (mesmo que mencionado explicitamente) - você precisará adicionar os non-free
pacotes 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-free
contendo
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 policy
concorda:
$ 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 policy
resultado acaba sendo um tanto confuso — consulte a linha “Candidato” para ver o que realmente vai acontecer.