Wie blockiere ich Non-Free mit Apt-Einstellungen?

Wie blockiere ich Non-Free mit Apt-Einstellungen?

Ich möchte alle Pakete von blockieren non-free, außer denen, die ich explizit nenne. Derzeit habe ich:

/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

(Die Idee ist, dass ich für jedes Paket, das ich von Non-Free haben möchte, eine explizite Strophe hinzufüge.)

Aber es funktioniert nicht:

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

Was vermisse ich?

Antwort1

Sie müssen sicherstellen, dass Sie keine andere, allgemeinere Pin-Priorität haben, die Vorrang vor Ihrer non-freeAusschlussregel hat. (Dazu gehört auch die APT::Default-ReleaseKonfigurationseinstellung, die der angegebenen Freigabe eine hohe Priorität zuweist.)

/etc/apt/preferencesWenn Ihre Datei (oder eine andere Datei in ) beispielsweise /etc/apt/preferences.dFolgendes enthält:

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

dann unstablehaben Pakete unabhängig von der Komponente die Pin-Priorität 200. Damit dies mit Ihrer zusätzlichen Datei funktioniert, sollten Sie dies ändern in

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

(und fügen Sie eine zusätzliche Strophe hinzu, contribfalls Ihnen das wichtig ist). (In Ihrem Fall hätten Sie stabledas natürlich getan.)

Sie können die Wirkung Ihrer Pin-Prioritäten überprüfen, indem Sie

apt-cache policy

Wenn Ihre non-free-excl-Konfiguration richtig funktioniert, sollten Sie Einträge für alle Suiten, die Sie verfolgen, auf non-freemit einer Pin-Priorität von -1 sehen. Sobald das funktioniert, werden Sie feststellen, dass Sie nicht mehr installieren können raccoonoder eigentlich kein non-freePaket (auch wenn es explizit erwähnt wird) – Sie müssen die non-freegewünschten Pakete mit einer entsprechenden Pin-Priorität zu Ihrer Konfigurationsdatei hinzufügen.

Als Beispiel ist hier das Setup, das ich verwende: Ich habe eine Datei namens /etc/apt/preferences.d/non-freemit

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

Nicht-freie Pakete werden weiterhin in der Suche angezeigt, aber ich kann sie nicht installieren:

$ 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

und apt policystimmt zu:

$ 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

Aber es intel-microcodeist installierbar und aktualisierbar. Nach einem erzwungenen Downgrade auf die alte stabile Version bekomme ich also

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

Die apt policyAusgabe ist etwas verwirrend. Sehen Sie in der Zeile „Kandidat“ nach, um zu sehen, was wirklich passieren wird.

verwandte Informationen