Snažím se zvládnout, jak připínání APT funguje v Debianu, ale těžko chápu, jak řeší priority.
Mám soubor source.list
, který obsahuje následující položky v tomto přesném pořadí:
deb <repository> stretch main deb <repository> testing main deb <repository> unstable main
Následující úložiště obsahuje tyto balíčky pro každou větev:
- stretch obsahuje balíček
dependency version 1.0
; - testování obsahuje balíček
dependency version 2.0
; - unstable obsahuje balíčky
program
adependency version 2.0
;
Balíček program
závisí na dependency version 2.0
.
Potřebuji nainstalovat balíček program
, ale z unstable
chci nainstalovat co nejméně balíčků, takže vytvořím následující preferences
soubor pro připnutí této větve:
Package: * Pin: release a=unstable Pin-Priority: -1
Pokud rozumím Jak správně funguje, měl by instalovat balíčky z unstable
, pouze když na to výslovně řeknu APT.
Vytvořím také apt.conf
soubor, který zajistí, že stable
větev je výchozí:
APT::Default-Release "stable";
Po spuštění příkazu apt-get update
, větve by měly mít následující priority:
stable: 990 testing: 500 unstable: -1
Nyní chci nainstalovat balíček program
k tomu spustím následující příkaz:
apt-get install -t unstable program
Takže moje otázka zní, ze které větve APT vytáhne balíček dependency version 2.0
? Protože testing
i unstable
mají stejnou verzi balíčku, která z nich bude vybrána?
Pokud správně pochopit, APT s volbou -t unstable
nastaví prioritu 990 na balíčky patřící do unstable
, ale z toho, co jsem zažil , vytáhne to z testing
.
Proč tedy APT stahuje balíčky z testing
, které má prioritu 500 zatímco unstable
nastaven na 990? Jaký by byl také optimální způsob instalace co nejméně balíčků z unstable
?
Komentáře
- Pokud je verze stejná, pak je soubor také stejný . Apt vybere nejrychlejší nebo první definované zrcadlo, ale adresa URL staženého souboru je stejná. Zkontrolujte to sami. Úložiště Debianu neukládají ' dva stejné soubory / verzi balíčku kvůli problémům s diskovým prostorem.
Odpověď
To je vysvětleno v apt_preferences
manpage :
V případě, že je k dispozici soubor sources.list (5), může být k dispozici několik verzí balíčku. obsahuje odkazy na více než jednu distribuci (například stabilní a testovací). APT přiřadí prioritu každé verzi, která je k dispozici.
apt-get
v závislosti na omezeních závislosti vybere verzi s nejvyšší prioritou pro instalaci. Předvolby APT přepisují priority, které APT přiřazuje verzím balíčků ve výchozím nastavení, čímž dává uživateli kontrolu nad tím, který z nich je vybrán pro instalaci.Může být k dispozici několik instancí stejné verze balíčku, pokud jsou zdroje Soubor .list (5) obsahuje odkazy na více než jeden zdroj. V tomto případě
apt-get
stáhne instanci uvedenou nejdříve v souboru sources.list (5). Předvolby APT neovlivňují výběr instance, pouze výběr verze.
Priority určují pouze to, která verze (podle čísla verze) je nainstalován balíček. Jakmile je to určeno, použije se ke stažení první dostupné úložiště balíčků.