6.2. Komendy aptitude
i apt-get
APT jest szeroko zakrojonym projektem, który w swoich planach zakładał interfejs graficzny. Bazuje na bibliotece, która zawiera rdzeń aplikacji, a apt-get
jest pierwszym konsolowym front-endem stworzonym w ramach tego projektu.
Później pojawiło się wiele innych interfejsów graficznych tworzonych jako zewnętrzne projekty: synaptic
, aptitude
(który zawiera zarówno interfejs konsolowy i graficzny — nawet jeżeli jeszcze nie w pełni kompletny), wajig
, etc. Najczęściej polecanym interfejsem, apt-get
, jest ten używany podczas instalacji Debiana, który będzie również używany w przykładach poniższej sekcji. Zauważ jednak, że konsolowa składnia aptitude
jest bardzo podobna. Miejsca, gdzie występują znaczące różnice pomiędzy apt-get
i aptitude
, zostaną szerzej opisane i wyjaśnione.
For any work with APT, the list of available packages needs to be updated; this can be done simply through apt-get update
. Depending on the speed of your connection, the operation can take a while since it involves downloading a certain number of Packages
/Sources
/Translation-language-code
files, which have gradually become bigger and bigger as Debian has developed (at least 10 MB of data for the main
section). Of course, installing from a CD-ROM set does not require any downloading — in this case, the operation is very fast.
6.2.2. Instalacja i Usuwanie
Używając APTa pakiety mogą być dodawane i usuwane z systemu, odpowiednio za pomocą apt-get install pakiet
i apt-get remove pakiet
. W obu przypadkach APT automatycznie zainstaluje wymagane zależności lub usunie pakiety, które są zależne od usuwanego pakietu. Komenda apt-get purge pakiet
obejmuje kompletną deinstalację — usuwane są również pliki konfiguracyjne.
Jeżeli w pliku
sources.list
występuje kilka dystrybucji, możliwe jest wskazanie wersji pakietu do instalacji. Można zażądać konkretnej wersji używając
apt-get install pakiet=wersja
, ale zazwyczaj preferowane jest wskazanie dystrybucji jego pochodzenia (
Stabilna,
Testowa lub
Niestabilna) — używając
apt-get install pakiet/dystrybucja
. Za pomocą tej komendy możliwe jest wrócenie do starszej wersji pakietu (jeżeli wiadomo, że działa lepiej), pod warunkiem że jest ciągle dostępna w jednym ze źródeł wskazanych w pliku
sources.list
. W przeciwnym razie z odsieczą przychodzi archiwum
snapshot.debian.org
(spójrz na fiszkę
IDĄĆ DALEJ Stare wersje pakietów: snapshot.debian.org
).
Przykład 6.3. Instalacja niestabilnej wersji spamassassin
#
apt-get install spamassassin/unstable
6.2.3. Uaktualnienie systemu
Zaleca się regularne uaktualnienia, ponieważ zawierają one najnowsze aktualizacje dotyczące bezpieczeństwa. W celu uaktualnienia należy użyć apt-get upgrade
lub aptitude safe-upgrade
(oczywiście po apt-get update
). Ta komenda wyszukuje pakiety, które mogą zostać uaktualnione bez usuwania innych pakietów. Innymi słowy, celem jest zapewnienie jak najmniej inwazyjnego uaktualnienia. apt-get
jest nieco bardziej restrykcyjny niż aptitude
, ponieważ nie zezwoli na instalację pakietów, które nie były zainstalowane wcześniej.
apt-get
zazwyczaj wybierze najnowszy numer wersji (z wyjątkiem pakietów z Experymentalnego i stable-backports, które są domyślnie ignorowane bez względu na numer wersji). Jeżeli plik sources.list
zawiera wpisy dla Testowego lub Niestabilnego, to apt-get upgrade
zamieni większość Twojego Stabilnego systemu na Testowego lub Niestabilnego, co niekoniecznie było w zamyśle.
Aby wskazać, żeby apt-get
używał konkretnej dystrybucji w czasie wyszukiwania zmodernizowanych pakietów, należy użyć opcji -t
lub --target-release
, po której wpisać nazwę danej dystrybucji (na przykład: apt-get -t stable upgrade
). Aby oszczędzić sobie wpisywania tej opcji za każdym razem użycia apt-get
, można dodać wpis APT::Default-Release "stable";
w pliku /etc/apt/apt.conf.d/local
.
W celu ważniejszych uaktualnień, takich jak zmiana na następną wersję Debiana, należy użyć apt-get dist-upgrade
("uaktualnienie dystrybucji"). Używając tej instrukcji apt-get
dokona całkowitego uaktualnienia, nawet jeżeli będzie musiał usunąć przestarzałe pakiety lub zainstalować nowe zależności. Poza tym jest to komenda stosowana na co dzień przez użytkowników wydania Debiana Niestabilnego, która podąża za jego ewolucją z dnia na dzień. To jest tak proste, że mówi samo za siebie: reputacja APTa została zbudowana na tej genialnej funkcjonalności.
aptitude full-upgrade
jest odpowiednikiem dla aptitude
, jednakże dist-upgrade
jest również rozpoznawane (ale przestarzałe).
6.2.4. Opcje konfiguracyjne
Poza wymienionymi wcześniej elementami konfiguracyjnymi, możliwa jest konfiguracja pewnych aspektów działania APTa poprzez dodanie instrukcji w pliku katalogu /etc/apt/apt.conf.d/
. Przypomnijmy na przykład, że APT może poinstruować dpkg
, aby ignorował błędy kolizji plików przez dodanie instrukcji DPkg::Options { "--force-overwrite"; }
.
Jeżeli dostęp do sieci jest możliwy jedynie przez proxy, należy dodać linię podobną do
Acquire::http::proxy "http://twojeproxy:3128"
. Dla proxy FTP należy wpisać
Acquire::ftp::proxy "ftp://twojeproxy"
. Więcej opcji konfiguracyjnych można znaleźć na stronach pomocy
apt.conf(5) za pomocą komendy
man apt.conf
(szczegóły korzystania ze stron pomocy można znaleźć w
Sekcja 7.1.1, „Podręcznik systemowy”).
6.2.5. Zarządzanie Priorytetami Pakietów
One of the most important aspects in the configuration of APT is the management of the priorities associated with each package source. For instance, you might want to extend one distribution with one or two newer packages from Testing, Unstable or Experimental. It is possible to assign a priority to each available package (the same package can have several priorities depending on its version or the distribution providing it). These priorities will influence APT's behavior: for each package, it will always select the version with the highest priority (except if this version is older than the installed one and if its priority is less than 1000).
APT defines several default priorities. Each installed package version has a priority of 100. A non-installed version has a priority of 500 by default, but it can jump to 990 if it is part of the target release (defined with the -t
command-line option or the APT::Default-Release
configuration directive).
Można zmodyfikować priorytety dodając w pliku /etc/apt/preferences
wpisy z nazwami danych pakietów, ich wersją, źródłem i nowym priorytetem.
APT will never install an older version of a package (that is, a package whose version number is lower than the one of the currently installed package) except if its priority is higher than 1000. APT will always install the highest priority package which follows this constraint. If two packages have the same priority, APT installs the newest one (whose version number is the highest). If two packages of same version have the same priority but differ in their content, APT installs the version that is not installed (this rule has been created to cover the case of a package update without the increment of the revision number, which is usually required).
In more concrete terms, a package whose priority is less than 0 will never be installed. A package with a priority ranging between 0 and 100 will only be installed if no other version of the package is already installed. With a priority between 100 and 500, the package will only be installed if there is no other newer version installed or available in another distribution. A package of priority between 501 and 990 will only be installed if there is no newer version installed or available in the target distribution. With a priority between 990 and 1000, the package will be installed except if the installed version is newer. A priority greater than 1000 will always lead to the installation of the package even if it forces APT to downgrade to an older version.
Kiedy APT sprawdza plik /etc/apt/preferences
najpierw bierze pod uwagę najbardziej szczegółowe wpisy (zazwyczaj opisujące konkretne pakiety), następnie te ogólne (przykładowo: zawierające wszystkie pakiety danej dystrybucji). Jeżeli istnieje kilka ogólnych wpisów, dopasowywany jest pierwszy z nich. Dostępne kryteria wyboru zawierają nazwę pakietu i źródło jego pochodzenia. Każde źródło pakietu jest identyfikowane za pomocą informacji zawartej w pliku Release
, który jest pobierany przez APTa z plikami Packages
. Opisuje ona pochodzenie (zazwyczaj "Debian", dla pakietów z oficjalnego serwera lustrzanego, ale może być to również imię osoby lub nazwa organizacji w przypadku innych repozytoriów). Zawiera też nazwę dystrybucji (zazwyczaj Stabilny, Testowy, Niestabilny lub Eksperymentalny w przypadku standardowych dystrybucji dostarczanych przez Debiana) oraz jej wersję (na przykład 5.0 dla Debiana Lenny). Przyjrzyjmy się zatem nieco bliżej samej składni na przykładzie realistycznego studium przypadku tego mechanizmu.
Załóżmy, że chcesz używać tylko pakietów ze stabilnej wersji Debiana. Te dostarczane w innych wersjach nie powinny być instalowane, chyba że na bezpośrednie żądanie. Mógłbyś dodać następujące wpisy w pliku /etc/apt/preferences
:
a=stable
definiuje nazwę wybranej dystrybucji. o=Debian
ogranicza zakres pakietów do tych, których źródłem jest "Debian".
Załóżmy, że masz serwer z kilkoma lokalnymi programami zależnymi od wersji 5.14 Perla i chcesz upewnić się, że uaktualnienia nie zainstalują innej jego wersji. Możesz użyć takiego wpisu:
Referencyjna dokumentacja dla tego pliku konfiguracyjnego jest dostępna na stronach pomocy apt_preferences(5), które można wyświetlić za pomocą man apt_preferences
.
6.2.6. Praca z Kilkoma Dystrybucjami
To genialne narzędzie, jakim jest apt-get
, pozwala wybierać pakiety pochodzące z innych dystrybucji. Jeżeli chciałbyś na przykład po zainstalowaniu systemu Stabilnego przetestować pakiety dostępne w Testowym lub Niestabilnym nie odbiegając zbytnio od początkowego stanu systemu.
Nawet jeżeli sporadycznie wystąpią problemy związane z mieszaniem pakietów z różnych dystrybucji,
apt-get
bardzo dobrze zarządza ich współistnieniem i efektywnie ogranicza wynikające z tego zagrożenia. Najlepszym sposobem postępowania jest wylistowanie wszystkich dystrybucji występujących w pliku
/etc/apt/sources.list
(niektórzy zawsze umieszczają wszystkie trzy dystrybucje, ale należy pamiętać, że
Niestabilny jest przeznaczony dla doświadczonych użytkowników) i zdefiniowanie przewodniej dystrybucji używając parametru
APT::Default-Release
(spójrz na
Sekcja 6.2.3, „Uaktualnienie systemu”).
Załóżmy, że Stabilny jest przewodnią dystrybucją, ale Testowy i Niestabilny są również wymienione w pliku sources.list
. W takim przypadku można użyć apt-get install pakiet/testing
, aby zainstalować pakiet z Testowego. Jeżeli instalacja nie powiedzie się z powodu niespełnionych zależności, można je spełnić w zakresie Testowego przez dodanie parametru -t testing
. Oczywiście dla Niestabilnego sposób postępowania jest analogiczny.
W tym przypadku uaktualnienia (upgrade
i dist-upgrade
) są wykonywane w zakresie Stabilnego z wyjątkiem pakietów, które już zostały uaktualnione do innej dystrybucji: będą one używać aktualizacji z danej dystrybucji. Opisane zachowanie zostanie wyjaśnione poniżej, z użyciem domyślnych priorytetów ustawianych przez APTa. Nie wahaj się używać apt-cache policy
(spójrz na fiszkę), aby zweryfikować wartości priorytetów.
Everything centers around the fact that APT only considers packages of higher or equal version than the installed one (assuming that /etc/apt/preferences
has not been used to force priorities higher than 1000 for some packages).
Let's assume that you have installed version 1 of a first package from Stable and that version 2 and 3 are available respectively in Testing and Unstable. The installed version has a priority of 100 but the version available in Stable (the very same) has a priority of 990 (because it is part of the target release). Packages in Testing and Unstable have a priority of 500 (the default priority of a non-installed version). The winner is thus version 1 with a priority of 990. The package “stays in Stable”.
Let's take the example of another package whose version 2 has been installed from Testing. Version 1 is available in Stable and version 3 in Unstable. Version 1 (of priority 990 — thus lower than 1000) is discarded because it is lower than the installed version. This only leaves version 2 and 3, both of priority 500. Faced with this alternative, APT selects the newest version, the one from Unstable.If you don't want a package installed from Testing to migrate to Unstable, you have to assign a priority lower than 500 (490 for example) to packages coming from Unstable. You can modify /etc/apt/preferences
to this effect:
Package: *
Pin: release a=unstable
Pin-Priority: 490
6.2.7. Śledzenie Automatycznie Zainstalowanych Pakietów
Jedną z podstawowych funkcjonalności apt-get
(początkowo jedynie w aptitude
) jest śledzenie pakietów zainstalowanych tylko jako zależności. Te pakiety są nazywane "automatycznymi" i zawierają na przykład biblioteki.
Posiadając tą informację, po usunięciu pakietów, zarządcy pakietów mogą wyznaczyć listę automatycznych pakietów, które nie są już potrzebne (ponieważ nie ma już "ręcznie zainstalowanych" pakietów, które ich wymagają). apt-get autoremove
służy do pozbycia się tych pakietów. aptitude
nie posiada odpowiednika tej komendy, ponieważ usuwa je automatycznie jak tylko zostaną wykryte. Oba programy pokazują wiadomość z listą pakietów, których to dotyczy.
Dobrym nawykiem jest zaznaczanie jako automatycznych tych pakietów, które nie są bezpośrednio wymagane, dzięki czemu są one automatycznie usuwane w momencie, kiedy nie są już potrzebne.
apt-mark auto pakiet
zaznaczy pakiet jako automatyczny, podczas gdy
apt-mark manual pakiet
działa przeciwnie.
aptitude markauto
i
aptitude unmarkauto
działają w ten sam sposób, niemniej jednak oferują więcej możliwości zaznaczania wielu pakietów naraz (patrz
Sekcja 6.4.1, „aptitude
”). Interaktywny, konsolowy interfejs
aptitude
również pozwala na łatwy przegląd "flag automatyczności" wielu pakietów.
Niektórzy mogą być ciekawi, dlaczego pewien automatycznie zainstalowany pakiet jest obecny w systemie. W celu uzyskania tej informacji w linii komend można użyć aptitude why pakiet
(apt-get
nie posiada analogicznej opcji):
$ aptitude why python-debian
i aptitude Poleca apt-xapian-index
i A apt-xapian-index Wymaga python-debian (>= 0.1.15)