Jak pracovat s balíčky Snap na Linuxu

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