Správa balíčků pomocí apt
Modul 4: Software a aktualizace · Doba čtení: 10 min.
Cíl lekce: Po této lekci budete umět instalovat, aktualizovat a odebírat software pomocí apt, uvidíte, odkud balíček pochází, a poznáte, které aktualizace jsou bezpečnostní.
Klíčové pojmy: balíček, zdroj balíčků (repozitář), sources.list, soubor .sources (deb822), signed-by, apt update, apt upgrade, apt full-upgrade, remove, purge, autoremove, apt-cache policy, bezpečnostní zdroj, dnf
Proč správce balíčků?
Ve Windows si stáhnete instalační program z webové stránky. Na linuxovém serveru to neděláte téměř nikdy. Software přichází jako balíček ze zdroje balíčků (repozitáře): ze serveru distribuce s tisíci programů, které jsou všechny sestavené a otestované pro Vaši verzi Debianu nebo Ubuntu. Program, který tyto balíčky stahuje, instaluje a aktualizuje, se nazývá správce balíčků. Na Debianu a Ubuntu je to apt (pod ním pracuje dpkg), na AlmaLinuxu a Rocky Linuxu dnf.
To má tři velké výhody:
- Jeden příkaz aktualizuje vše. Webový server, SSH server, knihovny i jádro pocházejí ze stejného zdroje. Nemusíte u každého programu zvlášť kontrolovat na webu, zda existuje nová verze.
- Původ je ověřený. Každý zdroj balíčků je podepsán klíčem. apt odmítne balíčky, jejichž podpis nesedí.
- Závislosti se řeší samy. Potřebuje-li nginx nějakou knihovnu, apt ji automaticky doinstaluje a později ji zase uklidí.
Zdroje balíčků: odkud software pochází?
Které zdroje apt používá, je uvedeno v /etc/apt/. Dlouho to byl jediný soubor sources.list s řádky jako:
deb http://deb.debian.org/debian bookworm mainUbuntu 24.04 a novější, cloudové obrazy Debianu a stále více nových instalací používají novější formát deb822: samostatné soubory s příponou .sources v /etc/apt/sources.list.d/. Starý sources.list lze převést příkazem sudo apt modernize-sources (apt 3, Debian 13). Například na Debianu 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Čtěte to takto: suite je verze (trixie je Debian 13; noble je Ubuntu 24.04), komponenta je část zdroje (main u Debianu; main, universe, restricted a multiverse u Ubuntu) a Signed-By říká, kterým klíčem musí být zdroj podepsán. To poslední je důležité: klíč patří k jednomu zdroji, ne ke všem zdrojům najednou. Pokud později přidáte zdroj od výrobce (Docker, Caddy, PostgreSQL), dostane vlastní soubor s klíčem a vlastní řádek Signed-By (lekce 9.2).
Zdroj s -security v názvu je bezpečnostní zdroj. Odtud přicházejí bezpečnostní aktualizace, většinou ještě týž den, kdy se zranitelnost stane známou. Na Ubuntu se tato suite jmenuje noble-security (nebo podle názvu Vaší verze).
Pokud stále používáte starý sources.list, vše normálně funguje. Jen nekombinujte stejný zdroj v obou formátech, jinak si apt bude stěžovat na duplicitní řádky.
update, upgrade a full-upgrade
Rozdíl mezi těmito třemi pojmy je pro začátečníky první past.
| Příkaz | Co dělá |
|---|---|
apt update | Stáhne seznam balíčků a verzí, které jsou ve zdrojích k dispozici. Nic neinstaluje. |
apt upgrade | Aktualizuje nainstalované balíčky na nejnovější verzi z tohoto seznamu. Nikdy nic neodebírá. Aktualizace, která by vyžadovala odebrání jiného balíčku, se přeskočí. |
apt full-upgrade | Totéž, ale smí v případě potřeby i odebírat balíčky nebo instalovat nové. Je nutný při upgradu na nové vydání (lekce 4.3) a někdy u nového jádra. |
Takže vždy nejprve update, potom 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](Čísla verzí výše jsou příklad.) Za názvem je uvedeno, ze které suite nová verze pochází. Vše s -security je bezpečnostní aktualizace: tu chcete co nejdříve. -updates jsou ostatní stabilní aktualizace, například nová data časových pásem.
Poté:
anna@web1:~$ sudo apt upgradeapt ukáže, co se změní, a požádá o potvrzení. Tento seznam si přečtěte. Pokud se v něm objeví "The following packages will be REMOVED" (následující balíčky budou odebrány), děje se něco neobvyklého a nejprve budete chtít vědět proč.
Instalace, odebrání a úklid
anna@web1:~$ sudo apt install nginx
anna@web1:~$ sudo apt remove nginx # program odstraněn, konfigurace v /etc zůstává
anna@web1:~$ sudo apt purge nginx # program i konfigurace odstraněny
anna@web1:~$ sudo apt autoremove # uklidit, co už nikdo nepotřebujeRozdíl mezi remove a purge se hodí: chcete-li něco dočasně odebrat a později znovu nainstalovat se stejným nastavením, použijte remove. Chcete-li opravdu začít načisto, použijte purge.
Vyhledávání a další informace:
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 je příkaz, který použijete, když chcete zjistit, odkud balíček pochází a kterou verzi apt zvolí. *** je u nainstalované verze, Candidate je to, co by nainstaloval upgrade.
Verze Debianu a verze programu
Častá stížnost: "V Debianu je stará verze nginx." To je pravda a je to tak záměrně. Debian a Ubuntu při vydání zmrazí verze a poté přidávají jen bezpečnostní opravy a opravy závažných chyb, bez nových funkcí. Proto může balíček se "starým" číslem verze přesto obsahovat všechny nedávné bezpečnostní opravy: ty byly zpětně přeneseny (backport) do staré verze. Poznáte to podle přípony, například +deb13u1 nebo ubuntu0.1.
Při posuzování, zda jste zranitelní, proto nikdy neporovnávejte jen číslo verze s webem výrobce. Sledujte bezpečnostní hlášení své distribuce: Debian Security Tracker (security-tracker.debian.org) a Ubuntu Security Notices (ubuntu.com/security/notices) u každé zranitelnosti uvádějí, zda je Vaše verze opravená.
Několik pravidel pro klidný server
- Instalujte jen to, co potřebujete. Každý balíček je kód, který je třeba aktualizovat, a někdy i služba, která naslouchá (lekce 5.1).
- Raději z distribuce než z webu. Program, který si sami zkompilujete nebo stáhnete jako samostatný soubor,
apt upgradeneaktualizuje. Bezpečnostní hlášení pak musíte sledovat sami. - Další zdroj jen přímo od výrobce, s vlastním klíčem a
Signed-By. Nikdy nepřidávejte klíč "pro všechno" a nikdy zdroj z neznámého webu (lekce 4.3). - Čtěte, na co se apt ptá. Při upgradu se apt může zeptat, zda chcete změněný konfigurační soubor nahradit novou verzí od výrobce. Pokud nevíte, co jste v něm změnili, zvolte "keep the local version" (ponechat místní verzi, výchozí volba) a rozdíl si později prohlédněte pomocí
diff: nová verze leží vedle jako.dpkg-dist.
Na AlmaLinuxu a Rocky Linuxu
Tam se správce balíčků jmenuje dnf a balíčky mají formát .rpm. Příkazy se podobají těm z apt: dnf check-update (seznam), dnf upgrade (aktualizace, update a upgrade v jednom), dnf install, dnf remove, dnf info. Zdroje jsou v /etc/yum.repos.d/*.repo. Mnoho dalšího softwaru (například fail2ban) pochází ze samostatného zdroje EPEL, který nejprve zapnete příkazem dnf install epel-release. Jen bezpečnostní aktualizace zobrazíte příkazem dnf updateinfo list --security.
V praxi: obrazovka VPS
U WebOké, stejně jako u většiny jiných poskytovatelů, nastaví instalace Vašeho VPS standardní zdroje distribuce správně. Většinou na nich nemusíte nic měnit. Server aktualizujte hned po prvním přihlášení pomocí apt update a apt upgrade (lekce 1.2) a před velkými změnami si v panelu svého poskytovatele vytvořte snapshot.
Shrnutí
- Software na Debianu a Ubuntu pochází z podepsaných zdrojů balíčků; apt stahuje, instaluje, aktualizuje a uklízí.
apt updatejen stáhne seznam;apt upgradeaktualizuje bez odebírání;apt full-upgradesmí i odebírat.- Bezpečnostní aktualizace pocházejí ze suite s
-securityv názvu;apt list --upgradableaapt-cache policyukazují, odkud verze pochází. - Staré číslo verze s
+deb13u1neboubuntu0.xmůže obsahovat všechny opravy (backport): sledujte bezpečnostní hlášení své distribuce. - Další zdroj jen přímo od výrobce, s vlastním klíčem v
Signed-By.
Kvíz
Úkol
Úkol Z4.1: Které aktualizace jsou bezpečnostní? V ukázkovém souboru apt-upgradable.txt je výstup příkazů apt list --upgradable a apt-cache policy ze serveru s Debianem 13. Odpovězte: které balíčky pocházejí z bezpečnostního zdroje, který balíček pochází ze zdroje výrobce místo z Debianu, která verze openssh-server je nyní nainstalovaná a který balíček je běžná stabilní aktualizace bez bezpečnostního důvodu? Program Vaše odpovědi porovná s pevně daným klíčem. Pokud už máte vlastní server, spusťte stejné příkazy a podívejte se, co uvidíte.
Doporučujeme k přečtení
- Zabezpečení VPS: prvních pět minut
- Začínáme s VPS
- Příručka správce systému Debian, kapitola 6 (apt): https://debian-handbook.info/browse/stable/apt.html
- Manuálová stránka
sources.list(5)(formát deb822): https://manpages.debian.org/trixie/apt/sources.list.5.en.html - Debian Security Tracker: https://security-tracker.debian.org/tracker/
