Jeg prøver å mestre hvordan APT-pinning fungerer under Debian, men jeg har vanskelig for å forstå hvordan det løser prioriteringer.
Jeg har en source.list
-fil som har følgende oppføringer i nøyaktig rekkefølge:
deb <repository> stretch main deb <repository> testing main deb <repository> unstable main
Følgende depot inneholder disse pakkene per gren:
- stretch inneholder pakken
dependency version 1.0
; - testing inneholder pakken
dependency version 2.0
; - ustabilt inneholder pakkene
program
ogdependency version 2.0
;
Pakken program
avhenger av dependency version 2.0
.
Jeg må installere pakke program
, men jeg vil installere så få pakker som mulig fra unstable
, så jeg lager følgende preferences
fil for å feste denne grenen:
Package: * Pin: release a=unstable Pin-Priority: -1
Hvis jeg understa og riktig hvordan det fungerer, bør det installere pakker fra unstable
bare når jeg eksplisitt ber APT om det.
Jeg oppretter også en apt.conf
-fil for å sikre at stable
-grenen er standard:
APT::Default-Release "stable";
Etter å ha kjørt kommandoen apt-get update
, skal grenene ha følgende prioriteringer:
stable: 990 testing: 500 unstable: -1
Nå vil jeg installere pakken program
, for å gjøre det, kjører jeg følgende kommando:
apt-get install -t unstable program
Så nå er spørsmålet mitt, fra hvilken gren vil APT trekke pakke dependency version 2.0
? Ettersom både testing
og unstable
har den samme versjonen av pakken, hvilken blir plukket?
Hvis jeg forstår riktig, vil APT med -t unstable
alternativet sette en prioritet på 990 for pakkene som tilhører unstable
, men fra det jeg har opplevd , den trekker den fra testing
.
Så hvorfor henter APT pakker fra testing
som har en prioritet på 500 mens unstable
som satt til 990? Hva ville også være den optimale måten å installere så få pakker som mulig fra unstable
?
Kommentarer
- Hvis versjonen er den samme, er filen den samme også. Apt velger den raskeste eller den første definert speil, men nettadressen til den nedlastede filen er den samme. Sjekk det selv. Debian-arkiver ' lagrer ikke to identiske filer / versjon av en pakke på grunn av problemer med diskplass.
Svar
Dette forklares i apt_preferences
manpage :
Flere versjoner av en pakke kan være tilgjengelige for installasjon når filen sources.list (5) inneholder referanser til mer enn en distribusjon (for eksempel stabil og testing). APT tildeler en prioritet til hver versjon som er tilgjengelig. Med forbehold om avhengighetsbegrensninger velger
apt-get
versjonen med høyest prioritet for installasjon. APT-innstillingene overstyrer prioriteringene som APT tilordner til pakkeversjoner som standard, og gir dermed brukeren kontroll over hvilken som er valgt for installasjon.Flere forekomster av samme versjon av en pakke kan være tilgjengelig når kildene .list (5) -fil inneholder referanser til mer enn én kilde. I dette tilfellet
apt-get
laster ned forekomsten som er oppført tidligst i filen sources.list (5). APT-innstillingene påvirker ikke valg av forekomst, bare valg av versjon.
Prioritetene bestemmer bare hvilken versjon (som spesifisert av versjonsnummeret) av en pakke er installert. Når det er bestemt, brukes det første tilgjengelige pakkelageret til å laste det ned.