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. Using Alternate Mirrors
6.1.5. Non-Official Resources: mentors.debian.net
6.1.6. Buforujący Pośrednik dla Pakietów Debiana
6.2. aptitude, apt-get, and apt Commands
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).
APT needs to be given a “list of package sources”: the file /etc/apt/sources.list will list the different repositories (or “sources”) that publish Debian packages. APT will then import the list of packages published by each of these sources. This operation is achieved by downloading Packages.xz or a variant using a different compression method (such as Packages.gz or .bz2) files (in case of a source of binary packages) and Sources.xz or a variant (in case of a source of source packages) and by analyzing their contents. When an old copy of these files is already present, APT can update it by only downloading the differences (see sidebar 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.
The second field gives the base URL of the source (combined with the filenames present in the Packages.xz files, it must give a full and valid URL): this can consist in a Debian mirror or in any other package archive set up by a third party. The URL can start with file:// to indicate a local source installed in the system's file hierarchy, with http:// to indicate a source accessible from a web server, or with ftp:// for a source available on an FTP server. The URL can also start with cdrom: for CD-ROM/DVD-ROM/Blu-ray disc based installations, although this is less frequent, since network-based installation methods are more and more common.
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 SPOŁECZNOŚĆ Bruce Perens, lider kontrowersyjny — 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).
The cdrom entries describe the CD/DVD-ROMs you have. Contrary to other entries, a CD-ROM is not always available since it has to be inserted into the drive and since only one disc can be read at a time. For those reasons, these sources are managed in a slightly different way, and need to be added with the apt-cdrom program, usually executed with the add parameter. The latter will then request the disc to be inserted in the drive and will browse its contents looking for Packages files. It will use these files to update its database of available packages (this operation is usually done by the apt update command). From then on, APT can require the disc to be inserted if it needs one of its packages.

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/ stretch/updates main contrib non-free
deb-src http://security.debian.org/ stretch/updates main contrib non-free

## Debian mirror

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

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

# Stable backports
deb http://deb.debian.org/debian stretch-backports main contrib non-free
deb-src http://deb.debian.org/debian stretch-backports main contrib non-free
This file lists all sources of packages associated with the Stretch version of Debian (the current Stable as of this writing). We opted to name “stretch” explicitly instead of using the corresponding “stable“ alias (stable, stable-updates, stable-backports) because we don't want to have the underlying distribution changed outside of our control when the next stable release comes out.
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.
This repository will typically contain fixes for critical bugs which could not be fixed before release or which have been introduced by subsequent updates. Depending on the urgency, it can also contain updates for packages that have to evolve over time… like spamassassin's spam detection rules, clamav's virus database, or the daylight-saving time rules of all timezones (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.
Anyone can use this repository to test those updates before their official publication. The extract below uses the stretch-proposed-updates alias which is both more explicit and more consistent since jessie-proposed-updates also exists (for the Oldstable updates):
deb http://ftp.debian.org/debian stretch-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.
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/stretch-backports
$ sudo apt-get install -t stretch-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://deb.debian.org/debian unstable main contrib non-free
deb-src http://deb.debian.org/debian unstable main contrib non-free

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

# Stable
deb http://deb.debian.org/debian stable main contrib non-free
deb-src http://deb.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

The archive of Experimental packages is present on all Debian mirrors, and contains packages which are not in the Unstable version yet because of their substandard quality — they are often software development versions or pre-versions (alpha, beta, release candidate…). A package can also be sent there after undergoing subsequent changes which can generate problems. The maintainer then tries to uncover them with help from advanced users who can handle important issues. After this first stage, the package is moved into Unstable, where it reaches a much larger audience and where it will be tested in much more detail.
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://deb.debian.org/debian experimental main contrib non-free

6.1.4. Using Alternate Mirrors

The sources.list examples in this chapter refer to package repositories hosted on deb.debian.og. Those URLs will redirect you to servers which are close to you and which are managed by Content Delivery Networks (CDN) whose main role is to store multiple copies of the files across the world to deliver them as fast as possible to users. The CDN companies that Debian is working with are Debian partners who are offering their services freely to Debian. While none of those servers are under direct control of Debian, the fact that the whole archive is sealed by GPG signatures makes it a non-issue.
Picky users who are not satisfied with the performance of deb.debian.org can try to find a better mirror in the official mirror list:
But when you don't know which mirror is best for you, this list is of not much use. Fortunately for you, Debian maintains DNS entries of the form ftp.country-code.debian.org (e.g. ftp.us.debian.org for the USA, ftp.fr.debian.org for France, etc.) which are covering many countries and which are pointing to one (or more) of the best mirrors available within that country.
As an alternative to deb.debian.org, there used to be httpredir.debian.org. This service would identify a mirror close to you (among the list of official mirrors, using GeoIP mainly) and would redirect APT's requests to that mirror. This service has been deprecated due to reliability concerns and now httpredir.debian.org provides the same CDN-based service as deb.debian.org.

6.1.5. Non-Official Resources: mentors.debian.net

There are numerous non-official sources of Debian packages set up by advanced users who have recompiled some software (Ubuntu made this popular with their Personal Package Archive service), by programmers who make their creation available to all, and even by Debian developers who offer pre-versions of their package online.
The mentors.debian.net site is interesting (although it only provides source packages), since it gathers packages created by candidates to the status of official Debian developer or by volunteers who wish to create Debian packages without going through that process of integration. These packages are made available without any guarantee regarding their quality; make sure that you check their origin and integrity and then test them before you consider using them in production.
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.6. 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://deb.debian.org/debian
security http://security.debian.org
approx runs by default on port 9999 via a systemd socket and requires the users to adjust their sources.list file to point to the approx server:
# Sample sources.list pointing to a local approx server
deb http://apt.falcot.com:9999/security stretch/updates main contrib non-free
deb http://apt.falcot.com:9999/debian stretch main contrib non-free