
Test menedżerów pakietów: AppImage vs. Flatpak vs. Snap

W świecie GNU/Linux instalacja oprogramowania skupia się wokół menadżerów pakietów. To one dbają o rozwiązywanie zależności oraz o bezproblemową aktualizację. Dziś przetestujemy 3 najpopularniejsze menadżery niezależne od systemów operacyjnych.
W świecie GNU/Linux instalacja oprogramowania skupia się wokół menadżerów pakietów. To one dbają o rozwiązywanie zależności oraz o bezproblemową aktualizację. Dziś przetestujemy 3 najpopularniejsze menadżery niezależne od systemów operacyjnych.
Domyślne menadżery pakietów posiadają pewną wadę, która może być jednocześnie ich zaletą. Są one ściśle powiązane z systemem operacyjnym. Dzięki temu twórcy systemów zapewniają ich spójność i sprawnie dostarczają użytkownikom łatki bezpieczeństwa. Niestety oznacza to również brak kompatybilności z innymi ekosystemami. W związku z tym twórcy aplikacji dostarczając swoje oprogramowanie użytkownikom korzystającym z różnych systemów operacyjnych, muszą przy każdym wydaniu pakować rzeszę pakietów w szeregu przeróżnych formatów. Niekiedy, chcąc zapewnić bezproblemową instalację, nawet kilka pakietów w tym samym formacie.
Z pomocą przychodzą projekty, które za cel postawiły sobie rozwiązanie powyższego problemu, przy okazji dostarczając dodatkowe funkcjonalności. W dzisiejszym zestawieniu przyjrzymy się trzem najpopularniejszym propozycjom alternatywnych systemów zarządzania pakietami: AppImage, Flatpak oraz Snap.
AppImage
AppImage to format dystrybucji oprogramowania, który za główne cele stawia sobie: prostotę, kompatybilność binarną, bycie niezależnym względem dystrybucji Linuksa, brak konieczności instalacji, brak wymagania uprawnień administratora, bycie przenośnym oraz nieingerowanie w system operacyjny. Każdy program to spakowany wraz z zależnościami osobny obraz z rozszerzeniem .AppImage
. Główną zaletą tego formatu jest jego prostota, dzięki czemu praktycznie każda aplikacja może zostać w ten sposób spakowana.
Instalacja i konfiguracja
Pobieramy obraz .AppImage
, nadajemy prawo wykonywania i voilà! Możemy cieszyć się oprogramowaniem.
# źródło: https://inkscape.org/release/all/gnulinux/appimage/ $ wget -c 'https://inkscape.org/gallery/item/18465/Inkscape-4035a4f-x86_64.AppImage' $ chmod +x Inkscape-4035a4f-x86_64.AppImage $ ./Inkscape-4035a4f-x86_64.AppImage
Dodatkowo istnieje możliwość zainstalowania deamona, który będzie wspierał integrację aplikacji AppImage z naszym systemem operacyjnym. Instrukcję instalacji znajdziemy na githubie projektu.
Dystrybucja
Największą bazą gotowych obrazów jest Appimage Hub. Ponadto wielu deweloperów decyduje się na dystrybucję własnych programów również w formacie AppImage. Zatem użytkownicy mogą cieszyć się gotowymi do uruchomienia obrazami prosto z oficjalnych stron projektów.
Aktualizacje
Deweloperom został udostępniony mechanizm służący do powiadamiania użytkowników o nowszych wersjach aplikacji. Aktualizacja przebiega ręcznie, ale posiada tylko dwa kroki (patrz instalacja i konfiguracja).
Flatpak
Prekursorem Flatpaka była aplikacja xdg-app
utworzona w ramach projektu freedesktop.org. Jedną z głównych cech promowanych w ramach tego menadżera pakietów jest domyślny sandboxing. Dodatkowo instalacja programów w ramach Flatpak zakłada posiadanie środowiska graficznego. Wynika to z faktu silnych zależności samego silnika od funkcjonalności dostępnych właśnie w tym środowisku.
Instalacja i konfiguracja
W systemach Enterprise Linux Flatpak zostaje automatycznie zainstalowany wraz ze środowiskiem graficznym. Pozostaje nam jedynie skonfigurować repozytorium i zainstalować Inkscape.
- konfiguracja repozytorium Flathub
$ flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
- instalacja Inkscape
$ flatpak install --system flathub org.gimp.GIMP Required runtime for org.gimp.GIMP/x86_64/stable (runtime/org.gnome.Platform/x86_64/3.36) found in remote flathub Do you want to install it? [y/n]: y Installing in system: org.gnome.Platform/x86_64/3.36 flathub 3369cd7cff48 org.gnome.Platform.Locale/x86_64/3.36 flathub 6cc4e9265605 org.gimp.GIMP/x86_64/stable flathub 4cf7c8c966e5 permissions: ipc, network, x11 file access: /tmp, host, xdg-config/GIMP, xdg-config/gtk-3.0, xdg-run/gvfs dbus access: org.freedesktop.FileManager1, org.gtk.vfs, org.gtk.vfs.* tags: stable Is this ok [y/n]: y Installing: org.gnome.Platform/x86_64/3.36 from flathub
Dystrybucja
W przypadku Flatpaka korzystamy z serwera zewnętrznego do pobierania spakowanych aplikacji. Istnieje możliwość utworzenia repozytorium w trybie offline, lecz proces ten jest obecnie nietrywialny.
Aktualizacje
Aktualizacji wszystkich zainstalowanych pakietów można dokonać przy pomocy jednej prostej komendy:
$ flatpak update
Snap
Snap to system dystrybucji oprogramowania w dużej mierze niezależny od systemu operacyjnego. Projekt powstał jako domyślny menadżer pakietów dla systemu Ubuntu Touch. Następnie obrał drogę ku dostarczeniu menadżera agnostycznego od środowiska, na którym został uruchomiony.
Instalacja i konfiguracja
snapd
znajduje się w repozytorium EPEL dla Enterprise Linuksa w wersjach 7 i 8. Po włączeniu tego repozytorium wystarczy wydać poniższą komendę:
$ sudo yum install snapd
Loaded plugins: langpacks, refresh-packagekit, rhnplugin, upgrade-
: helper
This system is receiving updates from ELN Classic or EuroLinux EuroMan.
Resolving Dependencies
--> Running transaction check
---> Package snapd.x86_64 0:2.45-1.el7 will be installed
--> Processing Dependency: snap-confine(x86-64) = 2.45-1.el7 for package: snapd-2.45-1.el7.x86_64
--> Processing Dependency: snapd-selinux = 2.45-1.el7 for package: snapd-2.45-1.el7.x86_64
--> Processing Dependency: squashfuse for package: snapd-2.45-1.el7.x86_64
--> Running transaction check
---> Package snap-confine.x86_64 0:2.45-1.el7 will be installed
---> Package snapd-selinux.noarch 0:2.45-1.el7 will be installed
---> Package squashfuse.x86_64 0:0.1.102-1.el7 will be installed
--> Processing Dependency: squashfuse-libs(x86-64) = 0.1.102-1.el7 for package: squashfuse-0.1.102-1.el7.x86_64
--> Processing Dependency: libfuseprivate.so.0()(64bit) for package: squashfuse-0.1.102-1.el7.x86_64
--> Processing Dependency: libsquashfuse.so.0()(64bit) for package: squashfuse-0.1.102-1.el7.x86_64
--> Running transaction check
---> Package squashfuse-libs.x86_64 0:0.1.102-1.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
====================================================================
Package Arch Version Repository
Size
====================================================================
Installing:
snapd x86_64 2.45-1.el7 epel 17 M
Installing for dependencies:
snap-confine x86_64 2.45-1.el7 epel 3.4 M
snapd-selinux noarch 2.45-1.el7 epel 319 k
squashfuse x86_64 0.1.102-1.el7 epel 18 k
squashfuse-libs x86_64 0.1.102-1.el7 epel 24 k
Transaction Summary
====================================================================
Install 1 Package (+4 Dependent packages)
Total download size: 21 M
Installed size: 60 M
Is this ok [y/d/N]: y
sudo systemctl enable --now snapd.socket
Teraz pozostało jedynie zrestartować komputer.
- instalacja Inkscape
$ sudo snap install inkscape
Warning: /var/lib/snapd/snap/bin was not found in your $PATH. If you've not restarted your session
since you installed snapd, try doing that. Please see https://forum.snapcraft.io/t/9469
for more details.
inkscape 1.0-6e3e5246a0-2020-05-07 from Inkscape Project (inkscape✓) installed
Dystrybucja
Dystrybucja Snapa jest ściśle scentralizowana wokół repozytorium zarządzanego przez firmę Cannonical. Pomimo iż istnieje techniczna możliwość utworzenia nowego repozytorium, kod źródłowy części serwerowej nie jest obecnie uwolniony. Wszystko kręci się zatem wokół Snapcraft.
Istnieje możliwość instalacji programu bez podłączenia do sieci. Musimy jednak najpierw pobrać pakiet Snap z programem z innej instalacji Snapa podłączonej do sieci:
$ snap download inkscape Fetching snap "inkscape" Fetching assertions for "inkscape" Install the snap with: snap ack inkscape_7627.assert snap install inkscape_7627.snap
Po skopiowaniu plików możemy zainstalować Inkscape offline, wykonując poniższe polecenia:
$ snap ack inkscape_7627.assert $ snap install inkscape_7627.snap
Aktualizacje
Aktualizacje odbywają się automatycznie i nie wymagają żadnego potwierdzenia. Z jednej strony takie rozwiązanie jest zaletą, gdyż użytkownik nie musi pamiętać o wykonywaniu aktualizacji. Niestety oznacza to również, iż jesteśmy zdani na testowanie i sprawne łatanie błędów po stronie dewelopera, gdyż wadliwy program możemy cofnąć do jego poprzedniej działającej wersji jedynie tymczasowo.
Podsumowanie
Każdy z niezależnych od dystrybucji menadżerów opisanych w tym artykule posiada swoje wady i zalety. Różnice między nimi wynikają z celów postawionych przez twórców projektów. W ocenie autora najbardziej obiecującym formatem dla użytkownika systemu graficznego jest projekt Flatpak. Jednak z powodu silnej integracji ze środowiskiem graficznym nie daje on możliwości użytkowania go w środowiskach serwerowych.
Nadającym się do tego typu zastosowań może się wydawać Snap. Jednak automatyczne aktualizacje oraz jego rozwój prowadzony przez firmę Cannonical, która posiada historię porzucania rozpoczętych przez siebie projektów, czym nie zachęca do inwestowania w tę technologię w środowiskach serwerowych. Te wymagają bowiem stabilności aplikacji oraz długoterminowego wsparcia.
Natomiast AppImage, format, który towarzyszy nam najdłużej, stał się już swego rodzaju standardem dystrybucji oprogramowania. Dodatkową jego zaletą jest możliwość przechowywania obrazów AppImage na pamięci przenośnej i uruchamianie ich na różnych systemach. Ze względu na jego technikalia trudno nazywać go jednak menadżerem pakietów i można go przyrównać do plików wykonywalnych .exe
, znanych nam ze świata systemów operacyjnych Windows.
Podsumowując, każdy system opisany w tym artykule spełnia nieco inne oczekiwania, ale wywiązuje się z zakładanych przez ich twórców celów. Instalacja każdego z nich jest prosta i nie wymaga złożonej konfiguracji. Dlatego też serdecznie zachęcam do własnoręcznego wypróbowania tych niezależnych od systemu operacyjnego menadżerów pakietów.