Jak pracować z pakietami Snap w systemie Linux

Photo of author

By maciekx

Kiedy decydujesz się na zainstalowanie oprogramowania w systemie Linux za pomocą narzędzi do zarządzania pakietami, możesz uniknąć problemów związanych z zależnościami oraz potencjalnymi uszkodzeniami innych aplikacji. Pakiety Snap zostały początkowo stworzone dla Ubuntu, ale obecnie mogą być używane w różnych dystrybucjach Linuksa.

Czym są pakiety Snap?

W przeszłości instalacja aplikacji w systemie Linux mogła być źródłem frustracji. Zdarzało się, że instalowałeś program, a potem odkrywałeś, że brakuje jakiejś biblioteki lub że jest ona nieaktualna. Następnie musiałeś szukać brakującego elementu i dokonywać jego instalacji, tylko po to, by dowiedzieć się, że inna aplikacja wymaga konkretnej wersji tej biblioteki, którą właśnie zaktualizowałeś. Naprawiając jedno, często łamałeś inne, co prowadziło do nieustannego cyklu problemów.

W miarę rozwoju systemów zarządzania pakietami, takich jak apt, dnf i pacman, sytuacja uległa poprawie. Mimo to wciąż pojawiały się problemy, gdy potrzebowałeś zainstalować różne wersje tej samej aplikacji lub gdy dwie aplikacje kolidowały ze sobą z powodu zależności od różnych wersji tej samej biblioteki.

Jednym z rozwiązań tych problemów są systemy pakowania i wdrażania aplikacji. Snap to jeden z bardziej popularnych systemów. Opiera się na mechanizmie pakowania znanym jako Click, który był częścią inicjatywy Ubuntu Touch. Inne systemy, takie jak AppImage czy Flatpak, również zyskały na popularności.

Te systemy pakowania łączą aplikację z jej zależnościami i innymi wymaganiami w jednym skompresowanym pliku, co pozwala na uruchamianie w formie mini-kontenerów. Aplikacje działają w piaskownicy, co oznacza, że są odseparowane od innych programów, a ich wymagane biblioteki są dostępne tylko dla nich.

Nie są one instalowane w tradycyjny sposób, więc nie wprowadzają problemów z innymi aplikacjami, które mogą potrzebować różnych wersji tych samych zasobów. Możliwe jest nawet uruchamianie aplikacji, które wymagają sprzecznych wersji bibliotek, ponieważ każda aplikacja działa we własnej piaskownicy.

Mimo że pakiety Snap nie są instalowane jak tradycyjne oprogramowanie, można je obsługiwać poprzez pobranie pojedynczego pliku, dekompresję i zamontowanie go jako wirtualny system plików SquashFS. Wszystko to odbywa się w tle, a użytkownik ma jedynie dostęp do zainstalowanej aplikacji.

Ze względu na to, że każdy plik pakietu musi zawierać wszystkie niezbędne zasoby, mogą one być dość duże. Możliwe jest również, że zasoby, które zwykle byłyby instalowane tylko raz, takie jak MySQL czy Apache, są duplikowane. Każda aplikacja, która wymaga tych samych zasobów, dostarcza swoją własną kopię.

To podejście ma jednak swoje koszty, w postaci większej ilości miejsca zajmowanego przez dane i uproszczonej instalacji oraz usuwania problemów z konfliktem zasobów.

Jak zainstalować snapd?

System Snap pojawił się w Ubuntu 16.04, więc jeśli korzystasz z tej wersji lub nowszej, jesteś gotowy do użycia. Na naszym systemie Snappy został zainstalowany na Manjaro 18.04, lecz w Fedorze 31 musieliśmy go zainstalować ręcznie.

Komenda snap jest używana zarówno do nazywania plików pakietów, jak i do interakcji z nimi. W tle działa demon snapd, który również musi być zainstalowany, jeśli nie masz jeszcze Snap na swoim komputerze.

Aby zainstalować snapd w Fedorze, możesz wpisać poniższe polecenie:

sudo dnf install snapd

Aby zainstalować Snap na Manjaro, użyj poniższych poleceń:

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

Możesz sprawdzić wersję klienta Snap, demona snapd oraz numer serii oprogramowania, używając polecenia:

snap version

Jak instalować pakiety Snap?

Instalacja pakietu Snap jest wyjątkowo prosta. Możesz użyć polecenia snap, aby wyszukać dostępne pakiety, a następnie zainstalować interesujący cię.

Na przykład, aby znaleźć i zainstalować edytor GIMP, użyj poniższych komend:

snap find gimp

Komenda snap przeszuka dostępne pakiety i wyświetli wyniki, które pasują do wyszukiwanego hasła.

Aby zainstalować pakiet, użyj nazwy z kolumny „Nazwa”, jak pokazano poniżej:

sudo snap install gimp

Podczas pobierania pakietu procent ukończenia będzie się zwiększał, a pasek postępu przesuwał po lewej stronie okna terminala. Po zakończeniu instalacji pojawi się komunikat informujący o pomyślnym zakończeniu.

Aby sprawdzić pojemność i wykorzystanie różnych systemów plików, możesz użyć polecenia df. Wykonując jego wynik z użyciem grep, możesz znaleźć wpis dotyczący GIMPa, który właśnie zainstalowałeś.

Wpisz:

df | grep gimp

To pokazuje, że pakiet Snap został zamontowany jak system plików. Punkt montowania znajduje się w katalogu snap: /snap/gimp/252. Numer „252” oznacza wersję GIMPa.

System plików jest zidentyfikowany jako: /dev/loop18. Pliki urządzeń pętlowych służą do udostępniania zwykłych plików jako urządzeń blokowych, co zwykle stosuje się do montowania systemów plików w obrazach dysków. W tym przypadku montują one system plików SquashFS w pakiecie Snap. Numer „18” wskazuje, że to 18. plik urządzenia /dev/loop użyty na tym komputerze z systemem Linux.

Możesz to szybko sprawdzić, używając polecenia df z opcją –t, aby ograniczyć dane wyjściowe tylko do typów plików SquashFS:

df -t squashfs

Wyświetlone zostaną zamontowane systemy plików SquashFS, a plik urządzenia /dev/loop będzie odpowiadał każdemu z nich, a ich liczba wynosi 18.

Każdy system plików jest montowany w katalogu /snap. Oznacza to, że na tym komputerze nie ma 18 różnych pakietów Snap. Jest to dystrybucja Ubuntu, która ma niektóre pakiety Snap preinstalowane, a właśnie zainstalowaliśmy kolejny.

Podczas instalacji snapd, niektóre podstawowe pakiety Snap są również instalowane automatycznie, aby zaspokoić potrzeby innych pakietów Snap.

Aby wyświetlić listę zainstalowanych pakietów Snap, użyj komendy:

snap list

Wynik może być nieco szeroki, dlatego końcówka wykazu pokazana jest poniżej.

Oto pełna lista:

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

Widać, że zainstalowanych jest 10 pakietów Snap, a nie 18. Te 10 pakietów generuje jednak 18 systemów plików SquashFS. Kolumny tabeli są dość oczywiste, ale warto wyjaśnić kilka pojęć:

Nazwa: nazwa zainstalowanego pakietu Snap.
Wersja: numer wersji oprogramowania w pakiecie Snap.
Rev: numer rewizji pakietu Snap.
Śledzenie: kanał, na którym pakiet Snap monitoruje aktualizacje. Istnieją cztery główne kanały:
– Stabilny: domyślny kanał, zawierający najbardziej stabilne pakiety.
– Kandydat: kanał bliski stabilności, zawierający oprogramowanie na etapie kandydackim, które przechodzi końcowe testy przed przeniesieniem do kanału stabilnego.
– Beta: kanał w późnej fazie rozwoju, ale nie gwarantujący stabilności.
– Edge: dla testerów wczesnych wersji, niezalecany do użytku na systemach produkcyjnych.

Wydawca: osoba, firma lub organizacja odpowiedzialna za wydanie pakietu Snap. Jeśli wydawca został zweryfikowany, obok jego nazwy pojawi się zielony znacznik wyboru; w przeciwnym razie zobaczysz gwiazdkę.

Uwagi: Dodatkowe informacje i komentarze.

Możesz użyć opcji info, aby uzyskać opis pakietu Snap:

snap info gtk-common-themes

Możesz również sprawdzić, który kanał śledzi dany pakiet oraz wersje oprogramowania w każdym z czterech kanałów. W większości przypadków zaleca się pozostanie na stabilnym kanale.

Pakiet Snap sprawdza dostępność nowszych wersji cztery razy dziennie na śledzonym kanale. Jeśli chcesz zmienić kanał, użyj opcji refresh oraz –channel.

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

Jeśli nowa wersja oprogramowania jest dostępna, zostanie zainstalowana, ale w tym przypadku nie było takiej potrzeby. Pakiet Snap teraz śledzi kanał beta, więc jak tylko nowa wersja beta zostanie wydana, zostanie automatycznie pobrana i zaktualizowana.

Aby sprawdzić, czy dostępne są aktualizacje dla zainstalowanych pakietów Snap, możesz użyć poniższego polecenia:

sudo snap refresh --list

Jeśli aktualizacje są dostępne, zostaniesz o tym poinformowany.

Możesz ręcznie wymusić aktualizację pakietu, używając:

sudo snap refresh gtk-common-themes

Usuwanie pakietu Snap

Aby odinstalować pakiet Snap, użyj komendy:

sudo snap remove gimp

Przewodnik po poleceniach Snap

Używanie pakietów Snap jest dość proste, ale oto lista przydatnych poleceń:
Aby wyszukać pakiet: snap find nazwa_pakietu
Aby zainstalować pakiet: sudo snap install nazwa_pakietu
Aby zobaczyć wszystkie zainstalowane pakiety: snap list
Aby uzyskać informacje o pojedynczym pakiecie: snap info nazwa_pakietu
Aby zmienić kanał śledzenia pakietu: sudo snap refresh nazwa_pakietu –channel=nazwa_kanału
Aby sprawdzić dostępność aktualizacji dla zainstalowanych pakietów: sudo snap refresh –list
Aby ręcznie zaktualizować pakiet: sudo snap refresh nazwa_pakietu

W celu odinstalowania pakietu: sudo snap remove nazwa_pakietu


newsblog.pl