Při instalaci softwarových balíčků pro Linux pomocí technologie snap, se můžete vyhnout problémům se závislostmi a rizikům poškození již fungujících aplikací. Balíčky Snap, původně určené pro Ubuntu, jsou nyní dostupné v různých distribucích Linuxu.
Co jsou to Snap balíčky?
Dříve bývala instalace aplikací v Linuxu spojena s potenciálními frustracemi. Často se stávalo, že po instalaci aplikace se zjistilo, že chybí potřebná knihovna nebo je zastaralá. Následné hledání a instalace chybějících zdrojů mohlo vést k problémům s jinými aplikacemi, které vyžadovaly odlišné verze stejné knihovny. Opravili jste jedno, ale pokazili jste jiné, a tak pořád dokola.
Tento stav se zlepšil díky pokročilejším systémům správy balíčků, jako jsou apt, dnf, a pacman. Avšak problémy nastávají, pokud potřebujete mít nainstalované různé verze stejné aplikace, nebo používáte dvě aplikace, které se vzájemně ovlivňují kvůli rozdílným verzím knihoven.
Jedním z řešení těchto obtíží jsou systémy pro balení a nasazování aplikací. Snap patří mezi nejrozšířenější. Vychází z systému balení a nasazování Click, který má kořeny v projektu Ubuntu Touch. Dalšími alternativami, se kterými jste se možná setkali, jsou AppImage a Flatpak.
Tyto systémy uzavírají aplikaci spolu se všemi jejími závislostmi a požadavky do jednoho komprimovaného souboru. Aplikace poté běží v jakémsi minikontejneru, odděleně od ostatních aplikací. Knihovny a další zdroje, které aplikace obsahuje, jsou přístupné pouze jí samotné.
Aplikace nejsou instalovány tradičním způsobem, a proto nevznikají konflikty s jinými aplikacemi, které vyžadují odlišné verze stejných zdrojů. Můžete dokonce nainstalovat a spustit aplikace, které mají rozdílné požadavky na knihovny, protože každá aplikace je izolovaná.
Jestliže se ale neinstalují obvyklým způsobem, jak se s nimi zachází? Stáhne se jediný soubor balíčku, rozbalí a připojí jako virtuální souborový systém SquashFS. Následně se vám jeví jako virtuální prostředí. Celý proces probíhá v zákulisí. Vy si pouze všimnete, že jste nainstalovali aplikaci a můžete ji spustit.
Je však pravda, že protože každý balíček musí obsahovat všechny zdroje, které aplikace potřebuje, mohou být soubory balíčků velké. Je také snadné duplikovat zdroj, který by se normálně instaloval jen jednou, jako například MySQL nebo Apache. Pokud dvě různé aplikace snap vyžadují stejné zdroje, každá z nich si přinese svou vlastní kopii.
Toto je kompromis za jednoduchost instalace a odstranění problémů s konflikty zdrojů.
Instalace snapd
Snappy byl poprvé představen s Ubuntu 16.04. Pokud tedy používáte tuto verzi nebo novější, můžete začít. Na testovacím počítači byl Snappy nainstalován v Manjaro 18.04, ale v případě Fedory 31 jsme ho museli doinstalovat.
„snap“ je jak název souborů balíčků, tak příkaz, který se používá pro práci s nimi. V zákulisí funguje démon snapd, který je zároveň názvem balíčku, jenž musíte nainstalovat, pokud na vašem počítači ještě není přítomen.
Pro instalaci snapd ve Fedoře použijte následující příkaz:
sudo dnf install snapd
Pokud potřebujete snapd instalovat v Manjaru, použijte tyto příkazy:
sudo pacman -Sy snapd
sudo systemctl enable --now snapd.socket
Pomocí příkazu „snap version“ můžete zobrazit verzi klienta snap, démona snapd a sériové číslo softwaru. Ukáže se vám také název a verze vaší distribuce Linuxu a verze jádra.
Zadejte následující:
snap version
Instalace balíčků snap
Proces instalace balíčku snap je poměrně jednoduchý. Pomocí příkazu „snap“ můžete vyhledávat dostupné balíčky a následně instalovat ty, které potřebujete.
Vyhledáme a nainstalujeme následující grafický editor GIMP:
snap find gimp
Příkaz „snap“ vyhledává shody s hledaným výrazem „gimp“ a vrací nalezené výsledky. Najde vše, co odpovídá nebo zmiňuje hledaný výraz.
Pro instalaci jednoho z balíčků použijeme hodnotu ze sloupce „Název“, jak je uvedeno níže:
sudo snap install gimp
Během stahování procento dokončení postupuje a v levé části okna terminálu se objevuje ukazatel průběhu. Po dokončení instalace se zobrazí zpráva (viz níže), která vás informuje o úspěšné instalaci balíčku.
Pomocí příkazu „df“ můžete zkontrolovat kapacitu a využití různých souborových systémů na vašem Linuxovém počítači. Pokud přesměrujeme jeho výstup do příkazu grep a vyhledáme „gimp“, izolujeme záznam balíčku, který jsme právě nainstalovali.
Zadejte následující:
df | grep gimp
Ukazuje nám, že balíček snap byl připojen, jako by to byl souborový systém. Přípojný bod se nachází v adresáři „/snap/gimp/252“. „252“ je číslo vydání této verze GIMPu.
Souborový systém je uveden jako „/dev/loop18“. Soubory zařízení smyčky se používají k zpřístupnění běžných souborů jako blokových zařízení. Obvykle se používají k připojení souborových systémů do obrazů disků. V tomto případě připojují souborový systém SquashFS balíčku snap. „18“ znamená, že se jedná o 18. soubor zařízení /dev/loop používaný na tomto Linuxovém počítači.
Pro rychlou kontrolu můžeme použít příkaz „df“. Použijeme volbu „-t (type)“ k omezení výstupu pouze na soubory typu SquashFS.
Zadejte následující:
df -t squashfs
Zobrazí se seznam připojených souborových systémů SquashFS. Každý z nich zpracovává soubor zařízení /dev/loop a je jich 18.
Každý souborový systém je připojen do adresáře v adresáři „/snap“. To ovšem neznamená, že je na tomto počítači nainstalováno 18 různých balíčků snap. Na této distribuci Ubuntu jsou některé balíčky snap nainstalovány ihned po instalaci a my jsme právě nainstalovali jeden další.
Navíc, při instalaci snapd se instalují některé základní balíčky snap, aby mohly fungovat potřeby jiných balíčků snap.
Pro zobrazení seznamu nainstalovaných balíčků snap můžeme použít příkaz „snap list“, jak je uvedeno níže:
snap list
Výstup byl trochu široký, takže konec výpisu je uveden níže.
Zde je celý výpis:
Name Version Rev Tracking Publisher Notes core 16-2.43.3 8689 stable canonical* core core18 20200124 1668 stable canonical* base gimp 2.10.18 252 stable snapcrafters - gnome-3-26-1604 3.26.0.20191114 98 stable/… canonical* - gnome-3-28-1804 3.28.0-16-g27c9498.27c9498 116 stable canonical* - gnome-calculator 3.34.1+git1.d34dc842 544 stable/… canonical* - gnome-characters v3.32.1+git3.b9120df 399 stable/… canonical* - gnome-logs 3.34.0 81 stable/… canonical* - gnome-system-monitor 3.32.1-3-g0ea89b4922 127 stable/… canonical* - gtk-common-themes 0.1-28-g1503258 1440 stable/… canonical* -
Jak vidíte, nainstalováno je 10 balíčků snap, nikoli 18. Těchto 10 balíčků však vytvořilo 18 souborových systémů SquashFS. Sloupce tabulky jsou poměrně jasné, ale zde je vysvětlení:
Název: Název nainstalovaného balíčku snap.
Verze: Číslo verze softwaru v balíčku snap.
Rev: Číslo revize balíčku snap.
Sledování: Kanál, který tento balíček snap sleduje pro aktualizace. Existují čtyři:
Stabilní: Výchozí kanál. Jak název napovídá, tento kanál obsahuje nejstabilnější balíčky.
Kandidát: Tento kanál je méně stabilní, ale je mu velmi blízko. Obsahuje software na úrovni kandidáta na vydání, který je kompletní s kódem. Než se přesune do stabilního kanálu, prochází závěrečným testováním.
Beta: Tento kanál představuje kvalitu pozdního vývojového cyklu, ale není zaručena jeho stabilita.
Edge: Pro začínající testery sestavení. Tento kanál byste neměli používat pro důležitou práci nebo na produkčním počítači. Zde se skrývají problémy!
Vydavatel: Jednotlivec, společnost nebo organizace, která balíček snap vydala. Pokud se jedná o ověřeného vydavatele (a vaše okno terminálu podporuje Unicode), uvidíte vedle jména vydavatele zelenou fajfku. Pokud ji nemůže zobrazit, zobrazí se hvězdička.
Poznámky: Zde se zobrazují komentáře nebo doplňující informace.
Kanály snap
Pomocí volby info získáte popis balíčku snap.
snap info gtk-common-themes
Můžeme si prohlédnout, který kanál balíček sleduje a verzi softwaru v balíčcích snap v každém ze čtyř kanálů. Většinou byste měli zůstat u stabilního kanálu.
Balíček snap kontroluje čtyřikrát denně, zda na kanálu, který sleduje nebo „sleduje“, není dostupná novější verze softwaru. Chcete-li změnit kanál, který balíček sleduje, můžete použít volby refresh a –channel.
sudo snap refresh gtk-common-themes --channel=beta
Pokud by byla k dispozici novější verze softwaru, byla by nainstalována, ale v tomto případě tomu tak nebylo. Balíček snap však nyní sleduje beta kanál. Jakmile vyjde nová beta verze, automaticky se stáhne a aktualizuje.
Pomocí volby –list můžete zkontrolovat, zda jsou dostupné aktualizace pro některý z balíčků snap nainstalovaných na vašem počítači.
sudo snap refresh --list
Budete informováni, zda některý z kanálů, které sledují balíčky snap ve vašem počítači, obsahuje novější verze softwaru.
sudo snap refresh gtk-common-themes
Odstranění balíčku snap
sudo snap remove gimp
Snap Cheat Sheet
Používání balíčků snap je poměrně snadné, ale sestavili jsme seznam užitečných příkazů, které vám pomohou:
- Pro vyhledání balíčku:
snap find package_name
- Pro instalaci balíčku:
sudo snap install package_name
- Pro zobrazení všech nainstalovaných balíčků:
snap list
- Pro získání informací o balíčku:
snap info package_name
- Pro změnu kanálu, ze kterého balíček sleduje aktualizace:
sudo snap refresh package_name --channel=channel_name
- Pro zjištění, zda jsou pro některé nainstalované balíčky dostupné aktualizace:
sudo snap refresh --list
- Pro ruční aktualizaci balíčku:
sudo snap refresh package_name
- Pro odinstalaci balíčku:
sudo snap remove package_name