APT Fastgørelse af afhængighedsopløsning

Jeg prøver at mestre, hvordan APT-pinning fungerer under Debian, men jeg har svært ved at forstå, hvordan det løser prioriteter.

Jeg har en source.list fil, der har følgende poster i denne nøjagtige rækkefølge:

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

Følgende lager indeholder disse pakker pr. Gren:

  • stretch indeholder pakken dependency version 1.0;
  • test indeholder pakken dependency version 2.0;
  • ustabil indeholder pakkerne program og dependency version 2.0;

Pakken program afhænger af dependency version 2.0.

Jeg har brug for at installere pakke program, men jeg vil installere så få pakker som muligt fra unstable, så jeg opretter følgende preferences fil for at fastgøre denne gren:

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

Hvis jeg understa nd korrekt hvordan det fungerer, skal det kun installere pakker fra unstable når jeg eksplicit beder APT om det.

Jeg opretter også en apt.conf -fil for at sikre, at stable -grenen er standard:

APT::Default-Release "stable"; 

Efter at have kørt kommandoen apt-get update, filialerne skal have følgende prioriteter:

stable: 990 testing: 500 unstable: -1 

Nu vil jeg installere pakken program, for at gøre det kører jeg følgende kommando:

apt-get install -t unstable program 

Så nu er mit spørgsmål, fra hvilken gren APT trækker pakke dependency version 2.0? Da både testing og unstable har den samme version af pakken, hvilken bliver der valgt?

Hvis jeg forstå korrekt, APT med indstillingen -t unstable, vil sætte en prioritet på 990 til de pakker, der tilhører unstable, men ud fra hvad jeg har oplevet , det trækker det fra testing.

Så hvorfor trækker APT pakker fra testing, der har en prioritet på 500 mens unstable som indstillet til 990? Hvad ville også være den optimale måde at installere så få pakker som muligt fra unstable?

Kommentarer

  • Hvis versionen er den samme, er filen også den samme . Apt vælger den hurtigste eller den første defineret spejl, men url for den downloadede fil er den samme. Tjek det selv. Debian-arkiver ' t gemmer to identiske filer / version af en pakke på grund af problemer med diskplads.

Svar

Dette forklares i apt_preferences manpage :

Flere versioner af en pakke kan være tilgængelige til installation, når filen sources.list (5) indeholder referencer til mere end en distribution (for eksempel stabil og test). APT tildeler en prioritet til hver version, der er tilgængelig. Med forbehold for afhængighedsbegrænsninger vælger apt-get den version med den højeste prioritet til installation. APT-præferencer tilsidesætter de prioriteter, som APT tildeler som standard pakkeversioner, hvilket giver brugeren kontrol over, hvilken der er valgt til installation.

Flere forekomster af den samme version af en pakke kan være tilgængelige, når kilderne .list (5) -fil indeholder referencer til mere end en kilde. I dette tilfælde downloader apt-get den forekomst, der er anført tidligst i filen sources.list (5). APT-præferencer påvirker ikke valg af instans, kun valg af version.

Prioriteter bestemmer kun hvilken version (som specificeret af versionsnummeret) af en pakke er installeret. Når det er bestemt, bruges det første tilgængelige pakkeopbevaringssted til at downloade det.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *