nową stabilną wersję narzędzia , która dostarcza system do budowy samodzielnych pakietów, niezwiązanych z konkretnymi dystrybucjami Linux i uruchamianych w specjalnym kontenerze, izolującym aplikację od reszty systemu. Wsparcie dla uruchamiania pakietów Flatpak jest zapewnione dla Arch Linux, , Debian, Fedora, Gentoo, Mageia, Linux Mint i Ubuntu. Pakiety Flatpak są dołączone do repozytorium Fedory i są wspierane w standardowym programie zarządzania aplikacjami GNOME.
Kluczowe w gałęzi Flatpak 1.4:
- Zmieniona organizacja konfiguracji zewnętrznych repozytoriów. W katalogu /etc/flatpak/remotes.d zamiast plików *.conf z ustawieniami teraz stosowane są zwykłe pliki „.flatpakrepo”, które są automatycznie importowane przy pierwszym użyciu flatpak. Te pliki można dowolnie edytować i usuwać, podobnie jak ręcznie dodane repozytoria;
- Znacząco zmieniona organizacja instalacji ogólnodostępnych pakietów. W poprzednich wersjach najpierw pakiet był instalowany w należącym do użytkownika tymczasowym katalogu, a następnie uruchamiał proces system-helper do importu do systemu z tego katalogu. Tego typu podejście prowadziło do dużego zużycia zasobów dyskowych, niepotrzebnych operacji we/wy oraz potencjalnych problemów z bezpieczeństwem. W nowej wersji do instalacji pakietów systemowych wykorzystana została specjalna nowa struktura plików FUSE, do której użytkownik może zapisywać dane, ale po zakończeniu zapisu dostęp do zapisanych plików dla użytkownika jest blokowany. Nowe podejście wymaga stworzenia dla flatpak osobnego użytkownika (domyślnie „flatpak”) i zmiany zasad SELinux;
- Dodano możliwość definiowania na stronie klienta filtrów dla zewnętrznych repozytoriów. Dzięki filtrów można ograniczyć widoczne w repozytorium aplikacje, wykorzystując model białych i czarnych list;
- Dodano API biblioteki do dodawania zewnętrznych repozytoriów z plików flatpakref;
- Dodano profil seccomp dla Dockera, pozwalający na uruchamianie flatpak wewnątrz kontenerów;
- Udoskonalono możliwość instalacji z kilku źródeł P2P (przez pamięci USB lub w sieci lokalnej);
- W poleceniu „flatpak remote-ls” zapewniona automatyczna filtracja aplikacji, dla których minął czas wsparcia;
- W „flatpak remote-ls” i „flatpak remote-info” wdrożono opcję „—cached” do zwracania informacji na podstawie lokalnych danych w pamięci podręcznej;
- Dodano możliwość wskazania wersji zakończenia czasu życia pakietu, po którym zostanie wyświetlona propozycja przejścia na nową gałąź;
- Dodano opcję „—socket=pcsc” do uzyskania dostępu do kart inteligentnych;
- Dodano wsparcie dla systemów z wieloma kartami graficznymi NVIDIA;
- Zaimplementowano wsparcie dla umieszczonego w środowisku sandbox dconf;
- Do zespołu build-update-repo dodano opcje „—no-update-[summary,appstream]” oraz „—static-delta-ignore-ref=PATTERN”;
- Zasadniczo zwiększono prędkość regeneracji gałęzi appstream dla dużych repozytoriów.
Przypominamy, że Flatpak umożliwia deweloperom aplikacji uproszczenie dystrybucji swoich programów, które nie są zawarte w standardowych repozytoriach dystrybucji, dzięki jednego uniwersalnego kontenera bez tworzenia osobnych kompilacji dla każdego dystrybucji. Dla użytkowników, którzy dbają o bezpieczeństwo, Flatpak pozwala uruchomić aplikację budzącą wątpliwości w kontenerze, zapewniając dostęp tylko do funkcji sieciowych i plików użytkownika związanych z aplikacją. Dla użytkowników zainteresowanych nowościami, Flatpak umożliwia instalację najnowszych wersji testowych i stabilnych aplikacji bez konieczności dokonywania zmian w systemie. Na przykład, obecnie pakiety Flatpak są już dla LibreOffice, Firefox, GIMP, Inkscape, Kdenlive, Steam, 0 A.D., Visual Studio Code, VLC, Slack, Skype, Telegram Desktop, Android Studio itd.
Aby zmniejszyć rozmiar pakietu, zawiera jedynie specyficzne dla danej aplikacji zależności, a podstawowe biblioteki systemowe i graficzne (Gtk+, Qt, biblioteki GNOME i KDE itp.) są dostarczane jako standardowe runtime’y. Kluczowa różnica między Flatpak a Snap polega na tym, że Snap wykorzystuje komponenty środowiska podstawowego systemu oraz izolację na podstawie filtracji wywołań systemowych, podczas gdy Flatpak tworzy oddzielny kontener od systemu i korzysta z dużych zestawów runtime, oferując nie pakiety, a standardowe środowiska systemowe (na przykład wszystkie biblioteki wymagane do działania aplikacji GNOME lub KDE).
Oprócz typowego środowiska systemowego (runtime), które jest instalowane za pomocą specjalnego , dostarczane są dodatkowe zależności (bundle) wymagane do działania aplikacji. W sumie runtime i bundle tworzą zawartość kontenera, przy czym runtime jest instalowany osobno i jest powiązany z wieloma kontenerami, co pozwala uniknąć duplikacji wspólnych dla kontenerów plików systemowych. W jednym systemie może być zainstalowanych kilka różnych runtime (GNOME, KDE) lub kilka wersji jednego runtime (GNOME 3.26, GNOME 3.28). Kontener aplikacji jako zależność korzysta z powiązania tylko z określonym runtime, bez uwzględniania poszczególnych pakietów, z których składa się runtime. Wszystkie brakujące elementy są pakowane bezpośrednio z aplikacją. Podczas tworzenia kontenera zawartość runtime jest montowana jako partycja /usr, a bundle jest montowane w katalogu /app.
Zawartość runtime i kontenerów aplikacji jest tworzona z wykorzystaniem technologii , w której obraz atomowo aktualizuje się z repozytorium podobnego do Git, co pozwala stosować metody kontroli wersji do komponentów dystrybucji (na przykład szybko można przywrócić system do poprzedniego stanu). Pakiety RPM są transponowane do repozytorium OSTree za pomocą specjalnej warstwy . Oddzielna instalacja i aktualizacja pakietów wewnątrz środowiska roboczego nie jest obsługiwana, system jest aktualizowany nie na poziomie poszczególnych komponentów, ale całościowo, atomowo zmieniając swoje właściwości. Udostępniane są narzędzia do inkrementalnego stosowania aktualizacji, eliminujące konieczność pełnej wymiany obrazu przy każdej aktualizacji.
Tworzone odizolowane środowisko jest całkowicie niezależne od używanej dystrybucji, a przy odpowiednich ustawieniach pakietu nie ma dostępu do plików i procesów użytkownika ani głównego systemu, nie może bezpośrednio uzyskiwać dostępu do sprzętu, z wyjątkiem wyjścia przez DRI, oraz podsieci sieciowej. Wyjście grafiki i organizacja wejścia są realizowane za pomocą protokołu Wayland lub przez przekazywanie gniazda X11. Interakcja z otoczeniem oparta jest na systemie wymiany komunikatów DBus i specjalnym API Portals. W celu izolacji warstwa i tradycyjne technologie wirtualizacji kontenerowej dla systemu Linux, oparte na wykorzystaniu cgroups, przestrzeni nazw (namespaces), Seccomp oraz SELinux. Do odtwarzania dźwięku używany jest PulseAudio.
Źródło: opennet.ru
