Release des Systems fĂŒr selbststĂ€ndige Pakete Flatpak 1.18.0

Nach eineinhalb Jahren Entwicklung wurde die neue stabile Version des Flatpak-Toolkits 1.18 veröffentlicht, das ein System zur Erstellung eigenstĂ€ndiger Pakete bereitstellt, die nicht an spezifische Linux-Distributionen gebunden sind und in einem speziellen Container ausgefĂŒhrt werden, der die Anwendung vom restlichen System isoliert. Die AusfĂŒhrung von Flatpak-Paketen wird fĂŒr Fedora, CentOS, Debian, Arch Linux, Gentoo, Linux Mint, Alt Linux und Ubuntu unterstĂŒtzt. Flatpak-Pakete sind im Fedora-Repository enthalten und werden von den standardmĂ€ĂŸigen Anwendungsverwaltungstools GNOME und KDE unterstĂŒtzt.

Wichtige Neuerungen in der Flatpak-Version 1.18:

  • Die UnterstĂŒtzung fĂŒr bedingte Berechtigungen (conditional permission) wurde implementiert, mit denen bei der Anforderung von Berechtigungen bestimmte Funktionen im System oder zur Laufzeit ĂŒberprĂŒft werden können. Zum Beispiel kann anstelle von „—device=all“ bei Bedarf auf ein EingabegerĂ€t die Berechtigung „—device-if=all:!has-input-device —device=input“ angefordert werden, die den Zugriff nur auf EingabegerĂ€te gewĂ€hrt oder auf den Zugriff auf alle GerĂ€te zurĂŒckfĂ€llt, wenn die selektive ZugangsgewĂ€hrung zur Laufzeit nicht unterstĂŒtzt wird. Ebenso kann der Zugang zu USB-GerĂ€ten („has-usb-device“ und „has-usb-portal“) oder gemeinsam genutzten Subsystemen angefordert werden.
  • Zugriff auf das GerĂ€t /dev/ntsync wurde gewĂ€hrt, um auf
    das NTSYNC-Kernelmodul zuzugreifen, das eine Sammlung von Synchronisationsprimitive bereitstellt, die im Windows NT-Kernel verwendet werden, und die Leistung von Windows-Spielen, die mit Wine gestartet werden, erheblich steigern können.
  • FĂŒr Intel Xe GPUs ist die UnterstĂŒtzung der VA-API fĂŒr die Hardwarebeschleunigung der Video-Dekodierung hinzugefĂŒgt worden.
  • Die Möglichkeit, auf das GerĂ€t /dev/kfd (Kernel Fusion Driver) mit den Berechtigungen zuzugreifen, die fĂŒr DRI-GerĂ€te gewĂ€hrt werden, wurde realisiert. Der kfd-Treiber implementiert eine Schnittstelle fĂŒr die direkte AusfĂŒhrung von Berechnungen auf AMD-GPUs aus Anwendungen, die AMD ROCm, HIP und OpenCL nutzen.
  • Die UnterstĂŒtzung fĂŒr die Verwendung von Befehlszeilenoptionen zum Weiterleiten des Zugriffs auf Verzeichnisse in isolierte Anwendungen wurde hinzugefĂŒgt.
  • Die UnterstĂŒtzung des Verzeichnisses „preinstall.d“ wurde hinzugefĂŒgt, das eine Liste vorinstallierter Flatpak-Anwendungen definiert (um Flatpak-Anwendungen in das Betriebssystem aufzunehmen).
  • Die direkte Installation von Anwendungen aus OCI-Containerabbildern, die aus eigenen OCI-Repositories und lokalen Archiven geladen werden können, wurde erlaubt.
  • Die UnterstĂŒtzung fĂŒr die URI „flatpak+https://“ wurde dem Befehl „flatpak install —from“ hinzugefĂŒgt.
  • Das Kommando „flatpak run“ wurde um die Option „—clear-env“ erweitert, um Umgebungsvariablen vor dem Start der Anwendung zu löschen.
  • Damit wird die Möglichkeit geboten, das Wurzelverzeichnis der Host-Umgebung in eine isolierte Anwendungsumgebung zu exportieren, ĂŒber das Verzeichnis /run/host/root zugĂ€nglich.
  • Es wurde die Möglichkeit hinzugefĂŒgt, die Ergebnisse der BefehlsausfĂŒhrung im JSON-Format auszugeben.
  • Die Isolierung der Build-Umgebung wurde verstĂ€rkt – das Kommando „flatpak build“ gewĂ€hrt standardmĂ€ĂŸig keinen Zugriff auf den Host.
  • Es wurde der Befehl „reinstall“ zur Neuinstallation von AbhĂ€ngigkeiten (Bundles) hinzugefĂŒgt.
  • Die D-Bus-Einstellungen wurden standardmĂ€ĂŸig von /etc nach /usr verschoben.
  • Die Startzeit beim Einsatz des Kommandos „fish“ wurde verkĂŒrzt.
  • In libflatpak wurde eine Funktion hinzugefĂŒgt, um Informationen ĂŒber die Erstellungszeit der Konfiguration abzurufen, wodurch Anwendungen wie GNOME Software feststellen können, dass ihre zwischengespeicherten Daten aktualisiert werden mĂŒssen.
  • Die Build-Option http_backend wurde entfernt; anstelle von libsoup2 wird nun die Bibliothek libcurl fĂŒr HTTP/HTTPS-Downloads verwendet.
  • Die Verwendung von Escape-Sequenzen zur Anzeige des Fortschritts der Operationen ist standardmĂ€ĂŸig aktiviert.
  • Es wurde ermöglicht, Zugriffsrechte fĂŒr GerĂ€te an verschachtelte Sandbox-Umgebungen zu ĂŒbergeben, die ĂŒber Flatpak-Portale erstellt wurden.
  • FĂŒr Anwendungen, die als OCI-Images bereitgestellt werden, wurde ein Mechanismus fĂŒr „extra-data“ implementiert, der beispielsweise die Wiedergabe von h.265-Videos in Flatpak-Paketen von Fedora Linux ermöglicht.
  • Es wurde die UnterstĂŒtzung fĂŒr die Komprimierung von AbhĂ€ngigkeiten (OCI-Bundle) mit dem Algorithmus zstd hinzugefĂŒgt, der Daten effizienter komprimiert. StandardmĂ€ĂŸig wird weiterhin gzip fĂŒr die Komprimierung verwendet, was maximale KompatibilitĂ€t gewĂ€hrleistet.

Flatpak vereinfacht die Verbreitung von Anwendungen, die nicht in die Standard-Repositories von Distributionen aufgenommen werden, indem es einen universellen Container vorbereitet, der Entwicklern die Notwendigkeit nimmt, separate Builds fĂŒr jede Distribution zu erstellen. Nutzern, die Wert auf Sicherheit legen, ermöglicht Flatpak, zweifelhafte Anwendungen in einem Container auszufĂŒhren, wobei nur selektiver Zugriff auf erforderliche Netzwerkfunktionen und Benutzerdateien gewĂ€hrt wird. Nutzern, die an Neuigkeiten interessiert sind, erlaubt Flatpak, die neuesten Test- und stabilen Versionen von Anwendungen zu installieren, ohne Änderungen am System vornehmen zu mĂŒssen. Beispielsweise werden Flatpak-Pakete fĂŒr LibreOffice, GIMP, Inkscape, Kdenlive, Steam, 0 A.D., Visual Studio Code, VLC, Slack, Telegram Desktop, Android Studio usw. erstellt.

Um die GrĂ¶ĂŸe zu reduzieren, werden nur anwendungsspezifische AbhĂ€ngigkeiten in das Paket einbezogen. Grundlegende System- und Grafikbibliotheken (GTK, Qt, GNOME- und KDE-Bibliotheken usw.) werden als Plug-in-Standard-Runtime-Umgebungen bereitgestellt. Der entscheidende Unterschied zwischen Flatpak und Snap besteht darin, dass Snap Komponenten der Hauptsystemumgebung und Isolation auf Basis von Systemaufruf-Filtern verwendet, wĂ€hrend Flatpak einen vom System getrennten Container erstellt und große Runtime-Sets verwendet, die als AbhĂ€ngigkeiten keine Pakete, sondern Standard-Systemumgebungen bereitstellen (z. B. alle Bibliotheken, die fĂŒr die AusfĂŒhrung von GNOME- oder KDE-Anwendungen erforderlich sind).

Neben der Standard-Systemumgebung (Runtime), die ĂŒber ein spezielles Repository installiert wird, werden zusĂ€tzliche AbhĂ€ngigkeiten (Bundle) bereitgestellt, die fĂŒr die AusfĂŒhrung der Anwendung erforderlich sind. Zusammen bilden «Runtime» und «Bundle» die Inhalte des Containers, wobei «Runtime» separat installiert und mehreren Containern zugeordnet wird, was die doppelte Speicherung gemeinsamer Systemdateien fĂŒr die Container ĂŒberflĂŒssig macht.

In einem System können mehrere verschiedene „Runtime“ (GNOME, KDE) oder mehrere Versionen einer „Runtime“ (GNOME 50, GNOME 49) installiert werden. Ein Container mit einer Anwendung verwendet als AbhĂ€ngigkeit die Bindung nur an eine bestimmte „Runtime“, ohne die einzelnen Pakete zu berĂŒcksichtigen, die die gewĂ€hlte „Runtime“ bilden. Alle fehlenden Elemente werden direkt zusammen mit der Anwendung verpackt. Bei der Erstellung des Containers wird der Inhalt der „Runtime“ als das Verzeichnis /usr montiert, und das „Bundle“ wird im Verzeichnis /app gemountet.

Die Zusammensetzung der „Runtime“ und der Anwendungscontainer erfolgt mit der Technologie OSTree, bei der das Abbild atomar aus einem Git-Ă€hnlichen Repository aktualisiert wird, das es ermöglicht, Versionskontrollmethoden auf die Komponenten der Distribution anzuwenden (zum Beispiel kann das System schnell auf einen frĂŒheren Zustand zurĂŒckgesetzt werden). RPM-Pakete werden ĂŒber eine Schicht rpm-ostree in das OSTree-Repository ĂŒberfĂŒhrt.

Die selektive Installation und Aktualisierung von Paketen im Arbeitsumfeld wird nicht unterstĂŒtzt — das System wird nicht auf der Ebene einzelner Komponenten, sondern vollstĂ€ndig aktualisiert, indem es atomar seinen Zustand Ă€ndert. Es stehen Mittel zur VerfĂŒgung, um inkrementelle Updates anzuwenden, die eine vollstĂ€ndige Ersetzung des Abbilds bei jedem Update ĂŒberflĂŒssig machen.

Die gebildete isolierte Umgebung ist unabhĂ€ngig von der verwendeten Distribution und hat bei entsprechender Paketkonfiguration keinen Zugriff auf die Dateien und Prozesse des Benutzers oder des Hauptsystems und kann außerdem nicht direkt auf Hardware zugreifen, mit Ausnahme der Ausgabe ĂŒber DRI. Die Ausgabe von Grafiken und die Eingabeverwaltung werden durch das Protokoll Wayland oder durch die Weiterleitung des X11-Sockets realisiert. Die Interaktion mit der externen Umgebung erfolgt ĂŒber das DBus-Messaging-System und eine spezielle API Portals.

Zur Isolation wird eine Schicht namens Bubblewrap und traditionelle Linux-Container-Virtualisierungstechnologien verwendet, die auf der Nutzung von cgroups, NamensrÀumen (Namespaces), Seccomp und SELinux basieren. Bei der Erstellung eines Pakets kann die Isolation deaktiviert werden, was von Entwicklern bestimmter Pakete genutzt wird, um vollen Zugriff auf das Dateisystem und alle GerÀte im System zu erhalten.

Quelle: opennet.ru

ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server đŸ”„ ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server - ProHoster