APT Pinning avhengighetsoppløsning

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

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *