neue stabile Version des Tools , das ein System zum Erstellen eigenständiger Pakete bereitstellt, die nicht an bestimmte Linux-Distributionen gebunden sind und in einem speziellen Container ausgeführt werden, der die Anwendung vom Rest des Systems isoliert. Die Ausführung von Flatpak-Paketen wird für Arch Linux, , Debian, Fedora, Gentoo, Mageia, Linux Mint und Ubuntu unterstützt. Flatpak-Pakete sind im Fedora-Repository enthalten und werden in der Standardanwendung zur Verwaltung von Anwendungen GNOME unterstützt.
Hauptmerkmale Änderungen in der Flatpak 1.8 Version:
- Die Implementierung der Installation im P2P-Modus wurde vereinfacht (ermöglicht das Herunterladen von Anwendungen und Runtime-Sets über Zwischenknoten oder Speichergeräte für Systeme ohne Netzwerkanschluss). Die Unterstützung für die Installation über Zwischenhosts im lokalen Netzwerk wurde eingestellt. Die automatische Übertragung von Repositories (Sideload) von lokalen USB-Laufwerken ist standardmäßig deaktiviert. Um zwischenlokale Repositories zu aktivieren, sollte das Repository durch das Erstellen eines symbolischen Links aus /var/lib/flatpak/sideload-repos eingerichtet werden oder
/run/flatpak/sideload-repos. Изменение позволило упростить внутреннюю реализацию режима P2P и повысить его эффективность. - Eine optionale systemd-Einheit wurde hinzugefügt, um zusätzliche Repositories auf angeschlossenen externen USB-Geräten automatisch zu erkennen.
- Für Anwendungen mit Zugriff auf das Dateisystem wurde der Ordner /lib der Host-Umgebung in /run/host/lib durchgereicht.
- Neue Berechtigungen für den Zugriff auf das Dateisystem wurden hinzugefügt – „host-etc“ und „host-os“, die den Zugriff auf die Systemverzeichnisse /etc und /usr ermöglichen.
- Zur Generierung effizienterer Parsing-Codes für GVariant-Dateien aus ostree wurde .
- Die Build-Krypt-Konfiguration bietet die Möglichkeit, ohne
libsystemd zu bauen; - Die Montage der Journal-Sockets im Nur-Lese-Modus wurde sichergestellt.
- In document-export wurde die Unterstützung für den Export von Verzeichnissen hinzugefügt.
- Direkter Zugriff auf ALSA-Audiogeräte für Anwendungen mit Zugriff auf PulseAudio wurde erlaubt.
- Im API hat das Signal „install-authenticator“ hinzugefügt, das von Clients zur Installation der für eine Transaktion erforderlichen Authentifikatoren verwendet werden kann.
- Die Verwendung von Zeitzonendaten auf Basis von /etc/localtime aus dem Hosts-System wurde ermöglicht, was zeitbezogene Probleme in einigen Anwendungen gelöst hat.
- Die Installation der env.d-Datei aus gdm wurde eingestellt, da die systemd-Generatoren damit besser umgehen können.
- In der create-usb Utility ist der Export von部分的 Commits standardmäßig aktiviert.
- Die Bereitstellung der sysusers.d-Datei für die Erstellung notwendiger Benutzer über systemd ist sichergestellt.
- Den Befehlen „flatpak remote-add“ und „flatpak modify“ wurde die Option „—[no-]follow-redirect“ hinzugefügt, um die Umleitung zu einem anderen Repository zu verbieten/erlauben.
- In das System
wurde die API Spawn hinzugefügt, um die tatsächliche Prozess-ID (PID) der gestarteten Anwendung abzurufen. - Alle OCI (Open Container Initiative) Repositories wurden auf die Verwendung des Authentifikators flatpak-oci-authenticator umgestellt.
- Den Befehlen „flatpak remote-info“ und „flatpak update“ wurde die Option „—commit=“ hinzugefügt, um eine bestimmte Version des OCI-Repositories festzulegen.
- Es wurde eine erste Unterstützung für Delta-Updates für OCI-Repositories hinzugefügt.
- Der Befehl „flatpak upgrade“ wurde hinzugefügt, der ein Alias für den Befehl „flatpak update“ ist.
- Eingabevervollständigungsskripte für die Shell fish wurden implementiert.
Erinnern wir uns daran, dass Entwicklern von Flatpak-Anwendungen die Möglichkeit gegeben wird, die Verbreitung ihrer Programme zu vereinfachen, die nicht in die offiziellen Repositories der Distributionen aufgenommen werden, durch eines universellen Containers, ohne separate Builds für jede Distribution erstellen zu müssen. Benutzern, die Wert auf Sicherheit legen, ermöglicht es Flatpak, eine fragwürdige Anwendung in einem Container auszuführen, der nur Zugriff auf die Netzwerkfunktionen und die Benutzerdaten, die mit der Anwendung verbunden sind, gewährt. Benutzern, die an Neuheiten interessiert sind, ermöglicht es Flatpak, die neuesten Test- und stabilen Versionen von Anwendungen zu installieren, ohne dass Änderungen am System erforderlich sind. Zum Beispiel werden derzeit Flatpak-Pakete bereits für LibreOffice, Midori, GIMP, Inkscape, Kdenlive, Steam, 0 A.D., Visual Studio Code, VLC, Slack, Skype, Telegram Desktop, Android Studio usw.
Um die Paketgröße zu reduzieren, enthält es nur spezifische Anwendungsabhängigkeiten, während grundlegende System- und Grafikbibliotheken (wie Gtk+, Qt, GNOME- und KDE-Bibliotheken usw.) in Form von anpassbaren, typischen Runtime-Umgebungen bereitgestellt werden. Ein wesentlicher Unterschied zwischen Flatpak und Snap besteht darin, dass Snap Komponenten der Basisumgebung des Systems verwendet und eine Isolation auf Basis der Filterung von Systemaufrufen implementiert, während Flatpak einen vom System getrennten Container erstellt und mit großen Runtime-Sets arbeitet, die nicht in Paketen, sondern als typische Systemumgebungen bereitgestellt werden (zum Beispiel alle Bibliotheken, die für die Ausführung von GNOME- oder KDE-Programmen erforderlich sind).
Neben der typischen Systemumgebung (Runtime), die über ein spezielles , werden zusätzliche Abhängigkeiten (Bundle) geliefert, die für die Ausführung der Anwendung erforderlich sind. Zusammen bilden Runtime und Bundle die Inhalte des Containers, wobei die Runtime separat installiert und mehreren Containern zugeordnet wird, was eine Duplizierung gemeinsamer Systemdateien für Container vermeidet. Auf einem System können mehrere verschiedene Runtimes (GNOME, KDE) oder mehrere Versionen einer Runtime (GNOME 3.26, GNOME 3.28) installiert sein. Der Container mit der Anwendung verwendet als Abhängigkeit nur eine bestimmte Runtime und ignoriert die einzelnen Pakete, aus denen die Runtime besteht. Alle fehlenden Elemente werden direkt zusammen mit der Anwendung verpackt. Bei der Erstellung des Containers wird der Inhalt der Runtime als das Verzeichnis /usr eingebunden, während das Bundle im Verzeichnis /app eingebunden wird.
Die Inhalte der Runtime und der Anwendungscontainer werden mithilfe der Technologie , bei der das Abbild atomar aus einem Git-ähnlichen Speicher aktualisiert wird, was es ermöglicht, Versionskontrollmethoden auf die Komponenten der Distribution anzuwenden (zum Beispiel kann das System schnell in einen früheren Zustand zurückgesetzt werden). RPM-Pakete werden über eine spezielle Schicht in das OSTree-Repository übertragen. . Eine separate Installation und Aktualisierung von Paketen innerhalb der Arbeitsumgebung wird nicht unterstützt; das System wird nicht auf der Ebene einzelner Komponenten, sondern vollständig aktualisiert und ändert atomar seinen Zustand. Es werden Mittel bereitgestellt, um inkrementelle Updates anzuwenden, die die Notwendigkeit einer vollständigen Bildersetzung bei jedem Update beseitigen.
Die gebildete isolierte Umgebung ist vollständig unabhängig von der verwendeten Distribution und hat bei entsprechender Konfiguration des Pakets keinen Zugriff auf die Dateien und Prozesse des Benutzers oder des Hauptsystems, kann nicht direkt auf die Hardware zugreifen, mit Ausnahme der Ausgabe über DRI, und auf das NetzwerkSubsystem. Grafikausgabe und Eingangsorganisation durch das Protokoll Wayland oder durch das Durchreichen des X11-Sockets. Die Interaktion mit der externen Umgebung erfolgt auf Basis des Nachrichtenaustauschsystems DBus und einer speziellen API für Portale. Zur Isolation Schicht und traditionellen Linux-Technologien zur Container-Virtualisierung, die auf der Verwendung von cgroups, Namensräumen (namespaces), Seccomp und SELinux basieren. Für die Audioausgabe wird PulseAudio verwendet.
Quelle: opennet.ru
