W tym artykule wymienimy główne różnice między tymi trzema formatami opakowań z perspektywy użytkowników końcowych. Różnice w architekturze pakietów i łatwości pakowania z punktu widzenia programistów nie będą tutaj omawiane.
Poniższa tabela podsumowuje główne różnice między formatami plików Snap, Flatpak i AppImage. Większość z nich nie wymaga wyjaśnień, inne punkty wyjaśniono poniżej tabeli porównawczej.
Kłapnięcie | Flatpak | Obraz aplikacji | |
Przełączniki kontroli uprawnień w systemie Android (GUI i CLI) | tak | tak | Nie |
Wsparcie dla piaskownicy | tak | tak | tak |
Obowiązkowa piaskownica | tak | tak | Nie |
Wsparcie dla motywów natywnych | Tak (z zastrzeżeniami) | Tak (z zastrzeżeniami) | Tak (z zastrzeżeniami) |
Obsługa bibliotek dołączonych | tak | tak | tak |
Przenośność aplikacji | Tak (z zastrzeżeniami) | Tak (z zastrzeżeniami) | tak |
W pełni zawarte, pojedyncze, wykonywalne wsparcie (podobne do .pliki exe w systemie Windows) | Nie | Nie | tak |
Internetowy sklep z aplikacjami | tak | tak | tak |
Wtyczki do oprogramowania Desktop App Store | tak | tak | Nie |
Obsługa wielu wersji równoległych aplikacji | tak | tak | tak |
Automatyczne aktualizacje | tak | tak | Tak (z zastrzeżeniami) |
Obsługa Chrome OS (za pośrednictwem kontenerów Crostini) | tak | tak | tak |
Rozmiar aplikacji | Różni się, ale wyższa niż AppImage | Różni się, ale wyższa niż AppImage | Najniższy |
Liczba aplikacji dostępnych w App Store | Najwyższy | Najniższy | Gdzieś pomiędzy |
Kontrola uprawnień dla użytkowników
Snap zapewnia zarówno interfejs graficzny, jak i wiersz poleceń dla uprawnień kontrolowanych przez użytkownika. Możesz użyć preinstalowanej aplikacji „Ubuntu Software”, aby zarządzać uprawnieniami aplikacji przyciągania.
Aby zobaczyć uprawnienia aplikacji przyciągania za pomocą interfejsu wiersza poleceń, uruchom poniższe polecenie:
$ połączenia zatrzaskowe chromZastąp „chrom” nazwą swojej aplikacji Snap.
Aby zobaczyć listę wszystkich zainstalowanych aplikacji snap, uruchom poniższe polecenie:
$ lista zatrzaskówAby przyznać aparatowi pozwolenie na chromowanie, użyj poniższego polecenia:
$strzałka chrom: kameraAby cofnąć uprawnienia kamery, uruchom poniższe polecenie:
$zatrzask odłącz chrom: kameraOdpowiednie polecenia do zarządzania uprawnieniami można znaleźć w kolumnie „Wtyczka” (pokazana na powyższym zrzucie ekranu).
Flatpak zapewnia również interfejs do nadawania i odwoływania uprawnień. Możesz użyć aplikacji GNOME Software (wymaga GNOME 3.32.x) zarządzanie uprawnieniami za pomocą metody graficznej. Aby zobaczyć uprawnienia aplikacji flatpak, uruchom poniższe polecenie:
$ flatpak info --show-permissions org.kde.Platforma
Zastąp „org.kde.Platforma” z nazwą Twojej aplikacji Flatpak.
Aby wyświetlić listę wszystkich aplikacji flatpak zainstalowanych w twoim systemie, uruchom poniższe polecenie:
$ lista flatpakAby zmienić uprawnienia aplikacji flatpak, musisz zmienić wartości zmiennych pokazanych na powyższym zrzucie ekranu. Na przykład poniższe polecenie udostępni cały system plików aplikacji flappak:
$ sudo flatpak override org.kde.Platforma --system plików=hostAppImage nie obsługuje obecnie szczegółowych kontroli uprawnień, ale programiści zasugerowali, że kontrole uprawnień w stylu Androida mogą zostać zaimplementowane w przyszłości.
Piaskownica
Snap, Flatpak i AppImage obsługują środowiska aplikacji w trybie piaskownicy po wyjęciu z pudełka. Piaskownica to środowisko (lub kontener/system plików/archiwum), które jest całkowicie odizolowane i oddalone od systemu hosta. Jakakolwiek interakcja z systemem hosta odbywa się przy użyciu ograniczonego interfejsu API i kontroli uprawnień. Niektóre z tych uprawnień wymagają wyraźnej zgody użytkowników lub mogą zostać całkowicie wyłączone przez użytkowników końcowych. Aplikacja w piaskownicy jest bezpieczna niż jakakolwiek inna aplikacja, która ma pełny dostęp do systemu hosta. Wszystkie aplikacje na Androida działają w piaskownicy, a te trzy formaty opakowań działają na podobnym pomyśle.
Wsparcie dla motywów natywnych
Wszystkie trzy formaty pakietów obsługują natywny wygląd i działanie aplikacji GTK i Qt, aczkolwiek z pewnymi ograniczeniami. Na przykład Snap i Flatpak wymagają pakowania motywów systemowych w odpowiednich formatach. Jeśli używasz motywów i pakietów ikon innych firm, możesz nie uzyskać prawidłowego motywu, kursora i ikon aplikacji. Integracja poprawiła się z czasem, ale nieco słabiej w porównaniu z aplikacjami zainstalowanymi z oficjalnego menedżera pakietów dystrybucji package.
Przenośność aplikacji
Aplikacja AppImage to pojedynczy plik wykonywalny (podobny do systemu Windows .pliki exe). Możesz go łatwo udostępniać między systemami lub przesyłać do chmury. Aplikacje Snap i Flatpak można przenosić, dołączając samą aplikację, a także repozytoria podrzędne, od których aplikacja jest zależna. Jednak proces nie jest tak łatwy jak AppImage i wymaga użycia wielu poleceń, aby osiągnąć te same wyniki.
Automatyczne aktualizacje
Aplikacje Snap i Flatpak są instalowane ze scentralizowanych repozytoriów aplikacji, a aplikacje mogą być automatycznie aktualizowane bez interwencji użytkownika. AppImage nie ma solidnego mechanizmu automatycznej aktualizacji. Użytkownicy muszą ręcznie pobrać nowy plik binarny AppImage i zastąpić istniejący, aby zainstalować aktualizacje. Opiekunowie aplikacji AppImage czasami zawierają własny mechanizm aktualizacji, który okresowo sprawdza dostępność aktualizacji na swoich serwerach lub wymaga interwencji użytkownika. Ostatnio programiści AppImage udostępnili narzędzie do aktualizacji istniejących plików binarnych, zapewniając aktualizacje delta. Jednak nadal wymaga pobrania narzędzia do aktualizacji i ręcznego użycia go z istniejącym plikiem binarnym AppImage. Nie ma jeszcze dostępnego mechanizmu aktualizacji bez użycia rąk dla AppImage.
Rozmiar aplikacji
AppImage ma najmniejszy rozmiar aplikacji, najprawdopodobniej dlatego, że obsługuje pliki binarne w skompresowanym formacie. Rozmiary aplikacji Snap i Flatpak różnią się znacznie w zależności od aplikacji i trudno jest ustalić, co zapewnia mniejszy rozmiar instalacji. Tylko dla odniesienia, Inkscape AppImage w momencie pisania tego artykułu miał około 98 MB, Snap miał około 183 MB, a Flatpak miał około 109 MB.
Wniosek
Uniwersalne pakiety aplikacji to sytuacja korzystna zarówno dla programistów, jak i użytkowników końcowych. Te formaty opakowań umożliwiają znacznie szybsze dostarczanie bezpiecznych aplikacji. Otwierają także drzwi programistom, którzy unikają Linuksa z powodu różnych standardów pakowania stosowanych w różnych dystrybucjach. W tych trzech formatach opakowań są pewne problemy, które należy rozwiązać. Jednak wszystkie są aktywnie rozwijane i te problemy zostaną naprawione z czasem. Uniwersalne pakiety cross-dystrybucyjne to przyszłość, a ich przyjęcie będzie rosło. Powoli, ale systematycznie, dystrybucje mogą w przyszłości przejść do kompilacji Snap, Flatpak lub AppImage, z wyjątkiem podstawowych bibliotek i niezbędnych pakietów, które są potrzebne do działania systemu operacyjnego.