Balíček je zabalený kus softwaru — program nebo knihovna + informace o tom, co k běhu potřebuje. V Linuxu software neinstaluješ stahováním
.exez náhodné stránky jako na Windows. Místo toho o něj požádáš balíčkovací systém, který ho stáhne z ověřeného repozitáře, dotáhne všechny závislosti a udrží ho aktualizovaný. Až pochopíš tenhle model, přestaneš hledat „instalačky" a začneš softwaru důvěřovat — protože víš, odkud jde.
Pár pojmů na úvod
- Balíček (package) = jeden zabalený software (
.rpm,.deb, …) — samotné soubory programu + metadata: jak se jmenuje, verze, co potřebuje k běhu, kdo ho podepsal. - Repozitář (repo) = server se sbírkou balíčků, které distribuce spravuje a ověřuje. Tvůj systém má seznam repozitářů a stahuje software jen z nich — to je ten „ověřený zdroj".
- Závislost (dependency) = jiný balíček, který tvůj program potřebuje k běhu (třeba knihovnu). Balíčkovač je dohledá a doinstaluje sám — nemusíš je lovit ručně.
- Metadata = popisná data u balíčku (verze, závislosti, podpis). Podle nich balíčkovač ví, co s čím ladí a co doinstalovat.
- Podpis (GPG) = kryptografický podpis balíčku i repozitáře. Systém ověří, že balíček opravdu vydala distribuce a nikdo ho po cestě nezměnil. Tohle je důvěra — jádro celého modelu.
Proč vůbec balíčkovací systém
Na Windows je běžné jít na web, stáhnout setup.exe a spustit ho. Věříš přitom, že web je pravý,
že soubor nikdo nepodstrčil a že instalátor nedělá nic navíc. V Linuxu se tenhle problém řeší jinak:
- Jeden ověřený zdroj. Software bereš z repozitářů své distribuce. Balíčky jsou podepsané — systém pozná, jestli jsou pravé a nezměněné. Nemusíš věřit náhodné stránce.
- Závislosti řeší stroj, ne ty. Program potřebuje pět knihoven? Balíčkovač je dohledá a doinstaluje. Žádné „chybí ti DLL, stáhni si ho někde".
- Aktualizace na jednom místě. Jedním příkazem aktualizuješ celý systém — jádro, knihovny, aplikace. Ne obcházet dvacet programů, každý s vlastním „check for updates".
- Čistá odinstalace. Balíčkovač ví, které soubory k programu patří, a umí je odebrat.
💡 Zjednodušeně: balíčkovač je správce softwaru s pamětí. Ví, co máš nainstalované, odkud to je, co na čem závisí a jestli je to aktuální. Proto se v Linuxu skoro nikdy nestahují „instalačky ručně".
Tři světy: dnf, apt, pacman
Podle distribuce narazíš na jeden ze tří hlavních balíčkovačů. Koncept je stejný, liší se příkazy a formát balíčků:
- dnf — Fedora, RHEL, Rocky, AlmaLinux. Balíčky
.rpm. - apt — Debian, Ubuntu, Mint. Balíčky
.deb. - pacman — Arch, Manjaro. Balíčky
.pkg.tar.zst, rolling release (vždy nejnovější).
Nauč se jeden pořádně a ostatní přečteš z tabulky. Tady jsou nejběžnější operace vedle sebe:
| Operace | dnf (Fedora/RHEL) | apt (Debian/Ubuntu) | pacman (Arch) |
|---|---|---|---|
| Nainstaluj balíček | sudo dnf install htop | sudo apt install htop | sudo pacman -S htop |
| Odeber balíček | sudo dnf remove htop | sudo apt remove htop | sudo pacman -R htop |
| Aktualizuj seznam repů | (automaticky) | sudo apt update | (součást -Syu) |
| Aktualizuj celý systém | sudo dnf upgrade | sudo apt upgrade | sudo pacman -Syu |
| Hledej balíček | dnf search text | apt search text | pacman -Ss text |
| Info o balíčku | dnf info htop | apt show htop | pacman -Si htop |
| Co balíček obsahuje | dnf repoquery -l htop | dpkg -L htop | pacman -Ql htop |
| Který balíček vlastní soubor | dnf provides /usr/bin/htop | dpkg -S /usr/bin/htop | pacman -Qo /usr/bin/htop |
🚩 Dvě věci na zapamatování: (1) instalace a odebírání chce
sudo(mění systém), hledání a info ne (jen čtou). (2) Uaptje zvykem před instalací pustitapt update, aby měl aktuální seznam balíčků;dnfapacman -Syusi to řeší samy.
Typické operace na příkladech
Ať máš konkrétní vzory. Ukázky pro všechny tři světy:
Nainstaluj program
# Fedora / RHEL
sudo dnf install htop
# Debian / Ubuntu
sudo apt install htop
# Arch
sudo pacman -S htop
Odeber program
sudo dnf remove htop # Fedora
sudo apt remove htop # Debian/Ubuntu
sudo pacman -R htop # Arch
Aktualizuj VŠE (celý systém — to chceš dělat pravidelně):
sudo dnf upgrade # Fedora
sudo apt update && sudo apt upgrade # Debian/Ubuntu (nejdřív seznam, pak upgrade)
sudo pacman -Syu # Arch (jeden příkaz dělá obojí)
Hledej, když nevíš přesný název:
dnf search "web server" # Fedora
apt search "web server" # Debian/Ubuntu
pacman -Ss "web server" # Arch
Ukaž, co balíček obsahuje (které soubory nainstaluje):
dnf repoquery -l nginx # Fedora
dpkg -L nginx # Debian/Ubuntu (funguje po instalaci)
pacman -Ql nginx # Arch
💡 Nevíš, jak se jmenuje balíček s příkazem, který chceš? Skoro vždy se jmenuje jako ten příkaz (
htop,git,curl). Když ne, pomůžednf provides */nazev/apt-file search nazev.
Proč aktualizovat celý systém, ne jeden balíček
Láká to: „chci jen novější curl, zbytek nechám být." V praxi je to cesta k problémům, protože balíčky
netvoří ostrůvky — sdílejí knihovny a navzájem na sebe závisí.
- Když aktualizuješ jen jeden balíček, může chtít novější verzi knihovny, kterou používá i deset dalších programů. Repozitáře jsou testované jako celek — konzistentní sada verzí, které spolu ladí.
- Vytáhnout jeden novější kus z jinak starého systému znamená riskovat rozbité závislosti: něco čeká starou knihovnu, něco novou, a rozbije se to uprostřed.
- Aktualizace jsou taky bezpečnostní záplaty. Aktualizovat celek pravidelně = mít zalepené díry všude, ne jen v jednom náhodném programu.
🚩 Pravidlo: aktualizuj systém jako celek a pravidelně (
dnf upgrade/apt upgrade/pacman -Syu), ne po jednotlivých balíčcích. U Archu je to obzvlášť důležité — částečné aktualizace (upgrade jednoho balíčku bez-Syu) tam oficiálně nejsou podporované a umí rozbít systém.
Univerzální formáty: Flatpak a Snap
Klasické balíčky jsou vázané na distribuci — .rpm z Fedory nenainstaluješ na Ubuntu. Proto vznikly
univerzální, sandboxované formáty, které běží napříč distry:
- Flatpak — appka se dodává i se svými knihovnami, běží izolovaně (sandbox) a má omezený přístup k systému (soubory, kamera…) přes oprávnění. Zdroj je hlavně Flathub. Nezávislé na distribuci.
- Snap — podobný nápad od Canonicalu (Ubuntu). Taky sandbox a vlastní knihovny, centrální obchod (Snap Store).
# Flatpak: přidání Flathubu a instalace appky
flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak install --user flathub org.videolan.VLC # --user = bez roota, jen pro tebe
flatpak run org.videolan.VLC
# Snap
sudo snap install vlc
Kdy se hodí: desktopové aplikace, kde chceš nejnovější verzi nezávisle na distru (Signal, Slack, prohlížeče, VLC), nebo appku, která v oficiálních repech není. Kdy raději ne: systémové nástroje, knihovny, servery a cokoli, co má běžet efektivně a integrovaně — tam patří klasický balíček z repa.
💡 Cena za pohodlí: Flatpak/Snap appky jsou větší (nesou si knihovny s sebou) a startují o kousek pomaleji. Za to jsou izolované a nezávislé na verzích v systému. Rozumný mix: základ systému z repa, vybrané desktopové appky z Flatpaku.
Proč NEmíchat ruční .rpm/.deb z internetu s repozitáři
Občas najdeš program jen jako .rpm nebo .deb ke stažení ze stránky výrobce. Nainstalovat to jde
(sudo dnf install ./soubor.rpm, sudo apt install ./soubor.deb), ale ber to jako poslední možnost:
- Rozbité závislosti. Ruční balíček může chtít knihovny v jiných verzích, než má tvůj systém z repa. Balíčkovač se to snaží dorovnat a někdy skončí v konfliktu, ze kterého se špatně leze.
- Žádné automatické aktualizace. Co jsi stáhl ručně, ručně i aktualizuješ. Repozitáře drží software
aktuální samy; ruční
.rpmzůstane viset ve staré (a možná děravé) verzi. - Míň důvěry. Balíček z náhodné stránky nemusí být podepsaný klíčem, kterému tvůj systém věří.
🚩 Správný postup, když program není v repu: nejdřív hledej oficiální repozitář výrobce (přidáš ho jednou a máš aktualizace), pak Flatpak (Flathub). Ruční
.rpm/.debaž úplně nakonec — a jen z důvěryhodného zdroje.
Failure modes — časté chyby začátečníků
- Stahování softwaru mimo repozitář. „Našel jsem to na nějakém webu ke stažení." První reflex má být repozitář nebo Flathub, ne náhodná stránka. Mimo repo = žádné podpisy, žádné aktualizace, riziko.
sudou příkazu z neznámého zdroje. Návod na fóru říkácurl … | sudo bash? To dáváš rootu cizí skript naslepo. Nikdy nespouštěj podsudonic, čemu nerozumíš a co nemá důvěryhodný původ.- Částečná aktualizace. Upgrade jednoho balíčku ve starém systému (hlavně na Archu bez
-Syu) → rozbité závislosti. Aktualizuj celek. - Ignorování GPG varování. Když balíčkovač hlásí neplatný nebo chybějící podpis, není to otravnost k odklikání — je to přesně ta pojistka, že balíček je pravý. Zastav se a zjisti proč.
- Přidání nedůvěryhodného repa. Přidat cizí repozitář znamená dát mu důvěru instalovat cokoli do tvého systému (a přebít i systémové balíčky). Přidávej jen repa, kterým opravdu věříš.
🛠️ Cvičení
- Poznej svůj balíčkovač. Zjisti, kterou distribuci máš (
cat /etc/os-release) a podle toho urči, jestli používášdnf,apt, nebopacman. Jak by ses zeptal na verzi konkrétního balíčku? - Nainstaluj a ukliď. Nainstaluj malý nástroj (třeba
htopnebotree), spusť ho, a pak ho zase odeber. Jaký příkaz na to použiješ na své distribuci a proč potřebujesudo? - Kam to vlastně spadlo. Zjisti, které soubory nainstaloval nějaký balíček (např.
htop) a kde leží jeho spustitelný soubor. (Nápověda:dnf repoquery -l/dpkg -L/pacman -Ql.) - Repo vs Flatpak. Najdi jednu appku, kterou bys rozumně instaloval z Flatpaku (Flathub), a jednu, kterou naopak chceš z repa. Zdůvodni rozdíl.
- Aktualizace jako celek. Napiš příkaz, kterým aktualizuješ celý systém, a vysvětli jednou větou, proč je to lepší než aktualizovat jednotlivé balíčky.
Náčrt řešení — rozbal, až si cvičení zkusíš sám
- Poznej balíčkovač —
cat /etc/os-releaseřekne distribuci: Fedora/RHEL →dnf, Debian/Ubuntu →apt, Arch →pacman. Na verzi balíčku:dnf info htop/apt show htop/pacman -Si htop. Pozor: název balíčku a název příkazu se občas liší — když nevíš, hledej (dnf search/apt search). - Instaluj a ukliď —
sudo dnf install htop(příp.apt/pacman -S), spustíšhtop, odeberešsudo dnf remove htop(apt remove/pacman -R).sudoje potřeba, protože instalace zapisuje do systémových složek (/usr/bin…), kam běžný uživatel nesmí — mění to systém pro všechny. Pozor: hledání a infosudonechtějí, jen čtou. - Kam to spadlo — soubory balíčku:
dnf repoquery -l htop/dpkg -L htop/pacman -Ql htop. Spustitelný soubor bývá v/usr/bin/htop(ověříšwhich htop). Pozor:dpkg -Lfunguje až po instalaci; na dosud nenainstalovaný balíček se ptáš přes repozitář. - Repo vs Flatpak — z Flatpaku dává smysl desktopová appka, kde chceš nejnovější verzi nezávisle na distru (Signal, Slack, VLC) nebo která v repu není. Z repa chceš systémové nástroje, knihovny a servery (
nginx,git,curl) — menší, rychlejší, integrované, aktualizované s celým systémem. Pozor: Flatpak appky jsou větší a izolované v sandboxu; to je plus (bezpečnost) i mínus (občas nevidí na soubory bez povolení). - Aktualizace jako celek —
sudo dnf upgrade/sudo apt update && sudo apt upgrade/sudo pacman -Syu. Je to lepší, protože repozitář je testovaná konzistentní sada verzí, které spolu ladí — aktualizace celku udrží závislosti v souladu a zalepí bezpečnostní díry všude najednou. Pozor: částečná aktualizace (jen jeden balíček) umí rozbít závislosti, na Archu je to dokonce oficiálně nepodporované.
🧠 Otázky & odpovědi
Proč se v Linuxu nestahují instalačky z internetu jako na Windows
Protože Linux má balíčkovací systém — software bereš z ověřených repozitářů své distribuce.
Balíčky jsou podepsané (systém pozná, že jsou pravé a nezměněné), balíčkovač si sám dohledá a
doinstaluje závislosti a jedním příkazem pak aktualizuješ celý systém. Stahovat .exe/.rpm
z náhodné stránky obchází všechny tyhle pojistky: žádný podpis, žádné automatické aktualizace a riziko,
že ti někdo podstrčí něco jiného. Repozitář = ověřený zdroj s pamětí.
Co je závislost a proč ji neřeším ručně
Závislost je jiný balíček, který tvůj program potřebuje k běhu — typicky sdílená knihovna. Programy
si takhle věci půjčují, aby se stejná knihovna nemusela dodávat pětkrát. Balíčkovač čte metadata
každého balíčku, ví, co na čem visí, a chybějící kusy dotáhne sám ve správných verzích. Kdybys to
řešil ručně, skončíš v „dependency hell" — jedna knihovna chce druhou, ta třetí… Přesně tuhle práci ti
balíčkovač bere, proto stačí říct install nazev a on dořeší zbytek.
Proč aktualizovat celý systém a ne jen jeden balíček
Protože balíčky sdílejí knihovny a závisí na sobě. Repozitář je testovaná konzistentní sada verzí, které spolu ladí. Když vytáhneš jeden novější balíček do jinak starého systému, může chtít novější knihovnu, na které visí i další programy — a rozbiješ závislosti (částečná aktualizace). Aktualizace jsou navíc bezpečnostní záplaty, takže aktualizovat celek pravidelně = mít díry zalepené všude. Na Archu je částečná aktualizace dokonce oficiálně nepodporovaná.
Kdy se hodí Flatpak nebo Snap místo klasického balíčku
Když chceš desktopovou aplikaci nezávisle na distribuci — nejnovější verzi, kterou nemáš čekat, až projde do repa, nebo appku, co v oficiálních repech vůbec není (Signal, Slack, prohlížeče). Flatpak a Snap si nesou vlastní knihovny a běží v sandboxu (izolovaně, s omezeným přístupem k systému), takže běží stejně napříč distry. Cenou je větší velikost a o kousek pomalejší start. Pro systémové nástroje, knihovny a servery naopak zůstaň u klasického balíčku z repa — je menší, rychlejší a integrovaný.
Proč je riskantní míchat ruční .rpm/.deb z internetu s repozitáři
Protože ruční balíček může chtít jiné verze knihoven, než má tvůj systém z repa — a balíčkovač pak
skončí v konfliktu, ze kterého se špatně leze (rozbité závislosti). Navíc se sám neaktualizuje (co
stáhneš ručně, ručně i udržuješ) a nemusí být podepsaný klíčem, kterému systém věří. Když program v repu
není, správné pořadí je: nejdřív oficiální repozitář výrobce, pak Flatpak (Flathub), a ruční
.rpm/.deb až úplně nakonec — a jen z důvěryhodného zdroje.
