APT-pinning-afhankelijkhedenresolutie

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 en dependency 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.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *