O Flatpak
24.10.2017 19:01
Flatpak to coś, co zmniejsza koszty wypuszczenia programu, jak i koszty jego instalacji. W najgorszym przypadku, gdy chcemy coś zainstalować, to trzeba wejść na stronkę, kliknąć w link, wybrać odpowiedni program do otwarcia pobranego pliku, podać kilka razy hasło administratora (niestety, często raz nie wystarczy) i czekać na zainstalowanie. Ważne jest to, że możemy to zrobić pod każdą dystrybucją ze wsparciem dla Flatpaka. Oczywiście, osoby chcące zainstalować program szybciej lub prościej, to wciąż mogą użyć terminala lub jakiegoś narzędzia GUI do zarządzania aplikacjami. Tymi narzędziami są plasma-discover (dla plasmy 5) i gnome-software (GNOME 3).
Po wstępie
Zacznę od filmiku demonstrującego najgorszy scenariusz. Programu nie ma w naszych repozytoriach, w ogóle nie został wydany na nasz system, a my nie chcemy bawić się w instalację paczek przeznaczonych dla innych dystrybucji lub ręczną kompilację. Poniżej prezentuję film, jak to można zrobić. Nie jest to najlepszy sposób, gdyż wymaga od nas siedzenia przy komputerze, jakbyśmy instalowali coś przez instalator, ale ujdzie. [youtube=https://youtu.be/Em07rreTbDo]
Nadmienię, że całość trochę przypomina OCI(One Click Install), dostarczany przez OpenSuSE. Tak więc, dzięki Discover, możemy paroma kliknięciami, zainstalować pożądany program (w tym momencie Skype).
Flatpak to nie tylko menadżer paczek. Pozwala on również na instalację środowiska uruchomieniowego, które jest odseparowane od systemu, pozwala na instalację programu w katalogu użytkownika lub innym katalogu. Nadmieniam, że instalację w innym katalogu (nie systemowym, jak i nie w katalogu domowym użytkownika), można dokonać jedynie, po uprzedniej konfiguracji Flatpaka.
Instalujemy z konsoli
Nie zawsze da się wszystko zrobić w GUI. Dla przykładu nie wiem, jak wykonać instalację do katalogu domowego użytkownika, korzystając z GUI. Oto jednak przykład, jak zrobić to z konsoli:
flatpak --user install com.skype.Client
Po instalacji, możemy uruchomić Skype w ten sposób:
flatpak --user run com.skype.Client
com.skype,.Client składa się z domeny i serwera, gdzie przechowywane są binaria programu Skype, a także nazwy przydzielonej przez producenta (tą nazwą jest Client). Każdy człon nazwy jest oddzielony od sąsiedniego kropką, jak w adresie internetowym.
Flatpak wspiera kilka rodzajów plików do instalacji, m.in flatpakref, jak również bundle. Do instalacji z flatpakref (może wymagać połączenia z internetem, gdyż jest to zwykły plik tekstowy, zawierający instrukcje instalacji), wymagane jest dodanie po słowie install słowa -‑from, a także wskazania ścieżki do naszego pliku flatpakref. Bundle instaluje się podobnie, lecz zamiast -‑from, musimy zastosować -‑bundle.
Czemu flatpak jest dobry?
Flatpak opiera się na kilku założeniach. Pierwszym jest stabilność interfejsów Linuksa dla aplikacji przestrzeni użytkownika. Drugim jest to, że dzięki nowinkom w jądrze (nie twierdzę, że systemy BSD nie miały niektórych mechanizmów wcześniej - po prostu na systemach z rodziny BSD się nie znam, a czytałem, że niektóre mechanizmy miały m.in Jails), Flatpak może izolować apkę od systemu dla bezpieczeństwa, jak i dla zagwarantowania poprawnego działania. Aplikacja nie widzi nic poza tym, co pozwoli jej widzieć Flatpak, co pozwala nie tylko zagwarantować bezpieczeństwo, lecz również działanie (np. w systemie możemy mieć dwie wersje tej samej biblioteki, lecz aplikacja będzie korzystać i tak ze swojej wersji lub z wersji środowiska uruchomieniowego). Poprawność działania jest gwarantowana tym, że aplikacja nie korzysta z plików i mechanizmów, które jej nie zostały przydzielone.
Skraca się także czas wymagany na opublikowania aplikacji. Zamiast tworzyć paczki dla odpowiedniej liczby dystrybucji, wystarczy wystawić plik bundle do pobrania lub wystawić paczkę do jedynego repozytorium. Oczywiście, że nawet, gdy autor programu nie wyda jej na nasz system, to mamy jeszcze społeczność naszego systemu, ale Flatpak czyni życie prostszym.
Na koniec
Dosyć dużym repozytorium aplikacji dla Flatpak jest flathub. Z tego repozytorium instalowałem Skype na załączonym filmie, W kolejnych wpisach zamierzam opisać, jak stworzyć plik bundle z programem swojego autorstwa.