Balíčkovací systém APT (Advanced Package Tool) je jedním z nejrozšířenějších nástrojů pro správu softwarových balíčků v operačních systémech založených na Linuxu, zejména v distribucích jako je Debian a Ubuntu. APT umožňuje uživatelům snadno instalovat, aktualizovat a odstraňovat software, čímž zjednodušuje správu aplikací a systémových knihoven.
Co se dozvíte v článku
APT pracuje s balíčky ve formátu .deb, které obsahují všechny potřebné soubory a metadata pro instalaci a konfiguraci softwaru.APT se používá nejen na desktopových počítačích, ale také na serverech, kde je efektivní správa softwaru klíčová pro udržení stability a bezpečnosti systému. APT se stal v průběhu desetiletí de facto standardem a spoléhá na něj velká část linuxového ekosystému.
APT je vlastně celá sada nástrojů, která zahrnuje samotnou vysokoúrovňovou utilitu apt
, stejně jako řadu dalších utilit pro konfiguraci, správu balíčků nebo dotazování do interní databáze. Dále je součástí sady knihovna libapt-pkg pro správu balíčků, kterou využívají alternativní frontendy, jako jsou Aptitude a Nala.
Naopak APT se zase spoléhá na utilitu dpkg
, která zajišťuje základní nízkoúrovňovou práci s jednotlivými balíčky. Utilita dpkg
pracuje přímo se soubory balíčků (.deb) a umožňuje instalaci, odinstalaci a správu těchto balíčků na úrovni jednotlivých souborů. Proti tomu APT funguje jako nástroj pracující na vyšší úrovni, poskytuje uživatelsky přívětivější rozhraní, umí řešit komplexní závislosti mezi balíky a umí soubory balíků stahovat či aktualizovat.
APT 3.0
APT nedávno vyšel ve verzi 3.0, která je připravena na zařazení do chystaného Debianu 13 Trixie, jehož vydání je plánováno na letošní rok. Nejnovější APT přináší vylepšení uživatelského rozhraní, přechází na Sequoia pro ověřování podpisů balíčků a zahrnuje solver3 pro lepší vyhodnocení a řeší závislostí jednotlivých balíčků.
Pokud používáte Debian ve větvích unstable či testing, máte už nový APT k dispozici. Ten je totiž součástí repozitářů už od 10. dubna. Také je už součástí nedávno uvolněného Ubuntu 25.04 Plucky Puffin, kde se už nový řešitel závislostí používá, pokud ten klasický nestačil k nalezení řešení.
Vedoucí vývoje, Julian Andres Klode, věnoval toto vydání památce Steva ‚Vorlona‘ Langaseka, vývojáře Debianu, který zemřel počátkem letošního roku.
Vylepšené uživatelské rozhraní
Uživatele asi nejvíce zaujme přepracované uživatelské rozhraní, které se snaží řešit deset let nahlášený problém s nepřehledností výpisů balíčků. Pokud v při aktualizaci systému zavoláte dist-upgrade
, zasype vás balíčkovací systém hromadou informací o změnách, která je nahromaděná klidně i přes několik obrazovek.
V takové situaci velmi snadno přehlédnete, že se APT chystá odstranit něco velmi důležitého, jako je třeba emulátor terminálu, klient zálohovacího systému a podobně. Vývojáři proto už dlouho volají pro zpřehlednění výpisu, který by předcházel jednoduchým uživatelským chybám.
V nové verzi organizuje apt
svůj výstup do přehlednějších sekcí a přidává sloupcové zobrazení balíčků spolu s barevným výstupem. Předchozí verze shromažďovaly všechny informace dohromady v bloku textu, který byl velmi obtížně čitelný. Nově je výstup uspořádán do logických bloků a plánované odstranění balíčků se zobrazuje až úplně na konci a červeně. Aby uživatel byl informován o tom, že se chystá potenciálně destruktivní operace, je výstup jasně označen.
Pro dlouhé výpisy se také automaticky spouští stránkovač, ve kterém je pak možné na obrazovce interaktivně rolovat. Využijeme to například po spuštění příkazů jako apt search, apt show nebo apt policy, které mohou mít na terminálu delší výstup obsahující několik stránek informací.
Nový formát konfigurace repozitářů
Debian se velmi pozvolna přesouvá na nový formát konfigurace repozitářů. Všichni uživatele Debianu a odvozených distribucí znají formát /etc/apt/sources.list
, který uvádí všechny informace o archivu balíčků na jednom řádku, například takto:
deb https://deb.debian.org/debian/ bookworm contrib main non-free non-free-firmware deb-src https://deb.debian.org/debian/ bookworm contrib main non-free non-free-firmware
Na něm vidíte archivu, adresu úložiště, název distribučního vydání a jednotlivé komponenty. Už v roce 2015 byla do APT 1.1 přidána podpora nového formátu DEB822, převzatého ze standardu RFC 822 pro e-mailové zprávy. Stejné informace o archivu vypadají v novém konfiguračním souboru /etc/apt/sources.list.d/debian.sources
nějak takto:
Types: deb deb-src URIs: https://deb.debian.org/debian Suites: bookworm Components: main contrib non-free non-free-firmware Architectures: amd64 Enabled: yes Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
Je to přehlednější, lépe se s tím pracuje a je možné to rozšiřovat o další volby. Manuálová stránka k původnímu souboru sources.list
říká, že nový formát je snadnější vytvářet, rozšiřovat a upravovat jak pro lidi, tak pro stroje
. Také je zde zmíněno, že jednou bude původní formát opuštěn.
Vývojáři chtěli na nový formát přejít už v Debianu 12 Bookworm, ale to se nepodařilo. Podle současného stavu testingu to vypadá, že se nic takového zatím nestane ani v nadcházející verzi Debianu 13 Trixie. Ubuntu už ale nový formát začalo používat ve verzi 24.04 Noble Numbat.
Ovšem nový apt
přidává příkaz modernize-sources
, který umožňuje snadno a automaticky konvertovat původní konfigurační soubory do nového formátu. Pokud tento příkaz pustíte jako root, zobrazí se vám zpráva s podrobnými informacemi o všech souborech, které budou konvertovány. Starý konfigurační soubor bude zálohován s příponou .bak
, takže o něj nepřijdete. Nová konvertovaná verze se pak zapíše do /etc/apt/sources.list.d/debian.sources
.
Původní formát tu s námi bude ještě velmi dlouho. Julian Andres Klode mluvil v roce 2021 o tom, že podpora bude zachována nejméně do roku 2030. To ovšem počítal s tím, že už vydání z roku 2023 bude používat nový formát. Celý plán se ale nakonec o mnoho let posunul a nejprve bude nutné prohlásit staré soubory za opuštěné a teprve poté se bude dít něco dalšího. Jelikož se vlastně ještě v letošním vydání nic nestane, další šance je až v roce 2027 s vydání Debianu 14 Forky. Teprve tam se může prohlásit, že nový formát je výchozí. Podpora toho původního tu tedy bude ještě nejméně deset let.
Nový řešitel závislostí
APT má za úkol starat se o určování závislostí a řešení konfliktů a interakcí mezi jednotlivými balíčky. To vše probíhá v pozadí jeho operací, takže uživatelé mohou obvykle instalovat svůj vybraný software, aniž by se o tyto detaily museli vůbec zajímat. Nepotřebují vědět o závislostech balíčků ani o tom, zda software, který je v jejich systému již nainstalován, není v konfliktu se softwarem, který chtějí teprve nainstalovat.
K uspořádání vztahů mezi balíčky se používá takzvaný řešitel závislostí (anglicky solver), který se snaží analyzovat všechny dostupné balíčky a jejich závislosti, aby určil, jaké akce je třeba provést ke splnění uživatelových požadavků. Pokud tedy chceme nějaký balíček nainstalovat nebo odebrat, řešitel hledá cestu k tomu, jak to udělat správně a pokud možno efektivně. V případě složitější situace může dokonce nabídnout několik variant řešení.
Vývojáři balíčkovacího systému přišli v roce 2023 s novým přístupem, kdy se liší řešení závislostí při aktualizaci balíčků v rámci jedné verze systému (běžná aktualizace) a při přechodu z jedné verze Debianu na druhou (třeba z Debianu 12 na Debian 13). V rámci jednoho vydání by APT měl minimalizovat změny v balíčcích, ale při upgradech na nové vydání by měl minimalizovat rozdíly mezi aktualizovaným systémem a čerstvou instalací vydání. Nový přístup by měl spočívat v tom, že řešitel APT by měl „zapomenout“, které balíčky byly nainstalovány automaticky, a místo toho se snažit o normalizaci stavu.
První verze řešitele se objevila v APT 2.9.3. Na svém blogu Klode popsal novou verzi tak, že využívá algoritmus Davis–Putnam–Logemann–Loveland (DPLL) bez eliminace čistých literálů. Z uživatelského hlediska je nejvýraznějším rozdílem to, že nový řešitel vždy zachovává ručně nainstalované balíčky, včetně těch, které jsou označeny jako zastaralé. V budoucnu by měla být ale tato politika uvolněna, aby bylo možné zastaralé balíčky nahradit, pokud existují balíčky, které je mohou nahradit.
Podle autora je nový řešitel také přibližně o 40 % rychlejší než klasická verze, protože nevyhodnocuje každý jednotlivý balíček v repozitáři při hledání řešení.
APT 3.0 se také snaží být účinnější při úklidu systému. Příkaz apt autoremove
se snaží odstraňovat balíčky, které již nejsou potřeba. Například je takto možné objevit balíčky, které byly nainstalovány jako závislost jiného balíčku a ten byl později odstraněn. Podobně v systému existují balíčky, které se staly zbytečnými například po aktualizaci.
Automatický úklid je v novém řešiteli agresivnější při odstraňování nepotřebných balíčků, protože zná pouze nejsilnější řetězec závislostí pro každý balíček a již nebude uchovávat balíčky, které jsou dostupné pouze prostřednictvím slabších řetězců v komplikovaném stromu závislostí.
Sequoia pro ověřování podpisů
APT vždycky používal GnuPG jako svou implementaci OpenPGP k ověřování podpisů souboru Release.gpg
, který je součástí repozitářů. Ve své třetí generaci nyní APT ve výchozím nastavení pro ověřování používá nástroj sqv
z projektu Sequoia.
Sequoia je projekt zaměřený na modernizaci a zjednodušení práce s PGP (Pretty Good Privacy) a standardy OpenPGP. Cílem tohoto projektu je vytvořit robustní a snadno použitelnou knihovnu pro správu klíčů a ověřování podpisů, která by byla kompatibilní s existujícími nástroji a standardy. Sequoia má velmi modulární architekturu, což umožňuje vývojářům snadno integrovat funkce PGP do svých aplikací.
Podle vývojářů existuje několik důvodů, proč bylo potřeba původní GnuPG v balíčkovacím systému nahradit. Tím hlavním je, že se GnuPG stalo nekompatibilním s jinými implementacemi OpenPGP. Implementace GnuPG má také nebezpečné problémy s kvalitou, což se projevilo například tichým ignorováním některých voleb, nezobrazováním chyb při expirovaných podpisech a zařazením některých nebezpečných funkcí.
Jednou z výhod nově nasazené utility sqv
je, že je napsána v paměťově bezpečném jazyce Rust, což je zejména v případě kryptografie důležité plus. Kromě toho nová implementace při testech dosahuje téměř dvojnásobného výkonu, což rozhodně není k zahození.
Nástroj sqv
stal výchozím nástrojem ve větvi unstable pro všechny oficiálně podporované architektury a některé další porty (varianty mimo oficiální vydání). Vzhledem k tomu, že APT 3.0 nyní migroval do testovací větve a tedy i do připravované verze Trixie, budeme se s ním rozhodně brzy setkávat.
Výhody ze všech stran
APT 3.0 přináší řadu významných vylepšení a novinek, které zvyšují uživatelskou přívětivost a zpříjemňují správu balíčků. Uživatelé ocení nové výstupy, které nyní obsahují přehlednější sekce a barevné zobrazení, což usnadňuje orientaci v informacích. Nový řešitel se zase zaměřuje na efektivnější vyhodnocování závislostí a agresivnější odstraňování nepotřebných balíčků, což přispívá k udržení uklizeného systému.
Pro správce je příjemné spouštění stránkovače pro příkazy s delším výstupem, což zlepšuje čitelnost informací v terminálu. Kromě toho tu máme bezpečnější ověřování elektronických podpisů, které nám dávají jistotu původu stahovaných balíků.
Nový APT se do distribucí dostane během letošního roku, i když ne všude budou zatím všechny jeho funkce ve výchozím stavu zapnuté. Novinek je ale velká spousta a jsou rozhodně užitečné pro běžné uživatele i pokročilé správce.