Rozwiązanie zależności przypinania APT

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

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *