Správce balíčků Snappy, vyvinutý společností Canonical, společností stojící za Ubuntu, a původně zamýšlený k použití na Ubuntu, je bezplatný a open source software používaný k instalaci a správě balíčků snap. Účelem balíčků Snap, stejně jako flatpaků, je distribuovat izolované a samostatné aplikace (aplikace jsou zabaleny společně se svými závislostmi).
Správce balíčků Snappy a jeho infrastruktura přistály na jiných distribucích než Ubuntu. V tomto tutoriálu se podíváme, jak jej nainstalovat a používat na nejnovější verzi Fedory.
V tomto tutoriálu se naučíte:
- Jak nainstalovat správce balíčků snap
- Jak vyhledávat balíčky ve snap store
- Jak nainstalovat a aktualizovat balíčky snap
- Jak zobrazit seznam nainstalovaných balíčků snap
- Jak vytvářet a spravovat snímky balíčku
- Jak odstranit balíčky snapů
Použité softwarové požadavky a konvence
Kategorie | Požadavky, konvence nebo použitá verze softwaru |
---|---|
Systém | Nezávislý na distribuci |
Software | snapd |
Jiné | Oprávnění uživatele root pro správu softwaru |
Konvence | # – vyžaduje, aby dané linuxové příkazy byly spouštěny s právy root buď přímo jako uživatel root, nebo pomocí sudo command$ – vyžaduje, aby dané linuxové příkazy byly spouštěny jako běžný neprivilegovaný uživatel |
Instalace
Chcete-li použít správce balíčků Snappy na Fedoře, první věc, kterou musíme udělat, je nainstalovat balíček obsahující software. Naštěstí pro nás je to velmi snadné, protože je k dispozici v oficiálních repozitářích Fedory. Instalaci můžeme provést graficky nebo pomocí dnf
správce balíčků z našeho milovaného emulátoru terminálu. Zde je příkaz, který chceme spustit:
$ sudo dnf install snapd
snap-confine
a snapd-selinux
balíčky se instalují jako závislosti na snapdu:první obsahuje software používaný k aplikaci omezení na aplikace snap, zatímco druhý poskytuje politiku, která umožňuje, aby snapd fungoval správně pod SELinuxem. Součástí instalace je snapd.socket
je povoleno pomocí systemd.
Vyhledávání balíků
Způsob, jakým pracujeme s balíčky snap, je pomocí snap
aplikace. Jednou z nejzákladnějších akcí, kterou musíme provést, je zjistit, zda je v obchodě snap k dispozici konkrétní software. K provedení této akce můžeme použít uchopovací příkaz „najít“ nebo „hledat“ (druhý je aliasem prvního). Předpokládejme, že chceme nainstalovat balíček snap „gimp“. Chcete-li zjistit, zda je aplikace dostupná, můžeme spustit:
$ snap find gimp
Jak vidíte, příkaz nevyžaduje oprávnění správce. Vrací následující výstup:
Name Version Publisher Notes Summary gimp 2.10.28 snapcrafters - GNU Image Manipulation Program gutenprint-printer-app 1.0 openprinting✓ - Gutenprint Printer Application photogimp 2.10.20 pedro.ermarinho - Patch para o GIMP djpdf 0.1.6 unrud - Create small, searchable PDFs from scanned documents lazpaint 7.1.6 chronoscz - Image editor with raster and vector layers.
Informace o dostupných balíčcích, které odpovídají našim vyhledávacím kritériím, se vrátí:
- Název balíčku
- Verze balíčku snap
- Vydavatel aplikace snap
- Případné poznámky k balíčku
- Stručný popis balíčku
Instalace balíčků snap
Chcete-li nainstalovat balíček snap, vše, co musíme udělat, je použít příkaz snap „install“. Jako příklad předpokládejme, že chceme nainstalovat gimp
aplikace, kterou jsme hledali v předchozím kroku. Zde je příkaz, který bychom spustili:
$ sudo snap install gimp
Ve výchozím nastavení, pokud není uvedeno jinak, se balíčky instalují ze „stabilního“ kanálu. Jakmile spustíme výše uvedený příkaz, můžeme sledovat průběh instalace čtením výstupu terminálu:
2022-03-29T14:25:15+02:00 INFO Waiting for automatic snapd restart... gimp 2.10.28 from Snapcrafters installed
Nejnovější verze snapů podporují režim „klasického omezení“. Když je balíček snap nainstalován v tomto režimu, ve skutečnosti není omezený, takže může přistupovat ke zdrojům v hostitelském systému. Pokud chceme nainstalovat balíček v tomto režimu, musíme spustit příkaz „install“ s --classic
možnost.
Soubory vztahující se k balíčkům snap a jejich závislostem jsou nasazeny v systému pomocí SquashFS pouze pro čtení ve formě smyčkových zařízení, která jsou připojena do odpovídajících adresářů pod /var/lib/snapd
. Jasně to vidíme, když se podíváme na výstup lsblk
příkaz:
$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS loop0 7:0 0 43.6M 1 loop /var/lib/snapd/snap/snapd/15177 loop1 7:1 0 55.5M 1 loop /var/lib/snapd/snap/core18/2344 loop2 7:2 0 4K 1 loop /var/lib/snapd/snap/bare/5 loop3 7:3 0 65.2M 1 loop /var/lib/snapd/snap/gtk-common-themes/1519 loop4 7:4 0 164.8M 1 loop /var/lib/snapd/snap/gnome-3-28-1804/161 loop5 7:5 0 391.3M 1 loop /var/lib/snapd/snap/gimp/383
Pro každý nainstalovaný balíček snap existuje zařízení pro blokování smyčky. V případě snapu „gimp“, pokud zkontrolujeme obsah /var/lib/snapd/snap/gimp/383
mountpoint (383 je revize balíčku snap – lze nainstalovat více revizí současně), můžeme vidět celý strom souborového systému, který hostí soubory aplikace:
$ ls /var/lib/snapd/snap/gimp/383 bin data-dir etc lib meta sbin snap usr var
Abychom mohli aplikaci spustit přesně tak, jak bychom to udělali po instalaci systémového nativního balíčku, /var/lib/snapd/snap/bin
adresář musí být připojen k naší PATH
. To by mělo být provedeno automaticky jako součást instalace snapd. Můžeme to ověřit kontrolou hodnoty proměnné:
$ echo $PATH /home/egdoc/.local/bin:/home/egdoc/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/var/lib/snapd/snap/bin
Aktualizace balíčku
Více revizí snap balíčku může koexistovat současně. Krátce jsme viděli, jak je aktuálně nainstalovaná revize balíčku gimp snap 383. Aktuální aktivní verze je symbolicky označena jako /var/lib/snapd/snap/<package>/current
. V případě gimp:
$ ls -l /var/lib/snapd/snap/gimp drwxr-xr-x. 11 root root 146 Nov 8 17:14 383 lrwxrwxrwx. 1 root root 3 Mar 29 14:27 current -> 383
Chcete-li zkontrolovat, zda je k dispozici nová revize balíčku snap, a aktualizovat ji, můžeme použít refresh
příkaz. Pokud se v tomto případě pokusíme aktualizovat balíček gimp, budeme upozorněni, že nejsou k dispozici žádné aktualizace:
$ sudo snap refresh gimp snap "gimp" has no updates available
Pokud použijeme refresh
bez zadání názvu balíčku jako argumentu, aplikace zkontroluje aktualizace pro všechny balíčky snap nainstalované v systému.
Výpis nainstalovaných balíčků snap
Chcete-li získat zprávu o aktuálně nainstalovaných balíčcích snap, vše, co musíme udělat, je použít příkaz „list“ nástroje snap. Podívejme se na příklad příkazu v akci:
$ snap list Name Version Rev Tracking Publisher Notes bare 1.0 5 latest/stable canonical✓ base core18 20220309 2344 latest/stable canonical✓ base gimp 2.10.28 383 latest/stable snapcrafters - gnome-3-28-1804 3.28.0-19-g98f9e67.98f9e67 161 latest/stable canonical✓ - gtk-common-themes 0.1-59-g7bca6ae 1519 latest/stable canonical✓ - snapd 2.54.4 15177 latest/stable canonical✓ snapd
Explicitně jsme nainstalovali „gimp“, takže všechny ostatní balíčky byly nainstalovány jako závislosti nebo jako „jádro“ infrastruktury snapů. Zaškrtnutí za názvem vydavatele balíčku znamená, že byl ověřen.
Vytváření a správa snímků balíčků
Jednou z příjemných vlastností ekosystému balíčků snap je možnost vytvářet snímky systémových, uživatelských a konfiguračních dat spojených s balíčkem. Snímky se vytvářejí automaticky, když je odstraněn balíček snap, ale lze je vytvořit i ručně pomocí save
příkaz. Chcete-li například vytvořit snímek balíčku „gimp“, spustili bychom:
$ sudo snap save gimp
Pokud neuvedeme název balíčku jako argument příkazu uložení, vytvoří se snímky pro všechny existující balíčky. Chcete-li získat seznam existujících snímků v systému, můžeme použít saved
příkaz:
$ sudo snap saved Set Snap Age Version Rev Size Notes 1 gimp 20.0m 2.10.28 383 134kB auto 3 gnome-3-28-1804 10.4m 3.28.0-19-g98f9e67.98f9e67 161 124B -
Ve výstupu příkazu můžeme vidět velmi užitečné informace, jako je snímek id a jeho věk . K obnovení snímku používáme restore
a na snímek, který chceme obnovit, odkazujeme jeho id. Chcete-li obnovit snímek gimp, který vidíme ve výstupu předchozího příkladu, spustili bychom:
$ sudo snap restore 1 Restored snapshot #1.
Nakonec, k ručnímu odstranění existujícího snímku, použijeme forget
příkaz. Zde je to, co bychom spustili, abychom odstranili snímek gimp:
$ sudo snap forget 1 Snapshot #1 forgotten.
Odebrání balíčků snap
Intuitivně k odstranění dříve nainstalovaného balíčku snap musíme použít remove
příkaz. Ve výchozím nastavení je balíček odstraněn se všemi jeho nainstalovanými revizemi. Pokud chceme odstranit konkrétní revizi balíčku, musíme ji předat jako argument do --revision
volba. Když zadáváte revizi, aby byla odstraněna, nesmí být „aktivní“, takže pokud se pokusíte použít tuto možnost pouze v jedné verzi balíčku snap, příkaz selže. Předpokládejme, že chceme odstranit balíček „gimp“, který jsme nainstalovali například v tomto tutoriálu, spustili bychom:
$ sudo snap remove gimp
Nebo v případě, že existuje více než jedna revize:
$ sudo snap remove gimp --revision 383
Snímky balíčku snap nejsou odstraněny, když balíček odstraníme (snímek se ve skutečnosti vytvoří při odstranění balíčku). Abychom vynutili jejich odstranění, můžeme předat --purge
možnost remove
příkaz. Chcete-li například odstranit „gimp“ se všemi souvisejícími snímky, spustili bychom:
$ sudo snap remove --purge gimp
Závěr
V tomto tutoriálu jsme se naučili, jak používat snap balíčky na Fedoře. Ekosystém snap packages byl původně vyvinut společností Canonical pro Ubuntu, ale poté je dostupný i na jiných distribucích. Naučili jsme se, jak vyhledávat, instalovat, aktualizovat a odinstalovat balíčky snap na Fedoře a jak spravovat snímky balíčků snap. Přestože balíčky snap fungují na Fedoře, výchozí technologií pro samostatné aplikace používané v distribuci je flatpak:chcete-li se o ní dozvědět více a naučit se ji používat, můžete se podívat na náš tutoriál na toto téma.