Przejdź do treści

Ustawienia plików cookie

Prosimy wybrać, na które rodzaje plików cookie Państwo zezwalają. Wybór można zmienić w dowolnym momencie w Ustawieniach plików cookie na dole każdej strony. Polityka prywatności

Niezbędne

Zawsze włączone

Potrzebne do logowania, zachowania koszyka i zapamiętania wyborów. Są zawsze włączone.

Jakie pliki cookie?
  • weboke_sessie, weboke_klant, weboke_remember: sesja i pozostanie zalogowanym
  • weboke_basket: koszyk
  • wkBtwIncl: wyświetlanie cen z VAT lub bez VAT
  • wok_cookies: wybór dotyczący plików cookie, 12 miesięcy

Mierzą, która reklama prowadzi do odwiedzin lub zamówienia, abyśmy nie płacili za reklamy, które nic nie dają.

Jakie pliki cookie?
  • Google Ads przez Google Tag Manager (_gcl_au, _gcl_aw), do 90 dni
  • OpenAI Ads, reklamy w ChatGPT
  • wok_aff: przez którego partnera trafili Państwo do nas (program partnerski), 60 dni

4,6

Kraj i język

Każdy kraj ma własną stronę z cenami i stawką VAT tego kraju.

Wyświetl

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:

  1. 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.
  2. Pochodzenie jest weryfikowane. Każde źródło pakietów jest podpisane kluczem. apt odrzuca pakiety, których podpis się nie zgadza.
  3. 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 main

Ubuntu 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.gpg

Należ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.

PolecenieCo robi
apt updatePobiera listę pakietów i wersji dostępnych w źródłach. Niczego nie instaluje.
apt upgradeAktualizuje 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-upgradeTo 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 upgrade

apt 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 potrzebne

Róż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 Packages

apt-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 upgrade nie 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 update pobiera tylko listę; apt upgrade aktualizuje bez usuwania; apt full-upgrade może także usuwać.
  • Aktualizacje bezpieczeństwa pochodzą z suite z -security w nazwie; apt list --upgradable i apt-cache policy pokazują, skąd pochodzi dana wersja.
  • Stary numer wersji z +deb13u1 lub ubuntu0.x moż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

1. Wpisują Państwo sudo apt upgrade na serwerze, na którym przez tydzień nic nie robiono, a apt informuje, że wszystko jest aktualne. Wiedzą jednak Państwo, że wczoraj ukazała się aktualizacja OpenSSH. Jakie jest najbardziej prawdopodobne wyjaśnienie?



2. Jaka jest różnica między apt remove a apt purge?



3. W apt list --upgradable widnieje openssh-server/noble-security .... Co oznacza część noble-security?



4. Na stronie programu podana jest wersja 2.8, a Debian dostarcza 2.6 z +deb13u2. Kolega mówi: "Debian jest więc podatny na wszystkie luki naprawione w 2.7 i 2.8." Co jest prawdą?



5. Dlaczego dodatkowe źródło pakietów powinno mieć własny klucz z Signed-By?



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.

Zadanie Z4.1: Które aktualizacje są aktualizacjami bezpieczeństwa?

Plik do tego zadania: apt-upgradable.txt





Wprowadzone dane i wyniki sprawdzania nie są zapisywane. Przeglądarka zapamiętuje udzielone odpowiedzi oraz informację, czy zadanie zostało zaliczone. Po zalogowaniu w Moje kursy zapisywana jest jedynie informacja, że zadanie zostało zaliczone (lub prawie zaliczone); tam można ją również usunąć.

Przeczytaj więcej

Chwileczkę…

Konfiguracja domen

Dla każdej domeny można ustawić serwery nazw, powiązanie z hostingiem oraz to, kto zostanie właścicielem.

Wczytywanie domen…