Plik preferencji APT /etc/apt/preferences i pliki częściowe w katalogu /etc/apt/preferences.d/ są używane do określania wersji pakietów wybieranych do instalacji.
Jeżeli plik sources.list(5) zawiera odniesienia do więcej niż jednej dystrybucji (na przykład stable i testing), to do zainstalowania może być dostępnych kilka wersji tego samego pakietu. APT nadaje priorytet każdej z dostępnych wersji. apt-get wybiera do zainstalowania wersję o najwyższym priorytecie (jeśli zależności pakietu pozwalają na jego zainstalowanie). Preferencje APT nadpisują domyślne priorytety ustawiane wersjom pakietów, pozwalając użytkownikowi kontrolować, które wersje pakietów są wybierane do zainstalowania.
Może być dostępnych kilka instancji tej samej wersji pakietu, jeśli plik sources.list(5) zawiera odwołania do więcej niż jednego źródła. W takim wypadku apt-get pobierze instancję ze źródła wymienionego najwcześniej w pliku sources.list(5). Preferencje APT nie mają wpływu na wybór instancji, ale na wybór wersji.
Preferencje są mocnym narzędziem w rękach administratora systemu, ale mogą stać się też jego największym koszmarem, jeśli zostaną nieostrożnie użyte! APT nie podważa preferencji, tak więc błędne ustawienia spowodują pojawienie się nieinstalowalnych pakietów lub podejmowanie przez APT niepoprawnych decyzji podczas aktualizacji pakietów. Mogą wystąpić jeszcze większe problemy, gdy w pliku preferencji APT zostanie skonfigurowanych wiele wydań dystrybucji bez zrozumienia zawartości kolejnych rozdziałów tej strony. Pakiety dołączone do określonego wydania nie są testowane w połączeniu z pakietami z innych (starszych lub nowszych) wydań, więc w takich sytuacjach nie zawsze działają, tak jakby się tego od nich oczekiwało. Ostrzegamy!
Proszę zauważyć, że pliki w katalogu /etc/apt/preferences.d są przetwarzane w rosnącym porządku alfanumerycznym. Należy również przestrzegać następującej konwencji: pliki albo nie powinny mieć żadnego rozszerzenia, albo rozszerzeniem powinno być "pref", a ich nazwy powinny zawierać tylko i wyłącznie znaki alfanumeryczne oraz myślniki ("-"), podkreślenia ("_") i kropki ("."). W przeciwnym wypadku APT zignoruje plik o niepoprawnej nazwie i jeśli nazwa pliku nie pasuje do wzorca podanego w liście zmiennych konfiguracji Dir::Ignore-Files-Silently, to wypisze odpowiedni komunikat.
Jeśli plik preferencji nie istnieje lub nie zawiera wpisu pasującego do pewnej wersji, to priorytetem przypisanym do tej wersji jest priorytet dystrybucji, do której wersja należy. Jest możliwe wybranie jednej dystrybucji, tak zwanego "wydania docelowego", która otrzyma priorytet wyższy niż priorytet domyślnie przypisywany innym dystrybucjom. To wydanie docelowe można ustawić w linii poleceń apt-get lub w pliku konfiguracyjnym APT /etc/apt/apt.conf. Proszę zauważyć, że wydanie docelowe nadpisuje jakikolwiek ogólny priorytet ustawiony w opisanym poniżej pliku /etc/apt/preferences, ale nie nadpisuje priorytetów szczegółowych przypisanych do poszczególnych pakietów. Na przykład
apt-get install -t testing jakiś-pakiet
APT::Default-Release "stable";
Jeśli wydanie docelowe zostało podane, to APT używa następującego algorytmu do ustawiania priorytetów wersjom pakietu. Przypisuje:
priorytet 1
priorytet 100
priorytet 500
priorytet 990
Jeśli nie określono wydania docelowego, to APT przypisuje priorytet 100 wszystkim zainstalowanym wersjom pakietów oraz priorytet 500 wszystkim niezainstalowanym wersjom pakietów, z wyjątkiem wersji pochodzących z archiwów, których pliki Release są oznaczone jako "NotAutomatic: yes" - takie wersje otrzymują priorytet 1 lub priorytet 100, jeśli dodatkowo są oznaczone jako "ButAutomaticUpgrades: yes".
APT, do określenia, którą wersję pakietu należy zainstalować, stosuje wtedy następujące reguły wymienione w kolejności, w jakiej są stosowane.
W typowej sytuacji zainstalowana wersja pakietu (priorytet 100) jest starsza od którejś z wersji dostępnych ze źródeł wymienionych w pliku sources.list(5) (priorytet 500 lub 999). W takim wypadku polecenia apt-get install jakiś-pakiet lub apt-get upgrade zaktualizują ten pakiet.
Rzadziej, ale się zdarza, że zainstalowana wersja pakietu jest nowsza niż jakakolwiek inna dostępna wersja. Polecenia apt-get install jakiś-pakiet i apt-get upgrade nie zastąpią takiego pakietu wcześniejszą wersją.
Czasami zainstalowana wersja pakietu jest nowsza niż wersja należąca do wydania docelowego, ale nie tak nowa jak wersja należąca do innej dystrybucji. Polecenia apt-get install jakiś-pakiet oraz apt-get upgrade zaktualizują taki pakiet, ponieważ przynajmniej jedna z dostępnych wersji ma większy priorytet niż wersja zainstalowana.
APT understands a field called Phased-Update-Percentage which can be used to control the rollout of a new version. It is an integer between 0 and 100.
A system's eligibility to a phased update is determined by seeding random number generator with the package source name, the version number, and /etc/machine-id, and then calculating an integer in the range [0, 100]. If this integer is larger than the Phased-Update-Percentage, the version is pinned to 1, and thus held back. Otherwise, normal policy rules apply.
In case you have multiple systems that you want to receive the same set of updates, you can set APT::Machine-ID to a UUID such that they all phase the same, or set APT::Get::Never-Include-Phased-Updates or APT::Get::Always-Include-Phased-Updates to true such that APT will never/always consider phased updates.
Plik preferencji APT pozwala administratorowi systemu na kontrolowanie przypisań priorytetów. Plik składa się z jednego lub większej liczby wieloliniowych rekordów rozdzielonych pustymi liniami. Rekordy mogą przyjmować jedną z dwóch postaci: szczegółową i ogólną.
Package: perl Pin: version 5.20* Pin-Priority: 1001
Ten wpis w postaci ogólnej w pliku preferencji APT ma zastosowanie tylko do grup pakietów. Na przykład następujący rekord przypisuje wysoki priorytet wszystkim wersjom pakietów dostępnych na lokalnym komputerze.
Package: * Pin: origin "" Pin-Priority: 999
Uwaga: słowem kluczowym używanym tutaj jest "origin", które może zostać użyte do dopasowania nazwy komputera. Następujący rekord ustawi wysoki priorytet wszystkim wersjom dostępnym na serwerze identyfikowanym przez nazwę komputera "ftp.de.debian.org".
Package: * Pin: origin "ftp.de.debian.org" Pin-Priority: 999
Nie należy tego mylić z polem Origin podanym w pliku Release. Wartością pola Origin w pliku Release jest nie adres internetowy, ale nazwa autora lub dystrybutora, taka jak "Debian" lub "Ximian".
Następujący rekord przypisuje niski priorytet wszystkim wersjom pakietów należących do jakiejkolwiek dystrybucji, której nazwą archiwum jest "unstable".
Package: * Pin: release a=unstable Pin-Priority: 50
Następujący rekord przypisuje niski priorytet wszystkim wersjom pakietów należących do jakiejkolwiek dystrybucji, której nazwą kodową jest "bookworm".
Package: * Pin: release n=bookworm Pin-Priority: 900
Następujący rekord przypisuje wysoki priorytet wszystkim wersjom pakietów należącym do jakiegokolwiek wydania, którego pole Archive (zawierające nazwę archiwum) jest równe "stable", a pole Version (numer wersji wydania) wynosi "11".
Package: * Pin: release a=stable, v=11 Pin-Priority: 500
The effect of the comma operator is similar to an "and" in logic: All conditions must be satisfied for the pin to match. There is one exception: For any type of condition (such as two "a" conditions), only the last such condition is checked.
APT także wspiera dopasowywanie przy użyciu wzorców glob(7) i wyrażeń regularnych otoczonych znakami /. Następujący przykład ustawia priorytet 500 wszystkim pakietom z dystrybucji experimental, których nazwa zaczyna się od gnome (jako wzorzec glob(7)) lub zawiera słowo kde (jako rozszerzone wyrażenie regularne POSIX otoczone ukośnikami).
Package: gnome* /kde/ Pin: release a=experimental Pin-Priority: 500
Wyrażenia te mogą wystąpić wszędzie, gdzie tylko może wystąpić łańcuch znaków. Dlatego następujący przykład przypisuje priorytet 990 wszystkim pakietom z wydania o nazwie zaczynającej się od hirsute.
Package: * Pin: release n=hirsute* Pin-Priority: 990
Jeśli wyrażenie regularne występuje w polu Package, to zachowanie jest takie samo, jakby to wyrażenie regularne zostało zastąpione listą wszystkich pakietów, których nazwy pasują do tego wyrażenia regularnego. Nie wiadomo jeszcze, czy to się nie zmieni w przyszłości, dlatego powinno się zawsze umieszczać preferencje zawierające wzorce pakietów na początku, tak żeby mogły zostać nadpisane przez preferencje dotyczące specyficznych pakietów. Wzorzec "*" w polu Package nie jest uznawany za wyrażenie glob(7).
APT supports pinning by source packages. To pin by a source package, prepend "src:" to the package name.
For example, to pin all binaries produced by the apt source package of this APT's version to 990, you can do:
Package: src:apt Pin: version 2.1.20 Pin-Priority: 990
Source package pinning can be combined with regular expressions and glob patterns, and can also take a binary architecture.
For example, let's pin all binaries for all architectures produced by any source package containing apt in its name to 990:
Package: src:*apt*:any Pin: version * Pin-Priority: 990
Priorytety (P) przypisane w pliku preferencji APT muszą być liczbami całkowitymi dodatnimi lub ujemnymi. Są interpretowane następująco (ogólnie rzecz biorąc):
P >= 1000
990 <= P < 1000
500 <= P < 990
100 <= P < 500
0 < P < 100
P < 0
P = 0
The first specific-form record matching an available package version determines the priority of the package version. Failing that, the priority of the package is defined as the maximum of all priorities defined by generic-form records matching the version. Records defined using patterns in the Pin field other than "*" are treated like specific-form records.
Na przykład, załóżmy, że plik preferencji APT zawiera trzy pokazane wcześniej rekordy:
Package: perl Pin: version 5.20* Pin-Priority: 1001 Package: * Pin: origin "" Pin-Priority: 999 Package: * Pin: release unstable Pin-Priority: 50
Wtedy:
Lokalizacje wymienione w pliku sources.list(5) powinny zawierać pliki Packages i Release opisujące pakiety dostępne w danej lokalizacji.
Plik Packages zazwyczaj znajduje się w katalogu.../dists/nazwa-dystrybucji/komponent/architektura: na przykład .../dists/stable/main/binary-i386/Packages. Składa się z serii wieloliniowych rekordów, po jednym na każdy pakiet dostępny w tym katalogu. Podczas ustawiania priorytetów APT bierze pod uwagę tylko dwie linie z każdego rekordu:
linia Package:
linia Version:
Plik Release znajduje się zazwyczaj w katalogu.../dists/nazwa-dystrybucji: na przykład .../dists/stable/Release lub .../dists/bullseye/Release. Składa się z jednego wieloliniowego rekordu, który odnosi się do wszystkich pakietów znajdujących się w drzewie katalogów o korzeniu w katalogu, w którym znajduje się opisywany plik. W przeciwieństwie do pliku Packages, prawie wszystkie linie z pliku Release są brane pod uwagę podczas ustawiania priorytetów APT:
linia Archive: lub Suite:
Pin: release a=stable
linia Codename:
Pin: release n=bookworm
linia Version:
Pin: release v=11 Pin: release a=stable, v=11 Pin: release 11
linia Component:
Pin: release c=main
linia Origin:
Pin: release o=Debian
linia Label:
Pin: release l=Debian
Wszystkie pliki Packages i Release pobierane z lokalizacji podanych w pliku sources.list(5) są przechowywane w katalogu /var/lib/apt/lists lub w pliku o nazwie będącej wartością zmiennej Dir::State::Lists z pliku apt.conf. Na przykład plik o nazwie debian.lcs.mit.edu_debian_dists_unstable_contrib_binary-i386_Release zawiera plik Release pobrany z komputera debian.lcs.mit.edu dla plików komponentu contrib architektury binary-i386 dystrybucji unstable .
Każdy rekord w pliku preferencji APT może opcjonalnie zaczynać się od jednej lub większej liczby linii zaczynających się od wyrazu Explanation: (tj. objaśnienie). Pozwala to na dodawanie komentarzy do rekordów.
Następujący plik preferencji APT spowoduje przypisanie priorytetu większego niż domyślny (500) wszystkim wersjom pakietu należącym do dystrybucji stable i zakazująco niskiego priorytetu wersjom pakietów należącym do innych dystrybucji Debiana.
Explanation: Odinstaluj lub nie instaluj wersji pakietów pochodzących z Debiana Explanation: innych niż te w dystrybucji stabilnej Package: * Pin: release a=stable Pin-Priority: 900 Package: * Pin: release o=Debian Pin-Priority: -10
Z odpowiednim plikiem sources.list(5) i z powyższym plikiem preferencji, każde z następujących poleceń spowoduje, że APT zaktualizuje pakiety do najnowszych wersji z dystrybucji stable.
apt-get install nazwa-pakietu apt-get upgrade apt-get dist-upgrade
Następujące polecenie spowoduje, że APT zaktualizuje podany pakiet do najnowszej wersji z dystrybucji testing. Pakiet nie będzie aktualizowany do czasu ponownego wydania tego samego polecenia.
apt-get install pakiet/testing
Następujący plik preferencji APT spowoduje przypisanie wysokiego priorytetu wersjom pakietów z dystrybucji testing, niskiego priorytetu wersjom pakietów z dystrybucji unstable oraz zakazująco niskiego priorytetu wersjom pakietów należącym do innych dystrybucji Debiana.
Package: * Pin: release a=testing Pin-Priority: 900 Package: * Pin: release a=unstable Pin-Priority: 800 Package: * Pin: release o=Debian Pin-Priority: -10
Z odpowiednim plikiem sources.list(5) i z powyższym plikiem preferencji, każde z następujących poleceń spowoduje, że APT zaktualizuje pakiety do najnowszych wersji z dystrybucji testing.
apt-get install nazwa-pakietu apt-get upgrade apt-get dist-upgrade
Następujące polecenie spowoduje, że APT zaktualizuje podany pakiet do najnowszej wersji z dystrybucji unstable. Od tej pory apt-get upgrade będzie aktualizował pakiet do najnowszej wersji z dystrybucji testing, jeśli ta wersja będzie nowsza od wersji zainstalowanej, lub w przeciwnym wypadku - do najnowszej wersji z dystrybucji unstable, jeśli ta wersja będzie nowsza od wersji zainstalowanej.
apt-get install pakiet/unstable
Następujący plik preferencji APT spowoduje przypisanie priorytetu większego niż domyślny (500) wszystkim wersjom pakietu należącym do dystrybucji o podanej nazwie kodowej oraz zakazująco niskiego priorytetu wersjom pakietów należącym do innych dystrybucji Debiana, nazw kodowych i archiwów. Proszę zauważyć, że z tym plikiem preferencji APT będzie śledziło migrację wydania z archiwum testing przez stable aż do oldstable. Aby śledzić postępy na przykład w dystrybucji testing niezależnie od nazwy kodowej tej dystrybucji, należy użyć jednej z zaprezentowanych powyżej przykładowych konfiguracji.
Explanation: Odinstaluj lub nie instaluj wersji pakietów pochodzących z Debiana Explanation: innych niż te w dystrybucji bookworm lub sid Package: * Pin: release n=bookworm Pin-Priority: 900 Explanation: Debian unstable jest zawsze nazwany sid Package: * Pin: release n=sid Pin-Priority: 800 Package: * Pin: release o=Debian Pin-Priority: -10
Z odpowiednim plikiem sources.list(5) i z powyższym plikiem preferencji, każde z następujących poleceń spowoduje, że APT zaktualizuje pakiety do najnowszych wersji z wydania nazwanego bookworm.
apt-get install nazwa-pakietu apt-get upgrade apt-get dist-upgrade
Następujące polecenie spowoduje, że APT zaktualizuje podany pakiet do najnowszej wersji z dystrybucji sid. Od tej pory apt-get upgrade będzie aktualizował pakiet do najnowszej wersji z dystrybucji bookworm, jeśli ta wersja będzie nowsza od wersji zainstalowanej, lub w przeciwnym wypadku - do najnowszej wersji z dystrybucji sid, jeśli ta wersja będzie nowsza od wersji zainstalowanej.
apt-get install pakiet/sid
/etc/apt/preferences
/etc/apt/preferences.d/
apt-get(8) apt-cache(8) apt.conf(5) sources.list(5)
m[blue]Strona błędów APTm[][1]. Aby zgłosić błąd w APT, proszę przeczytać /usr/share/doc/debian/bug-reporting.txt lub opis polecenia reportbug(1).
Tłumaczenie stron podręcznika: Robert Luberda <robert@debian.org>, 2000-2012. Tłumaczenie przewodnika offline: Krzysztof Fiertek <akfedux@megapolis.pl>, 2004
Proszę zauważyć, że przetłumaczony dokument może zawierać fragmenty nieprzetłumaczone. Ma to na celu uniknięcie utracenia istotnych informacji, w przypadkach gdy oryginał zostanie zaktualizowany, a tłumaczenie - nie.
zespół APT