Test menedżerów pakietów

Test menedżerów pakietów: AppImage, Flatpak oraz 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.

Autorzy

Artykuły na blogu są pisane przez osoby z zespołu EuroLinux. 80% treści zawdzięczamy naszym developerom, pozostałą część przygotowuje dział sprzedaży lub marketingu. Dokładamy starań, żeby treści były jak najlepsze merytorycznie i językowo, ale nie jesteśmy nieomylni. Jeśli zauważysz coś wartego poprawienia lub wyjaśnienia, będziemy wdzięczni za wiadomość.