Ich versuche zu beherrschen, wie das APT-Pinning unter Debian funktioniert, aber es fällt mir schwer zu verstehen, wie es Prioritäten auflöst.
Ich habe eine source.list
-Datei mit den folgenden Einträgen in genau dieser Reihenfolge:
deb <repository> stretch main deb <repository> testing main deb <repository> unstable main
Das folgende Repository enthält diese Pakete pro Zweig:
- Stretch enthält das Paket
dependency version 1.0
; - Testen enthält das Paket
dependency version 2.0
; - unstable enthält die Pakete
program
unddependency version 2.0
;
Das Paket program
hängt von dependency version 2.0
ab.
Ich muss das installieren Paket program
, aber ich möchte so wenige Pakete wie möglich von unstable
installieren, also erstelle ich das folgende preferences
Datei zum Anheften dieses Zweigs:
Package: * Pin: release a=unstable Pin-Priority: -1
Wenn ich verstehe Wenn es richtig funktioniert, sollte es Pakete von unstable
nur dann installieren, wenn ich APT ausdrücklich dazu auffordere.
Ich erstelle auch eine apt.conf
-Datei, um sicherzustellen, dass der Zweig stable
die Standardeinstellung ist:
APT::Default-Release "stable";
Nach dem Ausführen des Befehls apt-get update
, die Zweige sollten die folgenden Prioritäten haben:
stable: 990 testing: 500 unstable: -1
Jetzt möchte ich das Paket , um dies zu tun, führe ich den folgenden Befehl aus:
apt-get install -t unstable program
Nun ist meine Frage, aus welchem Zweig APT den ziehen wird Paket dependency version 2.0
? Da sowohl testing
als auch unstable
dieselbe Version des Pakets haben, welche wird ausgewählt?
Wenn ich Wenn Sie richtig verstehen, setzt APT mit der Option -t unstable
den Paketen, die zu unstable
gehören, eine 990-Priorität, aber nach meinen Erfahrungen wird es von testing
abgerufen.
Warum zieht APT also Pakete von testing
mit einer Priorität von 500 während unstable
auf 990 gesetzt ist? Was wäre auch der optimale Weg, um so wenige Pakete wie möglich von unstable
zu installieren?
Kommentare
- Wenn die Version identisch ist, ist die Datei auch dieselbe . Apt wählt die schnellste oder die erste definierter Spiegel, aber die URL der heruntergeladenen Datei ist dieselbe. Überprüfen Sie sie selbst. Debian-Repositorys speichern ' nicht zwei identische Dateien / Versionen eines Pakets aufgrund von Speicherplatzproblemen.
Antwort
Dies wird in manpage :
In der Datei sources.list (5) stehen möglicherweise mehrere Versionen eines Pakets zur Installation zur Verfügung enthält Verweise auf mehr als eine Distribution (z. B. Stable und Testing). APT weist jeder verfügbaren Version eine Priorität zu. Vorbehaltlich der Abhängigkeitsbeschränkungen wählt
apt-get
die Version mit der höchsten Priorität für die Installation aus. Die APT-Einstellungen überschreiben standardmäßig die Prioritäten, die APT Paketversionen zuweist, und geben dem Benutzer somit die Kontrolle darüber, welche für die Installation ausgewählt wird.Bei den Quellen sind möglicherweise mehrere Instanzen derselben Version eines Pakets verfügbar Die Datei .list (5) enthält Verweise auf mehr als eine Quelle. In diesem Fall lädt
apt-get
die Instanz herunter, die am frühesten in der Datei sources.list (5) aufgeführt ist. Die APT-Einstellungen wirken sich nicht auf die Auswahl der Instanz aus, sondern nur auf die Auswahl der Version.
Prioritäten bestimmen nur, welche Version (wie durch die Versionsnummer angegeben) von Ein Paket ist installiert. Sobald dies festgelegt ist, wird das erste verfügbare Paket-Repository zum Herunterladen verwendet.