Chci zablokovat všechny balíčky z non-free
, kromě těch, které
výslovně jmenuji. Momentálně mám:
/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
(Myšlenka je taková, že přidám explicitní stanzu pro každý balíček, který chci od non-free.)
Ale to nefunguje:
[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])
Co mi chybí?
Přijatá odpověď:
Musíte se ujistit, že nemáte jinou, obecnější prioritu PIN, která má přednost před vaším non-free
- vylučující pravidlo. (To zahrnuje APT::Default-Release
konfigurační nastavení, které dané verzi přiřadí vysokou prioritu.)
Například pokud máte /etc/apt/preferences
soubor (nebo jiný soubor v /etc/apt/preferences.d
) obsahuje něco jako následující:
Package: *
Pin: release a=unstable
Pin-Priority: 200
pak unstable
balíčky budou mít prioritu 200 bez ohledu na komponentu. Aby to fungovalo s vaším dalším souborem, měli byste to změnit na
Package: *
Pin: release a=unstable, c=main
Pin-Priority: 200
(a přidejte další stanzu pro contrib
pokud vám na tom záleží). (Ve vašem případě byste měli stable
samozřejmě.)
Účinek priorit vašich pinů můžete zkontrolovat spuštěním
apt-cache policy
Pokud vaše non-free
-s výjimkou konfigurace funguje správně, měli byste vidět položky pro všechny sady, které sledujete, na non-free
s prioritou pinu -1. Jakmile to bude fungovat, zjistíte, že již nemůžete nainstalovat raccoon
, nebo ve skutečnosti jakýkoli non-free
balíček (i když je výslovně zmíněn) – budete muset přidat non-free
balíčky, které chcete do konfiguračního souboru, s vhodnou prioritou pinů.
Jako příklad uvádím nastavení, které používám:Mám soubor s názvem /etc/apt/preferences.d/non-free
obsahující
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
Balíčky, které nejsou zdarma, se stále objevují ve vyhledávání, ale nemohu je nainstalovat:
$ 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
a apt policy
souhlasí:
$ 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
Ale intel-microcode
je instalovatelný a upgradovatelný. Takže po vynuceném downgradu na oldstable verzi dostávám
$ 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]
apt policy
výstup je nakonec poněkud matoucí – podívejte se na řádek „Kandidát“, abyste viděli, co se skutečně stane.