Ik “probeer onder de knie te krijgen hoe APT-pinning werkt onder Debian, maar ik” vind het moeilijk om te begrijpen hoe het prioriteiten oplost.
Ik heb een source.list
-bestand met de volgende items in deze exacte volgorde:
deb <repository> stretch main deb <repository> testing main deb <repository> unstable main
De volgende repository bevat deze pakketten per branch:
- stretch bevat het pakket
dependency version 1.0
; - testing bevat het pakket
dependency version 2.0
; - unstable bevat de pakketten
program
endependency version 2.0
;
Het pakket program
hangt af van dependency version 2.0
.
Ik moet de pakket program
, maar ik wil zo min mogelijk pakketten installeren vanaf unstable
, dus ik maak het volgende preferences
bestand om deze branch vast te pinnen:
Package: * Pin: release a=unstable Pin-Priority: -1
Als ik begrijp nd correct hoe het werkt, het zou pakketten van unstable
alleen moeten installeren als ik het APT expliciet vertel.
Ik maak ook een apt.conf
-bestand om ervoor te zorgen dat de stable
branch de standaard is:
APT::Default-Release "stable";
Na het uitvoeren van het commando apt-get update
, de branches zouden de volgende prioriteiten moeten hebben:
stable: 990 testing: 500 unstable: -1
Nu wil ik het pakket , om dit te doen, voer ik het volgende commando uit:
apt-get install -t unstable program
Dus nu is mijn vraag, van welke tak zal APT de pakket dependency version 2.0
? Aangezien beide testing
en unstable
dezelfde versie van het pakket hebben, welke wordt dan gekozen?
Als ik begrijp het goed, APT met de -t unstable
optie, zal een 990 prioriteit instellen voor de pakketten die behoren tot unstable
, maar van wat ik heb ervaren , het haalt het op van testing
.
Dus waarom haalt APT pakketten op van testing
met een prioriteit van 500 terwijl unstable
als het is ingesteld op 990? Ook, wat zou de optimale manier zijn om zo min mogelijk pakketten te installeren vanaf unstable
?
Reacties
- Als de versie hetzelfde is, dan is het bestand ook hetzelfde . Apt kiest de snelste of de eerste gedefinieerde mirror, maar de url van het gedownloade bestand is hetzelfde. Controleer het zelf. Debian repositories slaat geen ' twee identieke bestanden / versies van een pakket op vanwege problemen met schijfruimte.
Antwoord
Dit wordt uitgelegd in de apt_preferences
manpage :
Er kunnen verschillende versies van een pakket beschikbaar zijn voor installatie als het bestand sources.list (5) bevat verwijzingen naar meer dan één distributie (bijvoorbeeld stable en testing). APT kent een prioriteit toe aan elke beschikbare versie. Onderhevig aan afhankelijkheidsbeperkingen, selecteert
apt-get
de versie met de hoogste prioriteit voor installatie. De APT-voorkeuren hebben voorrang boven de prioriteiten die APT standaard aan pakketversies toewijst, waardoor de gebruiker controle geeft over welke wordt geselecteerd voor installatie.Er kunnen verschillende instanties van dezelfde versie van een pakket beschikbaar zijn wanneer de bronnen .list (5) -bestand bevat verwijzingen naar meer dan één bron. In dit geval downloadt
apt-get
de instantie die als eerste wordt vermeld in het bestand sources.list (5). De APT-voorkeuren hebben geen invloed op de keuze van de instantie, alleen de keuze van de versie.
Prioriteiten bepalen alleen welke versie (zoals gespecificeerd door het versienummer) van er is een pakket geïnstalleerd. Zodra dat is bepaald, wordt de eerste beschikbare pakketrepository gebruikt om het te downloaden.