Próbuję zrozumieć, jak działa przypinanie APT w Debianie, ale trudno mi zrozumieć, jak określa priorytety.
Mam plik source.list
, który zawiera następujące wpisy w dokładnej kolejności:
deb <repository> stretch main deb <repository> testing main deb <repository> unstable main
Następujące repozytorium zawiera te pakiety na gałąź:
- stretch zawiera pakiet
dependency version 1.0
; - test zawiera pakiet
dependency version 2.0
; - unstable zawiera pakiety
program
idependency version 2.0
;
Pakiet program
zależy od dependency version 2.0
.
Muszę zainstalować pakiet program
, ale chcę zainstalować jak najmniej pakietów z unstable
, więc tworzę następujący preferences
plik do przypięcia tej gałęzi:
Package: * Pin: release a=unstable Pin-Priority: -1
Jeśli rozumiem Aby poprawnie działać, powinien zainstalować pakiety z unstable
tylko wtedy, gdy wyraźnie nakazuję APT.
Tworzę również apt.conf
, aby upewnić się, że gałąź stable
jest domyślna:
APT::Default-Release "stable";
Po uruchomieniu polecenia apt-get update
, gałęzie powinny mieć następujące priorytety:
stable: 990 testing: 500 unstable: -1
Teraz chcę zainstalować pakiet program
, aby to zrobić, uruchamiam następujące polecenie:
apt-get install -t unstable program
Więc teraz moje pytanie brzmi, z której gałęzi APT pobierze pakiet dependency version 2.0
? Ponieważ zarówno testing
, jak i unstable
mają tę samą wersję pakietu, który zostanie wybrany?
Jeśli rozumiem poprawnie, APT z opcją -t unstable
ustawi priorytet 990 pakietów należących do unstable
, ale z tego, czego doświadczyłem , pobiera je z testing
.
Dlaczego więc APT pobiera pakiety z testing
, który ma priorytet 500 podczas gdy unstable
ustawiony na 990? Jaki byłby optymalny sposób zainstalowania jak najmniejszej liczby pakietów z unstable
?
Komentarze
- Jeśli wersja jest taka sama, to również plik jest taki sam . Apt wybiera najszybszą lub pierwszą zdefiniowany serwer lustrzany, ale adres URL pobranego pliku jest taki sam. Sprawdź to sam. Repozytoria Debiana nie ' nie przechowują dwóch identycznych plików / wersji pakietu z powodu problemów z miejscem na dysku. / li>
Odpowiedź
Jest to wyjaśnione w apt_preferences
manpage :
Kilka wersji pakietu może być dostępnych do instalacji, gdy plik sources.list (5) zawiera odniesienia do więcej niż jednej dystrybucji (na przykład stabilna i testowa). APT przypisuje priorytet każdej dostępnej wersji. Z zastrzeżeniem ograniczeń zależności,
apt-get
wybiera wersję o najwyższym priorytecie do instalacji. Preferencje APT zastępują priorytety, które APT domyślnie przypisuje wersjom pakietów, dając użytkownikowi kontrolę nad tym, który pakiet zostanie wybrany do instalacji.Kilka wystąpień tej samej wersji pakietu może być dostępnych, gdy źródła Plik .list (5) zawiera odniesienia do więcej niż jednego źródła. W tym przypadku
apt-get
pobiera instancję wymienioną najwcześniej w pliku sources.list (5). Preferencje APT nie wpływają na wybór instancji, tylko na wybór wersji.
Priorytety określają tylko, która wersja (określona przez numer wersji) pakiet jest zainstalowany. Po ustaleniu, do pobrania jest używane pierwsze dostępne repozytorium pakietów.