Priorytety pakietów można ustawić w pliku /etc/apt/preferences, ewentualnie w plikach znajdujących się w katalogu /etc/apt/preferences.d. Wyjątkiem jest opcja „target release”, którą ustawia się w pliku /etc/apt/apt.conf, ewentualnie w pliku znajdującym się w katalogu /etc/apt/apt.conf.d. Po co zmieniać domyślne wartości? Najczęściej korzysta się z takiej możliwości jeżeli używa się repozytoriów zawierających te same pakiety, ale w różnych wersjach, np. mieszając gałąź testową z gałęzią niestabilną. Ustawienie własnych priorytetów daje większą kontrolę nad tym jakie wersje pakietów będą domyślnie instalowane, a jakie np. po wyraźnym wskazaniu ich z wiersza poleceń.


Spis treści:

Domyślnie używane wartości

Wartość „Target Release”

Zdefiniowanie „target release” ustawia pakietom wartość 990. Opcję tę można zdefiniować na dwa sposoby:

aptitude -t unstable install pakiet
apt-get -t testing install pakiet
APT::Default-Release "stable";
APT::Default-Release "squeeze";
APT::Default-Release "6.0*";

Definiując „target-release” można użyć wersji, nazwy kodowej lub wersji wydania.

Pierwszeństwo wyboru wersji pakietu

Jak APT interpretuje wartości

Ustawienia Pin-Priority

Ustawienia w oparciu o wersję

Przykładowy wpis:

Package: perl
Pin: version 5.8*
Pin-Priority: 1001

Wpis ustawia wartość 1001 wszystkim wersjom pakietu perl rozpoczynającym się od „5.8”, niezależnie z jakiego repozytorium pochodzą. Nowsza wersja (np. zaczynająca się od „5.9”) nie zostanie zainstalowana nawet jeśli będzie dostępna, chyba że miałaby ustawiony jeszcze wyższy priorytet.

Kolejne pakiety mogą zostać podane w tej samej linii — każdy oddzielony spacją, można też dla każdego utworzyć osobny wpis. Wersja pakietu/pakietów może być podana dokładnie lub jej część może zostać zastąpiona gwiazdką.

Ustawienia w oparciu o źródło pochodzenia

Przykładowy wpis:

Package: *
Pin: origin ftp.de.debian.org
Pin-Priority: 980

Wpis ustawia wartość 980 wszystkim wersjom pakietów pochodzącym z serwera „ftp.de.debian.org”, niezależnie od sekcji w jakiej się znajdują, nazwy kodowej, etykiety repozytorium itd.

Nazwa serwera może zostać podana dokładnie lub jej część może zostać zastąpiona gwiazdką. Przykładowo poniższy wpis ustawi wartość 110 wszystkim pakietom pochodzącym z serwerów, których nazwa zawiera ciąg znaków „backports”:

Package: *
Pin: origin *backports*
Pin-Priority: 110

W przypadku lokalnego repozytorium utworzonego za pomocą dpkg-scanpackages można użyć wpisu:

Package: *
Pin: origin ""
Pin-Priority: 991

Wpis ustawia wartość 991 wszystkim wersjom pakietów pochodzącym z takiego repozytorium.

Ustawienia w oparciu o plik „Release”

Ustawienia te odnoszą się do wpisów znajdujących się w pliku „Release” danego repozytorium, przykładowo aktualnie dla repozytorium wersji stabilnej wygląda on tak:

Origin: Debian
Label: Debian
Suite: stable
Version: 6.0.2.1
Codename: squeeze
Date: Sun, 26 Jun 2011 09:04:52 UTC
Architectures: amd64 armel i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel powerpc s390 sparc
Components: main contrib non-free
Description: Debian 6.0.2.1 Released 26 June 2011

Opcje z których można skorzystać przy ustawianiu Pin-Priority to:

Pin: release o=Debian
Pin: release l=Debian
Pin: release a=stable
Pin: release v=6.0.2.1
Pin: release n=squeeze
Pin: release c=main

Opcje można łączyć — oddzielając je przecinkami — lub skorzystać z tylko jednej z nich. Jeżeli opcje zostaną połączone, ustawiona wartość Pin-Priority zostanie przypisana tylko pakietom, które spełniają wszystkie z wymienionych warunków.

Przykładowe wpisy:

Package: *
Pin: release a=stable
Pin-Priority: 900

Package: *
Pin: release o=Debian
Pin-Priority: -10

Wpis ustawia wartość 900 wszystkim pakietom z wersji „stable”, jednocześnie zabrania instalacji innych pakietów z repozytorium Debiana. Kolejność ma znaczenie — gdyby zamienić sekcje miejscami, wpis zabraniałby instalacji wszystkich pakietów z repozytorium Debiana i ustawiał wartość 900 pakietom z wersji „stable”, ale tylko pochodzącym z zewnętrznych repozytoriów.

Package: *
Pin: release o=Debian,a=experimental
Pin-Priority: 102

Wpis ustawia wartość 102 pakietom pochodzącym z oficjalnego repozytorium experimental Debiana. Wartość pakietów pochodzących z nieoficjalnych repozytoriów experimental nie zostanie zmieniona.

Package: *
Pin: release o=Debian Mozilla Team,c=iceweasel-beta
Pin-Priority: 720

Package: *
Pin: release o=Debian Mozilla Team,c=iceweasel-aurora
Pin-Priority: 710

Wpis ustawia wartość 720 pakietom pochodzącym z sekcji „iceweasel-beta” repozytorium „Debian Mozilla Team” oraz wartość 710 pakietom pochodzącym z sekcji „iceweasel-aurora” tego samego repozytorium.

Wyrażenia regularne

Od wersji 0.18.4 APT obsługuje wyrażenia regularne także w nazwach pakietów oraz poszczególnych opcjach ustawień opartych o plik „Release”. Przykładowo poniższy wpis ustawia wartość 500 pakietom pochodzącym z repozytorium experimental, których nazwa zaczyna się słowem „gnome” lub zawiera słowo „kde”.

Package: gnome* /kde/
Pin: release n=experimental
Pin-Priority: 500

Ułatwienia przy ustawianiu Pin-Priority

Przydatne są zwłaszcza dwa polecenia, pierwszym jest:

apt-cache policy

Użyte bez żadnych argumentów wyświetla listę wszystkich dostępnych sekcji we wszystkich używanych repozytoriach wraz z aktualnymi wartościami Pin-Priority. Od razu widać dokładnie jakie jest źródło pochodzenia pakietów z tego repozytorium oraz jakich opcji można użyć przy ustawianiu wartości w oparciu o plik „Release”.

Fragment wyniku odnoszący się do sekcji „main” omawianego wcześniej repozytorium wersji stabilnej wygląda tak:

 500 http://ftp.de.debian.org/debian/ stable/main amd64 Packages
     release v=6.0.2.1,o=Debian,a=stable,n=squeeze,l=Debian,c=main
     origin ftp.de.debian.org

Drugim przydatnym poleceniem jest polecenie:

apt-cache policy pakiet

Łatwo można się dzięki niemu dowiedzieć jakie wersje danego pakietu są aktualnie dostępne, z jakich repozytoriów i sekcji pochodzą, jakie wartości są im przypisane, a także jaka jego wersja jest zainstalowana, a jaka kandydująca.

Przykładowy wynik:

mplayer2:
  Zainstalowana: 1:2.0~git20110718-0.3
  Kandydująca:   1:2.0~git20110718-0.3
  Tabela wersji:
 *** 1:2.0~git20110718-0.3 0
        990 http://www.debian-multimedia.org/ unstable/main amd64 Packages
        100 /var/lib/dpkg/status
     1:2.0~git20110422-0.1 0
        980 http://www.debian-multimedia.org/ testing/main amd64 Packages
     2.0-134-g84d8671-2 0
        920 http://ftp.de.debian.org/debian/ experimental/main amd64 Packages

Więcej informacji dostępnych jest jak zawsze w podręcznikach systemowych:

man 5 apt_preferences

oraz:

man 5 apt.conf

Przypisy:

  1. #domyślne
  2. #target_release
  3. #pierwszeństwo
  4. #interpretacja
  5. #ustawienia
  6. #version
  7. #origin
  8. #release
  9. #regularne
  10. #ułatwienia