APT Pinning beroenden upplösning

Jag försöker bemästra hur APT pinning fungerar under Debian, men jag har svårt att förstå hur det löser prioriteringar.

Jag har en source.list -fil som har följande poster i denna exakta ordning:

deb <repository> stretch main deb <repository> testing main deb <repository> unstable main 

Följande arkiv innehåller dessa paket per gren:

  • stretch innehåller paketet dependency version 1.0;
  • testet innehåller paketet dependency version 2.0;
  • instabil innehåller paketen program och dependency version 2.0;

Paketet program beror på dependency version 2.0.

Jag måste installera paket program, men jag vill installera så få paket som möjligt från unstable, så jag skapar följande preferences fil för att fästa den här grenen:

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

Om jag understa och korrekt hur det fungerar ska det installera paket från unstable bara när jag uttryckligen ber APT om det.

Jag skapar också en apt.conf -fil för att säkerställa att stable -grenen är standard:

APT::Default-Release "stable"; 

Efter att ha kört kommandot apt-get update, filialerna ska ha följande prioriteringar:

stable: 990 testing: 500 unstable: -1 

Nu vill jag installera paketet program, för att göra det kör jag följande kommando:

apt-get install -t unstable program 

Så nu är min fråga, från vilken gren kommer APT att dra paket dependency version 2.0? Eftersom både testing och unstable har samma version av paketet, vilken kommer att plockas?

Om jag förstår rätt, APT med -t unstable -alternativet kommer att ställa in en prioritet på 990 för paketen som tillhör unstable, men från vad jag har upplevt , det hämtar det från testing.

Så varför drar APT paket från testing som har en prioritet på 500 medan unstable som inställd på 990? Vad skulle också vara det optimala sättet att installera så få paket som möjligt från unstable?

Kommentarer

  • Om versionen är densamma är filen samma också. Apt väljer den snabbaste eller den första definierad spegel, men webbadressen till den nedladdade filen är densamma. Kontrollera den själv. Debian-förvar lagrar inte ' t lagrar två identiska filer / version av ett paket på grund av problem med diskutrymme.

Svar

Detta förklaras i apt_preferences manpage :

Flera versioner av ett paket kan vara tillgängliga för installation när filen sources.list (5) innehåller referenser till mer än en distribution (till exempel stabil och testning). APT tilldelar varje version som är tillgänglig en prioritet. Med förbehåll för begränsningsberoende väljer apt-get versionen med högsta prioritet för installation. APT-inställningarna åsidosätter de prioriteringar som APT tilldelar paketversioner som standard, vilket ger användaren kontroll över vilken som är vald för installation.

Flera instanser av samma version av ett paket kan vara tillgängliga när källorna .list (5) -fil innehåller referenser till mer än en källa. I det här fallet hämtar apt-get den instans som listas tidigast i filen sources.list (5). APT-inställningarna påverkar inte valet av instans, bara valet av version.

Prioriteter avgör endast vilken version (som anges av versionsnumret) av ett paket är installerat. När det väl har bestämts används det första tillgängliga paketförvaret för att ladda ner det.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *