Zarządzanie pakietami za pomocą apt
Moduł 4: Oprogramowanie i aktualizacje · Czas czytania: 10 min
Cel lekcji: Po tej lekcji będą Państwo potrafili instalować, aktualizować i usuwać oprogramowanie za pomocą apt, sprawdzać, skąd pochodzi dany pakiet, oraz rozpoznawać, które aktualizacje są aktualizacjami bezpieczeństwa.
Kluczowe pojęcia: pakiet, źródło pakietów (repozytorium), sources.list, plik .sources (deb822), signed-by, apt update, apt upgrade, apt full-upgrade, remove, purge, autoremove, apt-cache policy, źródło bezpieczeństwa, dnf
Po co menedżer pakietów?
W systemie Windows program instalacyjny pobiera się ze strony internetowej. Na serwerze z Linuxem robi się tak prawie nigdy. Oprogramowanie przychodzi jako pakiet ze źródła pakietów (repozytorium): serwera dystrybucji z tysiącami programów, które zostały zbudowane i przetestowane dla Państwa wersji Debiana lub Ubuntu. Program, który pobiera, instaluje i aktualizuje te pakiety, nazywa się menedżerem pakietów. Na Debianie i Ubuntu jest to apt (a pod spodem dpkg), na AlmaLinux i Rocky Linux dnf.
Daje to trzy duże korzyści:
- Jedno polecenie aktualizuje wszystko. Serwer WWW, serwer SSH, biblioteki i jądro pochodzą z tego samego źródła. Nie trzeba sprawdzać na stronie każdego programu z osobna, czy pojawiła się nowa wersja.
- Pochodzenie jest weryfikowane. Każde źródło pakietów jest podpisane kluczem. apt odrzuca pakiety, których podpis się nie zgadza.
- Zależności są obsługiwane automatycznie. Jeśli nginx potrzebuje jakiejś biblioteki, apt zainstaluje ją automatycznie, a później ją usunie.
Źródła pakietów: skąd to pochodzi?
To, z jakich źródeł korzysta apt, jest zapisane w /etc/apt/. Przez długi czas był to jeden plik sources.list z wierszami takimi jak:
deb http://deb.debian.org/debian bookworm mainUbuntu 24.04 i nowsze, obrazy chmurowe Debiana oraz coraz więcej nowych instalacji używają nowszego formatu deb822: osobnych plików z rozszerzeniem .sources w /etc/apt/sources.list.d/. Stary plik sources.list można przekonwertować poleceniem sudo apt modernize-sources (apt 3, Debian 13). Przykład z Debiana 13:
anna@web1:~$ cat /etc/apt/sources.list.d/debian.sources
Types: deb
URIs: http://deb.debian.org/debian
Suites: trixie trixie-updates
Components: main
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
Types: deb
URIs: http://deb.debian.org/debian-security
Suites: trixie-security
Components: main
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpgNależy to czytać tak: suite to wersja (trixie to Debian 13; noble to Ubuntu 24.04), component to część źródła (main w Debianie; main, universe, restricted i multiverse w Ubuntu), a Signed-By określa, jakim kluczem źródło musi być podpisane. Ten ostatni element jest ważny: klucz należy do jednego źródła, a nie do wszystkich naraz. Jeśli później dodadzą Państwo źródło od producenta (Docker, Caddy, PostgreSQL), otrzyma ono własny plik klucza i własny wiersz Signed-By (lekcja 9.2).
Źródło z -security w nazwie to źródło bezpieczeństwa. To z niego pochodzą aktualizacje bezpieczeństwa, zwykle tego samego dnia, w którym luka staje się znana. W Ubuntu ta suite nazywa się noble-security (lub nazwa Państwa wersji).
Jeśli nadal używają Państwo starego pliku sources.list, wszystko działa normalnie. Nie należy jedynie mieszać tego samego źródła w obu formatach, ponieważ apt będzie wtedy zgłaszać zduplikowane wpisy.
update, upgrade i full-upgrade
Różnica między tymi trzema pojęciami to pierwsza pułapka dla początkujących.
| Polecenie | Co robi |
|---|---|
apt update | Pobiera listę pakietów i wersji dostępnych w źródłach. Niczego nie instaluje. |
apt upgrade | Aktualizuje zainstalowane pakiety do najnowszej wersji z tej listy. Nigdy niczego nie usuwa. Aktualizacja, która wymagałaby usunięcia innego pakietu, zostaje pominięta. |
apt full-upgrade | To samo, ale w razie potrzeby może także usuwać pakiety lub instalować nowe. Potrzebne przy aktualizacji do nowego wydania (lekcja 4.3), a czasem przy nowym jądrze. |
Zatem zawsze najpierw update, potem upgrade:
anna@web1:~$ sudo apt update
Hit:1 http://deb.debian.org/debian trixie InRelease
Get:2 http://deb.debian.org/debian-security trixie-security InRelease [43.4 kB]
...
3 packages can be upgraded. Run 'apt list --upgradable' to see them.
anna@web1:~$ apt list --upgradable
Listing... Done
libssl3t64/trixie-security 3.5.1-1+deb13u1 amd64 [upgradable from: 3.5.1-1]
openssh-server/trixie-security 1:10.0p1-7+deb13u1 amd64 [upgradable from: 1:10.0p1-7]
tzdata/trixie-updates 2026b-0+deb13u1 all [upgradable from: 2026a-0+deb13u1](Powyższe numery wersji są przykładowe.) Za nazwą widać, z której suite pochodzi nowa wersja. Wszystko z -security to aktualizacja bezpieczeństwa: tę warto zainstalować jak najszybciej. -updates to inne stabilne aktualizacje, na przykład nowe dane stref czasowych.
Następnie:
anna@web1:~$ sudo apt upgradeapt pokazuje, co się zmieni, i prosi o potwierdzenie. Prosimy przeczytać tę listę. Jeśli pojawi się komunikat "The following packages will be REMOVED" (następujące pakiety zostaną USUNIĘTE), dzieje się coś nietypowego i warto najpierw ustalić, dlaczego.
Instalowanie, usuwanie i porządkowanie
anna@web1:~$ sudo apt install nginx
anna@web1:~$ sudo apt remove nginx # program usunięty, konfiguracja w /etc zostaje
anna@web1:~$ sudo apt purge nginx # program i konfiguracja usunięte
anna@web1:~$ sudo apt autoremove # usuń to, co nie jest już nikomu potrzebneRóżnica między remove a purge jest przydatna: jeśli chcą Państwo coś tymczasowo usunąć i później zainstalować ponownie z tymi samymi ustawieniami, należy użyć remove. Jeśli chcą Państwo naprawdę zacząć od zera, purge.
Wyszukiwanie i więcej informacji:
anna@web1:~$ apt search fail2ban
anna@web1:~$ apt show fail2ban
anna@web1:~$ apt-cache policy openssh-server
openssh-server:
Installed: 1:10.0p1-7
Candidate: 1:10.0p1-7+deb13u1
Version table:
1:10.0p1-7+deb13u1 500
500 http://deb.debian.org/debian-security trixie-security/main amd64 Packages
*** 1:10.0p1-7 500
500 http://deb.debian.org/debian trixie/main amd64 Packagesapt-cache policy to polecenie, którego używa się, gdy chce się wiedzieć, skąd pochodzi pakiet i którą wersję wybierze apt. *** stoi przy zainstalowanej wersji, Candidate to wersja, którą zainstalowałaby aktualizacja.
Wersje Debiana a wersja programu
Częsta skarga: "W Debianie jest stara wersja nginx." To prawda i jest to celowe. Debian i Ubuntu zamrażają wersje w chwili wydania i od tego momentu dodają tylko poprawki bezpieczeństwa oraz poważne naprawy, bez nowych funkcji. Dlatego pakiet ze "starym" numerem wersji może mimo to zawierać wszystkie najnowsze poprawki bezpieczeństwa: zostały one przeniesione wstecz (backport) do starej wersji. Rozpoznają to Państwo po przyrostku, takim jak +deb13u1 lub ubuntu0.1.
Dlatego, oceniając, czy system jest podatny, nigdy nie należy porównywać samego numeru wersji ze stroną producenta. Prosimy sprawdzać komunikaty bezpieczeństwa swojej dystrybucji: Debian Security Tracker (security-tracker.debian.org) i Ubuntu Security Notices (ubuntu.com/security/notices) podają dla każdej luki, czy Państwa wersja została naprawiona.
Kilka zasad dla spokojnego serwera
- Instaluj tylko to, czego potrzebujesz. Każdy pakiet to kod, który trzeba aktualizować, a czasem usługa, która nasłuchuje (lekcja 5.1).
- Lepiej z dystrybucji niż ze strony internetowej. Programu, który skompilowali Państwo samodzielnie lub pobrali jako osobny plik,
apt upgradenie zaktualizuje. Wtedy to Państwo muszą śledzić komunikaty bezpieczeństwa. - Dodatkowe źródło tylko od samego producenta, z własnym kluczem i
Signed-By. Nigdy nie należy dodawać klucza "do wszystkiego" ani źródła z nieznanej strony (lekcja 4.3). - Czytaj, o co pyta apt. Podczas aktualizacji apt może zapytać, czy zmieniony plik konfiguracyjny ma zostać zastąpiony nową wersją od producenta. Jeśli nie wiedzą Państwo, co w nim zmieniono, prosimy wybrać "keep the local version" (zachowaj lokalną wersję, ustawienie domyślne) i później sprawdzić różnicę za pomocą
diff: nowa wersja leży obok jako.dpkg-dist.
Na AlmaLinux i Rocky Linux
Tam menedżer pakietów nazywa się dnf, a pakiety to .rpm. Polecenia przypominają te z apt: dnf check-update (lista), dnf upgrade (aktualizacja, update i upgrade w jednym), dnf install, dnf remove, dnf info. Źródła znajdują się w /etc/yum.repos.d/*.repo. Wiele dodatkowego oprogramowania (na przykład fail2ban) pochodzi z osobnego źródła EPEL, które najpierw włącza się poleceniem dnf install epel-release. Same aktualizacje bezpieczeństwa można wyświetlić poleceniem dnf updateinfo list --security.
W praktyce: panel VPS
W WebOké, podobnie jak u większości innych dostawców, instalacja VPS od razu poprawnie ustawia standardowe źródła dystrybucji. Zazwyczaj nie trzeba niczego w nich zmieniać. Prosimy zaktualizować serwer zaraz po pierwszym logowaniu za pomocą apt update i apt upgrade (lekcja 1.2), a przed większymi zmianami wykonać snapshot w panelu swojego dostawcy.
Podsumowanie
- Na Debianie i Ubuntu oprogramowanie pochodzi z podpisanych źródeł pakietów; apt pobiera, instaluje, aktualizuje i porządkuje.
apt updatepobiera tylko listę;apt upgradeaktualizuje bez usuwania;apt full-upgrademoże także usuwać.- Aktualizacje bezpieczeństwa pochodzą z suite z
-securityw nazwie;apt list --upgradableiapt-cache policypokazują, skąd pochodzi dana wersja. - Stary numer wersji z
+deb13u1lububuntu0.xmoże zawierać wszystkie poprawki (backport): należy sprawdzać komunikaty bezpieczeństwa swojej dystrybucji. - Dodatkowe źródło tylko od samego producenta, z własnym kluczem w
Signed-By.
Quiz
Zadanie
Zadanie Z4.1: Które aktualizacje są aktualizacjami bezpieczeństwa? W przykładowym pliku apt-upgradable.txt znajduje się wynik poleceń apt list --upgradable i apt-cache policy z serwera z Debianem 13. Prosimy odpowiedzieć: które pakiety pochodzą ze źródła bezpieczeństwa, który pakiet pochodzi ze źródła producenta zamiast z Debiana, która wersja openssh-server jest obecnie zainstalowana i który pakiet jest zwykłą stabilną aktualizacją bez powodu związanego z bezpieczeństwem? Program porównuje odpowiedzi ze stałym kluczem. Jeśli mają Państwo już własny serwer, prosimy uruchomić te same polecenia i sprawdzić, co się pojawi.
Przeczytaj więcej
- Zabezpieczanie VPS: pierwsze pięć minut
- Pierwsze kroki z VPS
- Podręcznik administratora Debiana, rozdział 6 (apt, w języku angielskim): https://debian-handbook.info/browse/stable/apt.html
- Dokumentacja
sources.list(5)(format deb822): https://manpages.debian.org/trixie/apt/sources.list.5.en.html - Debian Security Tracker: https://security-tracker.debian.org/tracker/
