Како радити са Снап пакетима на Линук-у

Instalacija softverskih paketa na Linuxu putem Snapa donosi olakšanje u vidu izbegavanja zavisnosti i problema sa drugim aplikacijama. Snap paketi, prvobitno kreirani za Ubuntu, sada su dostupni za veliki broj Linux distribucija.

Šta su Snap Paketi?

U prošlosti, instaliranje aplikacija na Linux sistemima često je bilo frustrirajuće iskustvo. Korisnici su se suočavali sa problemima nedostajućih ili zastarelih biblioteka, što je dovodilo do sukoba među aplikacijama. Rešavanje jednog problema bi ponekad uzrokovalo drugi, stvarajući začarani krug.

Sistem upravljanja paketima poput apt, dnf i pacman, doneli su poboljšanja. Ipak, sukobi između različitih verzija istih aplikacija ili biblioteka i dalje su bili prisutni.

Sistemi za pakovanje i primenu aplikacija, kao što je Snappy, nude rešenje za ove probleme. Snappy, baziran na sistemu Click, sličan je Ubuntu Touch inicijativi. Drugi slični sistemi su AppImage i Flatpak.

Ovi sistemi enkapsuliraju aplikaciju, uključujući sve njene zavisnosti, u jednu kompresovanu datoteku. Aplikacija se pokreće unutar mini kontejnera, odvojeno od ostalih aplikacija. Na taj način, biblioteke i resursi su dostupni samo aplikaciji unutar paketa.

Budući da nisu instalirane na tradicionalni način, ove aplikacije ne stvaraju probleme sa drugim aplikacijama koje zahtevaju različite verzije resursa. Moguće je čak instalirati i pokretati aplikacije sa konfliktnim verzijama biblioteka, jer svaka aplikacija radi u svom izolovanom okruženju.

Kako se onda rukuje sa njima? Paket se preuzima, dekompresuje i montira kao SquashFS virtuelni sistem datoteka, stvarajući virtuelno okruženje za aplikaciju. Sve se odvija u pozadini, a korisnik dobija pristup instaliranoj aplikaciji.

Međutim, s obzirom da svaki paket sadrži sve potrebne resurse, datoteke paketa mogu biti prilično velike. Takođe, resursi poput MySQL ili Apache se mogu duplirati ukoliko su potrebni za više aplikacija. Svaka snap aplikacija nosi svoju kopiju potrebnih resursa.

Ovo je kompromis između jednostavnosti instalacije i izbegavanja problema sa sukobima resursa.

Instalacija `snapd`

Snappy je sastavni deo Ubuntu-a od verzije 16.04. Međutim, ukoliko koristite drugu distribuciju, kao što je Fedora 31, potrebno je instalirati snapd. Na Manjaro 18.04, snapd je bio instaliran ali je trebalo ga aktivirati.

Pored toga što je ime datoteka paketa, `snap` je takođe komanda za interakciju sa njima. U pozadini, `snapd` demon je paket koji se mora instalirati ukoliko nemate Snappy.

Da biste instalirali `snapd` na Fedoru, koristite sledeću komandu:

sudo dnf install snapd

Ako ga instalirate na Manjaru, koristite ove komande:

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

Komanda `snap version` prikazuje verziju `snap` klijenta, `snapd` demona i serijski broj softvera. Takođe, prikazaće ime i izdanje Linux distribucije, kao i verziju kernela.

Unesite sledeće:

snap version

Instalacija Snap Paketa

Proces instalacije je vrlo jednostavan. Koristite komandu `snap` za pretragu paketa, a zatim instalirajte željeni paket.

Za traženje i instalaciju GIMP editora slika, unesite:

snap find gimp

`snap` pretražuje i prikazuje rezultate pretrage za terminom „gimp“. Rezultati uključuju sve pakete koji odgovaraju ili sadrže ovaj termin.

Za instaliranje paketa, koristite vrednost iz kolone „Name“, kao što je prikazano ispod:

sudo snap install gimp

Tokom preuzimanja, procentualni napredak se povećava, a traka napredovanja se kreće preko leve strane terminala. Po završetku instalacije, pojavljuje se poruka koja potvrđuje da je paket instaliran.

Komanda `df` se koristi za proveru kapaciteta i upotrebe različitih sistema datoteka na Linux računaru. Ukoliko izlaz prosledimo komandi `grep` i tražimo „gimp“, dobijamo izdvojen unos za upravo instalirani paket.

Unesite sledeće:

df | grep gimp

Ovo pokazuje da je snap paket montiran kao sistem datoteka, u direktorijumu `/snap/gimp/252`. „252“ predstavlja broj izdanja ove verzije GIMP-a.

Sistem datoteka je `/dev/loop18`. Datoteke petlje se koriste za pristup običnim datotekama kao blok uređajima. Često se koriste za montiranje sistema datoteka u image diskova. U ovom slučaju, one montiraju SquashFS sistem datoteka unutar snap paketa. „18“ označava 18. `/dev/loop` datoteku uređaja koja se koristi na Linux sistemu.

Koristite `df` komandu za brzu proveru. Opcja `-t` (type) ograničava izlaz samo na SquashFS tipove datoteka.

Unesite sledeće:

df -t squashfs

Navedeni su montirani SquashFS sistemi datoteka. Datoteka uređaja `/dev/loop` obrađuje svaki od njih, a ima ih 18.

Svaki sistem datoteka je montiran u direktorijum unutar `/snap` direktorijuma. Međutim, ovo ne znači da je instalirano 18 snap paketa. Neke snap pakete Ubuntu distribucija instalira „out-of-the-box“, a mi smo upravo dodali još jedan.

Pored toga, `snapd` po instalaciji uključuje neke osnovne snap pakete kako bi zadovoljio potrebe drugih snap paketa.

Komanda `snap list` prikazuje instalirane snap pakete:

snap list

Izlaz je bio malo širok, pa je kraj liste prikazan ispod.

Evo cele liste:

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

Vidimo da je instalirano 10 snap paketa, a ne 18. Međutim, ovih 10 paketa je dovelo do 18 SquashFS sistema datoteka. Kolone tabele su jasne, ali evo objašnjenja:

Name: Naziv instaliranog snap paketa.
Version: Broj verzije softvera u paketu.
Rev: Broj revizije snap paketa.
Tracking: Kanal koji ovaj paket prati za ažuriranja. Postoje četiri kanala:
Stable: Podrazumevani kanal. Sadrži najstabilnije pakete.
Candidate: Manje stabilan od „stable“, ali sadrži potpun softverski kod. Prolazi završno testiranje pre prelaska na „stable“.
Beta: Kanal ima kvalitet kasnog razvojnog ciklusa, ali nije garantovana stabilnost.
Edge: Za rane testere. Ne preporučuje se za produkciju. Oprez!

Publisher: Osoba, kompanija ili organizacija koja je objavila paket. Verifikovani izdavači imaju zelenu kvačicu (ako je podržano prikazivanje Unicode) ili zvezdicu pored imena.
Notes: Svi komentari ili dodatne informacije pojavljuju se ovde.

Snap Kanali

Opcija `info` pruža opis paketa.

snap info gtk-common-themes

Možemo videti koji kanal paket prati, kao i verziju softvera na svakom od četiri kanala. Najčešće je preporuka da se koristi „stable“ kanal.

Snap paket proverava četiri puta dnevno da li je dostupna novija verzija softvera na kanalu koji prati. Ukoliko želite da promenite kanal, koristite opciju `refresh` i `–channel`.

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

Ukoliko je novija verzija softvera dostupna, ona bi se instalirala, ali u ovom slučaju nije. Snap paket sada prati beta kanal i automatski će preuzeti i ažurirati se čim bude nova beta verzija.

Opcija `–list` proverava da li su ažuriranja dostupna za instalirane snap pakete.

sudo snap refresh --list

Dobićete informaciju ukoliko neki od kanala koje prate snap paketi sadrži novije verzije softvera.

sudo snap refresh gtk-common-themes

Uklanjanje Snap Paketa

sudo snap remove gimp

Pregled Komandi

Korišćenje snap paketa je jednostavno, ali evo liste komandi koje mogu biti korisne:
Za pretragu paketa: `snap find package_name`
Za instalaciju paketa: `sudo snap install package_name`
Za prikaz svih instaliranih paketa: `snap list`
Za informacije o paketu: `snap info package_name`
Za promenu kanala za ažuriranje: `sudo snap refresh package_name –channel=channel_name`
Za prikaz dostupnih ažuriranja: `sudo snap refresh –list`
Za ručno ažuriranje paketa: `sudo snap refresh package_name`
Za deinstalaciju paketa: `sudo snap remove package_name`