Cum să lucrați cu pachetele Snap pe Linux

Instalarea pachetelor software Linux folosind snap aduce beneficii precum evitarea conflictelor de dependențe și protejarea altor aplicații funcționale. Deși pachetele snap au fost inițial concepute pentru Ubuntu, acum sunt compatibile cu numeroase distribuții Linux.

Ce sunt, de fapt, pachetele Snap?

Înainte, instalarea aplicațiilor pe Linux putea fi o experiență dificilă. Se putea întâmpla să instalezi o aplicație, doar pentru a constata că lipsește o anumită bibliotecă sau altă dependență, sau că aceasta este învechită. Apoi trebuia să găsești resursa lipsă și să o instalezi, descoperind ulterior că altă aplicație depindea de versiunea pe care tocmai o înlocuiseși. O reparație putea duce la o altă problemă, într-un ciclu nesfârșit.

Această situație s-a îmbunătățit odată cu apariția sistemelor de gestionare a pachetelor, precum apt, dnf și pacman. Cu toate acestea, problemele persistau când aveai nevoie de versiuni diferite ale aceleiași aplicații sau când două aplicații intrau în conflict din cauza dependențelor de versiuni specifice, dar diferite, ale unei biblioteci.

O soluție pentru aceste probleme a fost ambalarea aplicațiilor și sistemele de implementare. Snap este unul dintre cele mai populare astfel de sisteme. Acesta se bazează pe un sistem de ambalare și implementare numit Click, care a avut originea în inițiativa Ubuntu Touch. AppImage și Flatpak sunt alte alternative pe care le-ai putea întâlni.

Aceste sisteme includ aplicația împreună cu toate dependențele și cerințele sale într-un singur fișier comprimat. Apoi, aplicația rulează într-un fel de mini-container, fiind izolată de celelalte aplicații. Bibliotecile și celelalte resurse incluse sau necesare aplicației sunt disponibile numai acesteia.

Acestea nu sunt instalate în mod tradițional, deci nu cauzează probleme cu alte aplicații care cer versiuni diferite ale acelorași resurse. Poți chiar instala și rula aplicații cu versiuni conflictuale de biblioteci, deoarece fiecare se află în propriul spațiu izolat.

Dar cum sunt gestionate dacă nu sunt instalate normal? Ei bine, fișierul unic de pachet este descărcat, dezarhivat și montat ca un sistem de fișiere virtual SquashFS. Apoi este prezentat ca un mediu virtual, totul având loc în fundal. Utilizatorul doar știe că a instalat o aplicație și că are acces la aceasta.

Desigur, deoarece fiecare fișier de pachet trebuie să includă toate resursele necesare, aceste fișiere pot fi mari. De asemenea, se pot duplica resurse pe care în mod normal le-ai instala o singură dată, cum ar fi MySQL sau Apache. Dacă două aplicații snap diferite au nevoie de aceleași resurse, fiecare aduce propria copie.

Acesta este, totuși, compromisul pentru simplitatea instalării și evitarea problemelor legate de conflictele de resurse.

Instalarea snapd

Snappy a fost introdus odată cu Ubuntu 16.04, deci dacă folosești această versiune sau o versiune mai recentă, ești deja pregătit. Pe mașina noastră, Snappy era deja instalat pe Manjaro 18.04, dar a trebuit să-l instalăm pe Fedora 31.

„snap” este numele fișierelor pachet, dar și al comenzii utilizate pentru a interacționa cu acestea. În fundal, demonul „snapd” este și numele pachetului pe care trebuie să-l instalezi dacă nu ai deja Snappy pe computer.

Pentru a instala snapd pe Fedora, introdu următoarea comandă:

sudo dnf install snapd

Dacă trebuie să-l instalezi pe Manjaro, folosește aceste comenzi:

sudo pacman -Sy snapd
sudo systemctl enable --now snapd.socket

Poți folosi comanda „snap version” pentru a vedea versiunea clientului snap, demonul snapd și numărul seriei software. De asemenea, ți se vor afișa numele și ediția distribuției Linux și versiunea kernel-ului.

Introdu următoarea comandă:

snap version

Instalarea pachetelor snap

Instalarea unui pachet snap este un proces destul de simplu. Poți folosi „snap” pentru a căuta pachete snap, iar apoi să îl instalezi pe cel dorit.

Pentru a căuta și instala editorul de imagini gimp, introducem următoarea comandă:

snap find gimp

Comanda va efectua căutări rapide pentru potriviri cu termenul de căutare „gimp” și va afișa rezultatele. Va găsi orice corespunde sau menționează termenul de căutare.

Pentru a instala unul dintre pachete, vom folosi valoarea din coloana „Nume”, după cum este arătat mai jos:

sudo snap install gimp

Pe măsură ce se descarcă, procentajul de completare crește, iar o bară de progres se afișează în partea stângă a ferestrei terminalului. Când instalarea este finalizată, apare un mesaj care te anunță că pachetul a fost instalat (după cum se vede mai jos).

Poți folosi comanda „df” pentru a verifica capacitatea și utilizarea diferitelor sisteme de fișiere configurate pe computerul tău Linux. Dacă trimitem rezultatul către comanda „grep” și căutăm „gimp”, vom izola intrarea pentru pachet pe care tocmai l-am instalat.

Introdu următoarea comandă:

df | grep gimp

Acest lucru arată că pachetul snap a fost montat ca și cum ar fi un sistem de fișiere. Punctul de montare se află în directorul snap: /snap/gimp/252. „252” este numărul de versiune al acestei versiuni de gimp.

Sistemul de fișiere este listat ca: /dev/loop18. Fișierele dispozitivului în buclă sunt folosite pentru a face fișierele obișnuite accesibile ca dispozitive bloc. Ele sunt de obicei folosite pentru a monta sisteme de fișiere în imagini de disc. În acest caz, ele montează sistemul de fișiere SquashFS din pachetul snap. „18” înseamnă că acesta este al 18-lea fișier de dispozitiv /dev/loop utilizat pe acest computer Linux.

Putem folosi comanda „df” pentru a verifica rapid acest lucru. Vom folosi opțiunea „-t” (tip) pentru a limita rezultatul doar la tipurile de fișiere SquashFS.

Introdu următoarea comandă:

df -t squashfs

Sistemele de fișiere SquashFS montate sunt listate. Un fișier de dispozitiv /dev/loop se ocupă de fiecare dintre ele, și există 18 dintre ele.

Fiecare sistem de fișiere este montat pe un director din directorul /snap. Totuși, acest lucru nu înseamnă că există 18 pachete snap diferite instalate pe acest computer. Aceasta este o distribuție Ubuntu, deci unele pachete snap sunt instalate imediat după instalarea sistemului și tocmai am mai instalat unul.

În plus, când instalezi snapd, acesta instalează și câteva pachete snap de bază pentru a acoperi nevoile altor pachete snap.

Putem folosi comanda „snap list”, după cum se arată mai jos, pentru a lista pachetele snap instalate:

snap list

Rezultatul a fost puțin lung, deci sfârșitul listărilor este afișat mai jos.

Iată lista completă:

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*   -

După cum poți vedea, sunt instalate 10 pachete snap, nu 18. Totuși, aceste 10 pachete au dat naștere celor 18 sisteme de fișiere SquashFS. Coloanele din tabel sunt destul de explicite, dar iată câteva clarificări:

Nume: numele pachetului snap care a fost instalat.
Versiune: numărul versiunii software-ului din pachetul snap.
Rev: numărul de revizuire al pachetului snap.
Urmărire: canalul pe care acest pachet snap îl monitorizează pentru actualizări. Sunt patru:

Stabil: canalul implicit. După cum îi spune și numele, acest canal conține cele mai stabile pachete.
Candidat: Acest canal este mai puțin stabil, dar foarte aproape de el, conținând software la nivel de lansare candidat, care este cod complet. Acesta trece prin testarea finală înainte de a fi mutat pe canalul stabil.
Beta: acest canal are calitatea ciclului de dezvoltare târziu, dar nu este garantat că va fi stabil.
Edge: Pentru testeri timpurii. Nu ar trebui să folosești acest canal pentru lucrări importante sau pe un computer de producție. Aici pot apărea probleme!

Editor: persoana, compania sau organizația care a lansat pachetul snap. Dacă editorul a fost verificat (și fereastra de terminal suportă Unicode), vei vedea o bifă verde lângă numele editorului. Dacă nu poate afișa bifa, vei vedea un asterisc.

Note: Aici vor apărea comentariile sau informațiile suplimentare.

Canalele snap

Poți folosi opțiunea „info” pentru a obține o descriere a unui pachet rapid.

snap info gtk-common-themes

Putem vedea ce canal urmărește pachetul și versiunea software-ului din pachetele snap din fiecare dintre cele patru canale. În majoritatea circumstanțelor, ar trebui să rămâi pe canalul stabil.

Un pachet snap verifică de patru ori pe zi dacă o versiune mai nouă a software-ului este disponibilă pe canalul pe care îl urmărește. Dacă vrei să schimbi canalul pe care un pachet snap îl urmărește, poți folosi opțiunile „refresh” și „–channel”.

sudo snap refresh gtk-common-themes --channel=beta

Dacă ar fi fost disponibilă o versiune mai nouă a software-ului, aceasta ar fi fost instalată, dar nu a fost cazul aici. Totuși, pachetul snap urmărește acum canalul beta. De îndată ce o nouă versiune beta este lansată, aceasta este descărcată și actualizată automat.

Poți folosi opțiunea „–list” pentru a verifica dacă sunt disponibile actualizări pentru oricare dintre pachetele snap instalate pe computer.

sudo snap refresh --list

Vei fi anunțat dacă oricare dintre canalele pe care le urmăresc pachetele snap de pe computer conțin versiuni de software mai noi.

sudo snap refresh gtk-common-themes

Eliminarea unui pachet snap

sudo snap remove gimp

Snap Cheat Sheet

Utilizarea pachetelor snap este destul de simplă, dar am creat o listă cu câteva comenzi care te vor ajuta:

Pentru a căuta un pachet: snap find package_name

Pentru a instala un pachet: sudo snap install package_name

Pentru a vedea toate pachetele instalate: snap list

Pentru a obține informații despre un singur pachet: snap info package_name

Pentru a schimba canalul pe care un pachet îl urmărește pentru actualizări: sudo snap refresh package_name --channel=channel_name

Pentru a vedea dacă sunt gata actualizări pentru orice pachet instalat: sudo snap refresh --list

Pentru a actualiza manual un pachet: sudo snap refresh package_name

Pentru a dezinstala un pachet: sudo snap remove package_name