Wydanie samodzielnego systemu pakietów Flatpak 1.14.0

Opublikowano nową stabilną gałąź zestawu narzędzi Flatpak 1.14, która zapewnia system do budowania samodzielnych pakietów, które nie są powiązane z konkretnymi dystrybucjami Linuksa i działają w specjalnym kontenerze izolującym aplikację od reszty systemu. Wsparcie dla uruchamiania pakietów Flatpak jest zapewnione dla Arch Linux, CentOS, Debian, Fedora, Gentoo, Mageia, Linux Mint, Alt Linux i Ubuntu. Pakiety Flatpak znajdują się w repozytorium Fedory i są obsługiwane przez natywnego menedżera aplikacji GNOME.

Kluczowe innowacje w gałęzi Flatpak 1.14:

  • Możliwe jest utworzenie katalogu dla plików w stanie (.local/state) i ustawienie zmiennej środowiskowej XDG_STATE_HOME wskazującej na ten katalog.
  • Dodano kontrole warunkowe w postaci „nazwa-modułu-jądra” w celu ustalenia obecności modułów jądra (uniwersalny odpowiednik wcześniej proponowanego sprawdzania posiadania-intel-gpu, zamiast którego wyrażenie „mieć-moduł-jądra-i915) ” może być teraz użyty).
  • Zaimplementowano polecenie „flatpak document-unexport —doc-id=…”.
  • Dostępny jest eksport metadanych Appstream do użytku w środowisku głównym.
  • Dodano zasady wykonywania poleceń flatpak dla skorupy ryby
  • Dostęp sieciowy do usług X11 i PulseAudio jest dozwolony (po dodaniu odpowiednich ustawień).
  • Nazwa głównej gałęzi w repozytorium Git została zmieniona z „master” na „main”, ponieważ słowo „master” zostało ostatnio uznane za niepoprawne politycznie.
  • Skrypty uruchamiające są teraz przepisywane w przypadku zmiany nazwy aplikacji.
  • Do polecenia install dodano opcje „--include-sdk” i „--include-debug”, aby zainstalować pakiet SDK i pliki debuginfo.
  • Dodano obsługę parametru „DeploySideloadCollectionID” do plików flatpakref i flatpakrepo. Po ustawieniu identyfikator kolekcji zostanie ustawiony podczas dodawania zdalnego repozytorium, a nie po załadowaniu metadanych.
  • Zezwolono na tworzenie zagnieżdżonych środowisk piaskownicy dla programów obsługi w sesjach z oddzielnymi nazwami MPRIS (Specyfikacja zdalnego interfejsu odtwarzacza multimedialnego).
  • Narzędzia wiersza poleceń dostarczają teraz informacji o użyciu przestarzałych rozszerzeń środowiska wykonawczego.
  • Polecenie odinstalowania implementuje żądanie potwierdzenia przed usunięciem środowiska wykonawczego lub rozszerzeń środowiska wykonawczego, które są nadal używane.
  • Dodano obsługę opcji „--socket=gpg-agent” do poleceń takich jak „uruchom flatpak”.
  • Naprawiono lukę w libostree, która mogła potencjalnie pozwolić użytkownikowi na usunięcie dowolnych plików w systemie poprzez manipulację procedurą obsługi flatpak-system-helper (wysłanie żądania usunięcia ze specjalnie sformatowaną nazwą gałęzi). Problem pojawia się tylko w starszych wersjach Flatpak i libostree wydanych przed 2018 rokiem (< 0.10.2) i nie dotyczy bieżących wydań.

Przypomnijmy, że Flatpak pozwala twórcom aplikacji uprościć dystrybucję swoich programów, które nie znajdują się w standardowych repozytoriach dystrybucji, poprzez przygotowanie jednego uniwersalnego kontenera bez tworzenia osobnych asemblerów dla każdej dystrybucji. Użytkownikom dbającym o bezpieczeństwo Flatpak umożliwia uruchomienie podejrzanej aplikacji w kontenerze, zapewniając dostęp tylko do funkcji sieciowych i plików użytkownika powiązanych z aplikacją. Użytkownikom zainteresowanym nowościami Flatpak umożliwia instalację najnowszych wersji testowych i stabilnych aplikacji bez konieczności wprowadzania zmian w systemie. Na przykład pakiety Flatpak są tworzone dla LibreOffice, Midori, GIMP, Inkscape, Kdenlive, Steam, 0 AD, Visual Studio Code, VLC, Slack, Skype, Telegram Desktop, Android Studio itp.

Aby zmniejszyć rozmiar pakietu, zawiera on tylko zależności specyficzne dla aplikacji, a podstawowe biblioteki systemowe i graficzne (biblioteki GTK, Qt, GNOME i KDE itp.) zaprojektowano jako standardowe środowiska wykonawcze wtyczek. Kluczowa różnica między Flatpakiem a Snapem polega na tym, że Snap wykorzystuje komponenty głównego środowiska systemowego i izolację w oparciu o filtrowanie wywołań systemowych, podczas gdy Flatpak tworzy kontener oddzielony od systemu i działa z dużymi zestawami wykonawczymi, udostępniając nie pakiety jako zależności, ale standardowe środowiska systemowe (na przykład wszystkie biblioteki niezbędne do działania programów GNOME lub KDE).

Oprócz standardowego środowiska systemowego (runtime), instalowanego poprzez specjalne repozytorium, dostarczane są dodatkowe zależności (pakiet) wymagane do działania aplikacji. W sumie runtime i package stanowią wypełnienie kontenera, pomimo tego, że runtime jest instalowane oddzielnie i powiązane z kilkoma kontenerami jednocześnie, co pozwala uniknąć duplikowania plików systemowych typowych dla kontenerów. W jednym systemie może być zainstalowanych kilka różnych środowisk wykonawczych (GNOME, KDE) lub kilka wersji tego samego środowiska wykonawczego (GNOME 3.40, GNOME 3.42). Kontener z aplikacją jako zależnością używa powiązania tylko z określonym środowiskiem wykonawczym, bez uwzględnienia poszczególnych pakietów tworzących środowisko wykonawcze. Wszystkie brakujące elementy są spakowane bezpośrednio z aplikacją. Po utworzeniu kontenera zawartość środowiska wykonawczego jest montowana jako partycja /usr, a pakiet jest montowany w katalogu /app.

Kontenery wykonawcze i aplikacyjne zbudowane są przy użyciu technologii OSTree, w której obraz jest aktualizowany atomowo z repozytorium podobnego do Gita, co pozwala na zastosowanie metod kontroli wersji do komponentów dystrybucji (na przykład można szybko przywrócić system do Poprzedni stan). Pakiety RPM są tłumaczone do repozytorium OSTree przy użyciu specjalnej warstwy RPM-ostree. Oddzielna instalacja i aktualizacja pakietów w obrębie środowiska pracy nie jest obsługiwana; system jest aktualizowany nie na poziomie poszczególnych komponentów, ale jako całości, atomowo zmieniając swój stan. Zapewnia narzędzia do stopniowego stosowania aktualizacji, eliminując potrzebę całkowitego zastępowania obrazu przy każdej aktualizacji.

Wygenerowane izolowane środowisko jest całkowicie niezależne od używanej dystrybucji i przy odpowiednich ustawieniach pakietu nie ma dostępu do plików i procesów użytkownika ani systemu głównego, nie ma bezpośredniego dostępu do sprzętu, z wyjątkiem wyjścia poprzez DRI, i wywołania do podsystemu sieciowego. Organizacja wyjścia graficznego i wejścia jest realizowana przy użyciu protokołu Wayland lub poprzez przekazywanie gniazd X11. Interakcja ze środowiskiem zewnętrznym opiera się na systemie przesyłania wiadomości DBus i specjalnym API Portals.

Do izolacji wykorzystywana jest warstwa Bubblewrap oraz tradycyjne linuksowe technologie wirtualizacji kontenerów, oparte na wykorzystaniu grup cgroup, przestrzeni nazw, Seccomp i SELinux. PulseAudio służy do odtwarzania dźwięku. W takim przypadku można wyłączyć izolację, z której korzystają twórcy wielu popularnych pakietów, aby uzyskać pełny dostęp do systemu plików i wszystkich urządzeń w systemie. Na przykład GIMP, VSCodium, PyCharm, Octave, Inkscape, Audacity i VLC mają ograniczony tryb izolacji, który pozostawia pełny dostęp do katalogu domowego. Jeśli pakiety z dostępem do katalogu domowego zostaną naruszone, pomimo obecności etykiety „sandboxed” w opisie pakietu, atakujący musi jedynie zmienić plik ~/.bashrc, aby wykonać swój kod. Osobną kwestią jest kontrola zmian w pakietach i zaufanie do twórców pakietów, którzy często nie są związani z głównym projektem czy dystrybucjami.

Źródło: opennet.ru

Dodaj komentarz