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
ogdependency 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.