RPM: Balíčkovací formát

RPM (původně zkratka pro Red Hat Package Manager, dnes rekurzivně RPM Package Manager) je nízkoúrovňový systém pro správu softwaru a zároveň standardizovaný formát souborů (s příponou .rpm). Byl vyvinut v roce 1997 společností Red Hat a stal se základním stavebním kamenem pro instalaci, aktualizaci a odstraňování softwaru v mnoha populárních linuxových distribucích, jako jsou Red Hat Enterprise Linux (RHEL), Fedora, CentOS, AlmaLinux, Rocky Linux nebo SUSE/openSUSE.

Hlavním cílem RPM je usnadnit distribuci zkompilovaného softwaru. Namísto toho, aby koncový uživatel musel ručně stahovat zdrojové kódy, řešit chybějící knihovny a software zdlouhavě kompilovat (tzv. Dependency Hell), obdrží jeden úhledný balíček. Ten obsahuje jak samotné binární soubory, tak i přesné instrukce, kam se mají v systému překopírovat.

Architektura a obsah RPM balíčku

Fyzický soubor s příponou `.rpm` není nic jiného než speciálně strukturovaný archiv. Skládá se ze čtyř hlavních logických částí:

Vývoj balíčku: Soubor SPEC

Aby mohl vývojář vytvořit RPM balíček, musí napsat tzv. SPEC soubor (`.spec`). Jedná se o textový „recept“, který programu `rpmbuild` přesně říká, jak má stáhnout zdrojové kódy, jak je zkompilovat a jak je zabalit.

Typický SPEC soubor se dělí na několik fází:

Součástí SPEC souboru mohou být i skripty (Pre/Post install), které se automaticky spustí před nebo po instalaci balíčku (např. vytvoření nového systémového uživatele pro databázi nebo restartování webového serveru).

Důležitý rozdíl: RPM vs. DNF / YUM

V praxi dochází k velmi častému zmatení mezi příkazy `rpm` a nástroji jako `yum`, `dnf` nebo `zypper`. Je klíčové chápat rozdíl mezi backendem a frontendem.

RPM (Backend)

Nástroj `rpm` je nízkoúrovňový správce. Umí nainstalovat balíček, který už máte stažený fyzicky na disku (např. `rpm -i balicek.rpm`). Pokud ale zjistí, že balíčku chybí nějaká závislost (jiná knihovna), operaci zruší a vypíše chybové hlášení. Sám si chybějící knihovny stáhnout neumí, nemá přístup k internetovým repozitářům. Zapisuje provedené změny do lokální RPM databáze (uložené nejčastěji v `/var/lib/rpm/`).

DNF / YUM / Zypper (Frontend)

Jedná se o vysokoúrovňové správce softwaru. Když jim řeknete, aby nainstalovaly program, připojí se na internet, prohledají repozitáře, stáhnou požadovaný RPM balíček a zároveň samy identifikují a stáhnou všechny chybějící závislosti. Samotnou fyzickou instalaci pak ale „pod kapotou“ tiše předají nízkoúrovňovému RPM.

Srovnání: RPM vs. DEB

Ve světě Linuxu existují dva hlavní konkurenční formáty. RPM (doména Red Hatu) a DEB (doména Debianu a Ubuntu).

Vlastnost RPM (Red Hat, Fedora, SUSE) DEB (Debian, Ubuntu, Mint)
Nízkoúrovňový nástroj `rpm` `dpkg`
Vysokoúrovňový manažer `dnf` (dříve `yum`), `zypper` `apt` (nebo `apt-get`)
Formát archivu (Payload) `cpio` `ar` (obsahující tarbally)
Tvorba balíčku Pomocí jediného `.spec` souboru Pomocí struktury adresáře `debian/`
Databáze nainstalovaných Historicky Berkeley DB (BDB), nově NDB / SQLite Textové databázové soubory
Hlavní výhoda Jednodušší syntaxe pro sestavení v jednom souboru Extrémně striktní a robustní řešení závislostí