Product SiteDocumentation Site

Rozdział 6. Konserwacja i aktualizacje: Narzędzia APT

6.1. Wypełnianie pliku sources.list
6.1.1. Składnia
6.1.2. Repozytoria dla Stabilnych Użytkowników
6.1.3. Repozytoria dla użytkowników Testowej/Niestabilnej
6.1.4. Nieoficjalne zasoby: apt-get.org i mentors.debian.net
6.1.5. Buforujący Pośrednik dla Pakietów Debiana
6.2. Komendy aptitude i apt-get
6.2.1. Inicjalizacja
6.2.2. Instalacja i Usuwanie
6.2.3. Uaktualnienie systemu
6.2.4. Opcje konfiguracyjne
6.2.5. Zarządzanie Priorytetami Pakietów
6.2.6. Praca z Kilkoma Dystrybucjami
6.2.7. Śledzenie Automatycznie Zainstalowanych Pakietów
6.3. Komenda apt-cache
6.4. Interfejsy: aptitude, synaptic
6.4.1. aptitude
6.4.2. synaptic
6.5. Sprawdzanie Autentyczności Pakietów
6.6. Uaktualnienie z Jednej Stabilnej Dystrybucji do Następnej
6.6.1. Zalecana Procedura
6.6.2. Obsługa Problemów po Uaktualnieniu
6.7. Utrzymywanie Aktualności Systemu
6.8. Automatyczne Uaktualnienia
6.8.1. Konfigurowanie dpkg
6.8.2. Konfigurowanie APTa
6.8.3. Konfigurowanie debconf
6.8.4. Obsługa Interakcji Linii Komend
6.8.5. Cudowne Połączenie
6.9. Wyszukiwanie Pakietów
Tym co sprawia, że Debian jest tak popularny wśród administratorów, jest łatwość instalacji nowych programów oraz aktualizowania całego systemu. Ta unikatowa zaleta wynika głównie z zastosowania programu APT, którego administratorzy Falcot Corp uczyli się z zapałem.
APT jest skrótem od angielskiego Advanced Package Tool - Zaawansowane narzędzie zarządzania pakietami. Tym, co sprawia, że program jest 'zaawansowany', jest traktowanie pakietów. Nie przetwarza ich indywidualnie, lecz uważa je za całość i tworzy najlepszą możliwą kombinację pakietów w zależności od tego, co jest dostępne i kompatybilne (zgodnie z zależnościami).
APTowi trzeba dostarczyć "listę źródeł pakietów": plik /etc/apt/sources.list będzie zawierał listę różnych repozytoriów (lub "źródeł"), które publikują pakiety Debiana. Wtedy APT zaimportuje listę pakietów opublikowanych przez każde ze źródeł. Operacja jest dokonywana przez pobranie plików Packages.{gz,bz2,lzma,xz} (w przypadku źródła dostarczającego pakiety binarne) i Sources.{gz,bz2,lzma,xz} (w przypadku źródła dostarczającego pakiety źródłowe), a następnie analizę ich zawartość. Gdy stara kopia tych plików jest obecna w systemie, APT może zaktualizować ją przez pobranie jedynie różnic (spójrz na fiszkę WSKAZÓWKA Uaktualnienie przyrostowe).

6.1. Wypełnianie pliku sources.list

6.1.1. Składnia

Każda aktywna linia pliku /etc/apt/sources.list zawiera opis źródła, tworzony z 3 części oddzielonych spacjami.
Pierwsze pole określa rodzaj źródła:
  • deb” dla pakietów binarnych,
  • deb-src” dla pakietów źródłowych.
Drugie pole zawiera bazowy URL źródła (w połączeniu z nazwami w pliku Packages.gz, stanowi pełny i prawomocny adres URL): może on znajdować się na serwerze lustrzanym Debiana lub w innym archiwum pakietu utworzonego przez stronę trzecią. URL może rozpoczynać się od file:// wskazując lokalne źródło zainstalowane w systemowej hierarchii plików, http:// wskazując źródło dostępne z serwera WWW, lub ftp:// dla źródła dostępnego na serwerze FTP. Adres URL może również rozpoczynać się od cdrom:// dla instalacji z płyty CD-ROM/DVD-ROM/Blu-ray, chociaż ten jest rzadziej spotykany, ponieważ metody instalacji oparte na sieci są coraz bardziej powszechne.
Składnia ostatniego pola zależy od struktury repozytorium. W najprostszym przypadku, można zwyczajnie wskazać podkatalog (z wymaganym ukośnikiem na końcu) pożądanego źródła (często jest to po prostu “./”, które sygnalizuje brak podkatalogu — pakiety są wtedy bezpośrednio pod wskazanym adresem URL). W najczęściej spotykanym przypadku, repozytoria będą miały strukturę serwera lustrzanego Debiana, z wieloma dystrybucjami, z których każda zawiera wiele komponentów. W tych przypadkach należy podać nazwę wybranej dystrybucji (poprzez jej "nazwę kodową" — spójrz na listę w fiszce COMMUNITY Bruce Perens, a controversial leader — lub odpowiednie "wydania" — stable, testing, unstable), a następnie komponenty (lub sekcje) aby aktywować (wybrane spośród main, contrib i non-free na typowym serwerze lustrzanym Debiana).
Wpisy cdrom opisują CD/DVD-ROMy, które posiadasz. W przeciwieństwie do innych wpisów, CD-ROM nie zawsze jest dostępny, ponieważ musi być włożony do napędu i może być czytany tylko jeden na raz. Z wymienionych powodów, te źródła są zarządzane w nieco inny sposób i muszą być dodawane za pomocą programu apt-cdrom, zazwyczaj uruchamianego z parametrem add. W tym przypadku program zażąda włożenia płyty do napędu i przeszuka jej zawartość w poszukiwaniu plików Pakietów. Użyje tych plików do zaktualizowania bazy dostępnych pakietów (ta operacja jest zwykle wywoływana komendą apt-get update). Od tej pory APT może wymagać włożenia płyty, jeżeli będzie potrzebował któregoś z tych pakietów.

6.1.2. Repozytoria dla Stabilnych Użytkowników

Poniżej jest standardowy plik sources.list dla systemu działającego pod kontrolą Stabilnej wersji Debiana:

Przykład 6.1. plik /etc/apt/sources.list dla użytkowników Stabilnego Debiana

# Security updates
deb http://security.debian.org/ wheezy/updates main contrib non-free
deb-src http://security.debian.org/ wheezy/updates main contrib non-free

## Debian mirror

# Base repository
deb http://ftp.debian.org/debian wheezy main contrib non-free
deb-src http://ftp.debian.org/debian wheezy main contrib non-free

# Stable updates
deb http://ftp.debian.org/debian wheezy-updates main contrib non-free
deb-src http://ftp.debian.org/debian wheezy-updates main contrib non-free

# Stable backports
deb http://ftp.debian.org/debian wheezy-backports main contrib non-free
deb-src http://ftp.debian.org/debian wheezy-backports main contrib non-free
Ten plik zawiera listę wszystkich pakietów związanych z wersją Debian Wheezy (aktualna Stabilna w czasie pisania tego tekstu). Zdecydowaliśmy używać wprost nazwy "wheezy" zamiast odpowiadającego pseudonimu "stabilny" (stable, stable-updates, stable-backports), ponieważ nie chcemy, aby omawiana dystrybucja zmieniła się bez naszej wiedzy, kiedy pojawi się nowe stabilne wydanie.
Większość pakietów będzie pochodzić z "repozytorium bazowego", które zawiera wszystkie pakiety, ale jest rzadko aktualizowane (około raz na 2 miesiące w "wydaniu kropkowym"). Inne repozytoria są częściowe (nie zawierają wszystkich pakietów) i mogą zawierać aktualizacje (pakiety w nowszej wersji) do zainstalowania przez APTa. Kolejne sekcje wyjaśnią powody istnienia i prawa rządzące każdym z tych repozytoriów.
Zauważ, że jeżeli pożądana wersja pakietu jest dostępna w kilku repozytoriach, to zostanie użyte pierwsze z nich występujące w pliku sources.list. Z tego powodu nieoficjalne źródła zazwyczaj są dodawane na końcu pliku.
Tak na marginesie, większość wiadomości z tej sekcji na temat wydania Stabilnego równie dobrze stosuje się do Oldstable, ponieważ to tylko starsza wersja Stabilnego, która jest utrzymywana równolegle.

6.1.2.1. Aktualizacje bezpieczeństwa

Aktualizacje bezpieczeństwa nie są hostowane w zwyczajnej sieci serwerów lustrzanych Debiana, ale na security.debian.org (na małym zbiorze maszyn zarządzanych przez Debian System Administrators). To archiwum zawiera aktualizacje bezpieczeństwa (przygotowane przez Debian Security Team i/lub przez zarządców pakietów) dla Stabilnej dystrybucji.
Serwer może również hostować aktualizacje bezpieczeństwa dla Testowego, ale nie zdarza się to zbyt często, ponieważ te aktualizacje docierają do Testowego normalnym kanałem aktualizacji pochodzącym od Niestabilnego.

6.1.2.2. Stabilne aktualizacje

Stabilne aktualizacje nie są wrażliwe ze względów bezpieczeństwa, ale uważane za wystarczająco ważne, aby udostępnić je użytkownikom przez kolejnym stabilnym wydaniem kropkowym.
To repozytorium będzie zwykle zawierać poprawki błędów dla krytycznych błędów, które nie mogły być naprawione przed wydaniem lub pojawiły się pomiędzy kolejnymi aktualizacjami. Zależnie od pilności, może zawierać również aktualizacje dla pakietów, które muszą ewoluować z czasem... jak zasady wykrywania spamu spamassassin, baza wirusów clamav lub czas letni dla wszystkich stref czasowych (tzdata).
W praktyce, to repozytorium jest podzbiorem repozytorium proposed-updates, starannie wybranym przez Stable Release Managers.

6.1.2.3. Proponowane Aktualizacje

Po opublikowaniu, Stabilna dystrybucja jest aktualizowana tylko raz na 2 miesiące. Repozytorium proposed-updates jest miejscem, gdzie są przygotowywane spodziewane aktualizacje (pod nadzorem Stable Release Managers).
Aktualizacje bezpieczeństwa i stabilne opisane w poprzedniej sekcji są zawsze zawarte w tym repozytorium, ale jest też więcej, ponieważ zarządcy pakietów maja również okazję naprawienia ważnych błędów, które nie wymagają natychmiastowego wydania.
Każdy może używać tego repozytorium do testowania tych aktualizacji przed ich oficjalną publikacją. Wypis poniżej używa pseudonimu wheezy-proposed-updates, który jest zarówno bardziej wyraźny i spójny, ponieważ istnieje również squeeze-proposed-updates (dla aktualizacji Oldstable):
deb http://ftp.debian.org/debian wheezy-proposed-updates main contrib non-free

6.1.2.4. Stabilne Wsteczne Łatki

Repozytorium stable-backports hostuje "wsteczne łatki pakietów". Termin ten odnosi się do pakietu nowego oprogramowania, które zostało przekompilowane dla starszej dystrybucji, ogólnie dla Stabilnej.
Kiedy dystrybucja staje się trochę podstarzała, wiele projektów związanych z oprogramowaniem wydało nowe wersje, które nie są włączone do aktualnej Stabilnej (która jest modyfikowana wyłącznie w celu naprawienia krytycznych problemów, na przykład z bezpieczeństwem). Ponieważ Testowa i Niestabilna mogą być bardziej ryzykowne, zarządcy pakietów oferują czasem przekompilowane wersje nowych aplikacji dla Stabilnej, która ma tą zaletę, że ogranicza potencjalną niestabilność do małej liczby wybranych pakietów.
Repozytorium stable-backports jest teraz dostępne na normalnych serwerach lustrzanych Debiana. Ale wsteczne łatki do Squeeze są nadal hostowane na dedykowanym serwerze (backports.debian.org) i wymagają następującego wpisu w sources.list:
deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free
Wsteczne łatki z stable-backports są zawsze tworzone z pakietów dostępnych w Testowym. To zapewnia, że wszystkie zainstalowane wsteczne łatki będzie można zaktualizować do odpowiedniej stabilnej wersji, kiedy będzie dostępne następne stabilne wydanie Debiana.
Mimo, że to repozytorium dostarcza nowsze wersje pakietów, APT nie zainstaluje ich do czasu, aż nie wydasz do tego bezpośrednich instrukcji (lub jeżeli już tego nie zrobiłeś z wcześniejszą wersją danej wstecznej łatki):
$ sudo apt-get install package/wheezy-backports
$ sudo apt-get install -t wheezy-backports package

6.1.3. Repozytoria dla użytkowników Testowej/Niestabilnej

Poniżej jest standardowy plik sources.list dla systemu działającego pod kontrolą Testowej lub Niestabilnej wersji Debiana:

Przykład 6.2. plik /etc/apt/sources.list dla użytkowników Testowego/Niestabilnego Debiana

# Unstable
deb http://ftp.debian.org/debian unstable main contrib non-free
deb-src http://ftp.debian.org/debian unstable main contrib non-free

# Testing
deb http://ftp.debian.org/debian testing main contrib non-free
deb-src http://ftp.debian.org/debian testing main contrib non-free

# Stable
deb http://ftp.debian.org/debian stable main contrib non-free
deb-src http://ftp.debian.org/debian stable main contrib non-free

# Security updates
deb http://security.debian.org/ stable/updates main contrib non-free
deb http://security.debian.org/ testing/updates main contrib non-free
deb-src http://security.debian.org/ stable/updates main contrib non-free
deb-src http://security.debian.org/ testing/updates main contrib non-free
Używając tego pliku sources.list APT będzie instalował pakiety z wersji Niestabilnej. Jeżeli nie jest to pożądane, należy użyć ustawienia APT::Default-Release (patrz Sekcja 6.2.3, „Uaktualnienie systemu”), które poinstruuje APTa, aby wybierał pakiety z innej dystrybucji (w tym przypadku najprawdopodobniej Testowej).
Istnieją uzasadnione przyczyny, aby załączyć wszystkie te repozytoria, mimo że jedno powinno wystarczyć. Użytkownicy Testowego docenią możliwość wybrania naprawionych pakietów z Niestabilnego kiedy wersja w Testowym jest obarczona denerwującym błędem. Z drugiej strony, użytkownicy Niestabilnego nadgryzieni przez niespodziewane regresje mają możliwość pobrania starszych pakietów dla (rzekomo działającej) wersji Testowej.
Załączenie Stabilnego jest bardziej dyskusyjne, ale zazwyczaj daje dostęp to pakietów, które zostały usunięte z wersji deweloperskich. Zapewnia również dostęp do najnowszych aktualizacji pakietów, które nie zostały zmodyfikowane od ostatniego stabilnego wydania.

6.1.3.1. Repozytorium Eksperymentalnego

Archiwum pakietów Eksperymentalnych jest dostępne na każdym serwerze lustrzanym Debiana i zawiera pakiety, które jeszcze nie są w wersji Niestabilnej z powodu na ich niską jakość — jest to zazwyczaj oprogramowanie w wersji deweloperskiej lub wstępnej (alfa, beta, kandydat do wydania…). Pakiet może być tam również wysłany po przejściu pewnych zmian, które mogą spowodować problemy. Wtedy zarządca stara się je odkryć korzystając z pomocy zaawansowanych użytkowników, którzy dają sobie radę z trudnymi zadaniami. Po tym etapie pakiet jest przeniesiony do Niestabilnego, gdzie dociera do znacznie szerszego grona odbiorców i będzie dużo skrupulatniej przetestowany.
Eksperymentalny jest używany głównie przez użytkowników, którym nie przeszkadza ciągłe psucie i naprawianie ich systemu. Taki podział pozwala w razie potrzeby na zaimportowanie pakietu, którego użytkownik chciałby wypróbować lub używać. Jest to również standardowe podejściem Debiana z nim związane, ponieważ dodanie go w pliku APTa sources.list nie powoduje systematycznego korzystania z jego pakietów. Linia, którą należy dodać to:
deb http://ftp.debian.org/debian experimental main contrib non-free

6.1.4. Nieoficjalne zasoby: apt-get.org i mentors.debian.net

Istnieje wiele nieoficjalnych źródeł pakietów Debiana założonych przez zaawansowanych użytkowników, którzy przekompilowali pewne oprogramowanie, przez programistów, którzy udostępniają publicznie swoje dzieła, a nawet przez deweloperów Debiana, którzy oferują dostęp do wczesnych wersji swoich pakietów. Aby łatwiej znajdywać te alternatywne źródła została założona strona internetowa. Zawiera ona znaczna ilość źródeł pakietów Debiana, które mogą być natychmiast włączone do plików sources.list. Jednakże należy uważać, aby nie dodawać losowych pakietów. Każde źródło jest bowiem zaprojektowane dla konkretnej wersji Debiana (dla tej, której użyto do kompilacji danego pakietu); każdy użytkownik powinien zachować pewną zgodność odnośnie tego, co wybiera do instalacji.
Strona mentors.debian.net jest również interesująca, ponieważ zbiera pakiety źródłowe stworzone przez kandydatów do statusu oficjalnego dewelopera Debiana lub przez wolontariuszy, którzy chcą tworzyć pakiety dla Debiana bez przechodzenia przez ten proces integracji. Te pakiety są udostępniane bez żadnej gwarancji odnośnie ich jakości; należy sprawdzać ich pochodzenie i spójność, a także przetestować przed rozważaniem wprowadzenia ich do użytku.
Instalowanie pakietu oznacza przyznanie uprawnień root jego twórcy, ponieważ to on decyduje o zawartości skryptów inicjalizacyjnych, które są uruchamiane pod tą tożsamością. Oficjalne pakiety Debiana są tworzone przez wolontariuszy, z którymi współpracowano i zostali zweryfikowani oraz potrafią zabezpieczyć swój pakiet w taki sposób, aby było możliwe sprawdzenie jego pochodzenia i spójności.
Generalnie należy być ostrożnym w stosunku do pakietów, których pochodzenie jest niewiadome oraz nie są hostowane na jednym z oficjalnych serwerów Debiana: należy ocenic stopień zaufania do jego twórcy i sprawdzić spójność pakietu.

6.1.5. Buforujący Pośrednik dla Pakietów Debiana

Kiedy cała sieć maszyn jest skonfigurowana, aby używać tego samego zdalnego serwera w celu pobierania tych samych zaktualizowanych pakiety, każdy administrator wie, że korzystnie byłoby mieć pośrednika działającego jako lokalna pamięć podręczna (spójrz na fiszkę SŁOWNIK Pamięć podręczna).
Można skonfigurować APT, żeby używał "standardowego" pośrednika (spójrz na fiszkę Sekcja 6.2.4, „Opcje konfiguracyjne” dotyczącą APTa i Sekcja 11.6, „HTTP/FTP Proxy” dotyczące pośrednika), ale ekosystem Debiana oferuje lepsze rozwiązania tego problemu. Przeznaczone do tego oprogramowanie, zaprezentowane w tej sekcji, jest lepsze od zwykłego pośrednika, ponieważ może używać specyficznej struktury repozytorium APTa (np.: wie, czy konkretne pliki są przestarzałe, czy nie i odpowiednio dopasowuje czas ich przetrzymywania).
apt-cacher i apt-cacher-ng działają jak zwykłe pośredniczące serwery buforowe. Plik sources.list nie jest zmieniany, ale APT jest skonfigurowany, aby używać ich jako pośredników dla wychodzących zapytań.
Z kolei approx działa jako serwer HTTP odzwierciedlając dowolną liczbę zdalnych repozytoriów pod jego adresami URL najwyższego poziomu. Mapowanie pomiędzy tymi katalogami najwyższego poziomu, a zdalnymi URLami repozytoriów jest przechowywane w pliku /etc/approx/approx.conf:
# <name> <repository-base-url>
debian   http://ftp.debian.org/debian
security http://security.debian.org
approx domyślnie działa na porcie 9999 przez inetd (spójrz na fiszkę Sekcja 9.6, „The inetd Super-Server”) i wymaga od użytkownika, aby dopasować plik sources.list, żeby wskazywał serwer approx:
# Przykładowy plik sources.list wskazujący lokalny serwer approx
deb http://apt.falcot.com:9999/security wheezy/updates main contrib non-free
deb http://apt.falcot.com:9999/debian wheezy main contrib non-free