ein neuer stabiler Branch des Tools , das ein System zur Erstellung von eigenständigen Paketen bietet, 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 Unterstützung für die Ausführung von Flatpak-Paketen ist für Arch Linux, , Debian, Fedora, Gentoo, Mageia, Linux Mint und Ubuntu verfügbar. Flatpak-Pakete sind im Fedora-Repository enthalten und werden in der standardmäßigen GNOME-Anwendungsverwaltung unterstützt.
Schlüssige in der Flatpak 1.8-Version:
- Die Implementierung der Installation im P2P-Modus wurde vereinfacht (er ermöglicht das Herunterladen von Anwendungen und Laufzeitumgebungen über Zwischenknoten oder Speicher für Systeme ohne Netzwerkverbindung). Die Unterstützung für die Installation über Zwischenhosts im lokalen Netzwerk wurde eingestellt. Die automatische Download-Funktion für Repositories (sideload), die auf lokalen USB-Speichern platziert sind, ist standardmäßig deaktiviert. Um Zwischenlokal-Repositories zu aktivieren, muss das Repository durch die Erstellung eines symbolischen Links von /var/lib/flatpak/sideload-repos konfiguriert werden oder
/run/flatpak/sideload-repos. Изменение позволило упростить внутреннюю реализацию режима P2P и повысить его эффективность. - Eine optionale systemd-Einheit wurde hinzugefügt, um zusätzliche Repositories auf angeschlossenen externen USB-Speichern automatisch zu erkennen.
- Für Anwendungen mit Zugriff auf das Dateisystem wurde der Durchbruch des Verzeichnisses /lib der Host-Umgebung in /run/host/lib gewährleistet.
- Neue Zugriffsberechtigungen für das Dateisystem wurden hinzugefügt - „host-etc“ und „host-os“, die Zugriff auf die Systemverzeichnisse /etc und /usr ermöglichen.
- Für die Generierung effizienterer Parser-Codes für GVariant-Dateien aus ostreee wurde .
- Im Build-System configure wurde die Möglichkeit zur Erstellung ohne
libsystemd bereitgestellt; - Die Journal-Sockets werden im Nur-Lesen-Modus gemountet.
- In document-export wurde die Unterstützung für den Export von Verzeichnissen hinzugefügt.
- Der direkte Zugriff auf ALSA-Audiogeräte für Anwendungen mit Zugriff auf Pulseaudio wurde ermöglicht.
- In der API ein Signal „install-authenticator“ hinzugefügt, das von Clients verwendet werden kann, um Authenticatoren zu installieren, die für die Durchführung der Transaktion erforderlich sind.
- Die Verwendung von Zeitzonendaten basierend auf /etc/localtime aus dem Host-System wurde sichergestellt, was zeitzonenbezogene Probleme in einigen Anwendungen löste.
- Die Installation der Datei env.d aus gdm wurde eingestellt, da systemd-Generatoren diese Aufgabe besser erfüllen.
- In das Tool create-usb wurde standardmäßig der Export von teilweisen Commits integriert.
- Eine Datei sysusers.d zur Erstellung der erforderlichen Benutzer über systemd wurde bereitgestellt.
- In die Befehle „flatpak remote-add“ und „flatpak modify“ wurde die Option „—[no-]follow-redirect“ hinzugefügt, um das Weiterleiten zu einem anderen Repository zu verbieten/erlauben.
- In das System
wurde die Spawn-API zur Erlangung der tatsächlichen Prozess-ID (PID) der laufenden Anwendung hinzugefügt. - Alle OCI-Repositories (Open Container Initiative) wurden auf die Verwendung des Authenticator flatpak-oci-authenticator umgestellt.
- In die Befehle „flatpak remote-info“ und „flatpak update“ wurde die Option „—commit=“ eingeführt, um eine bestimmte Version der OCI-Repositories festzulegen.
- Erste Unterstützung für Delta-Updates für OCI-Repositories wurde hinzugefügt.
- Der Befehl „flatpak upgrade“ wurde hinzugefügt, der ein Alias für den Befehl „flatpak update“ ist.
- Eingabeschnittstellenskripte für die Fish-Shell wurden umgesetzt.
Es sei daran erinnert, dass Flatpak Anwendungsentwicklern die Möglichkeit gibt, die Verbreitung ihrer Programme zu vereinfachen, die nicht in den Standard-Repositories der Distributionen enthalten sind, durch ein universelles Containerformat, das keine separaten Builds für jede Distribution erfordert. Benutzern, die auf Sicherheit bedacht sind, ermöglicht Flatpak, unsichere Anwendungen in einem Container auszuführen, wobei nur der Zugriff auf Netzwerkfunktionen und benutzerspezifische Dateien, die mit der Anwendung verbunden sind, gewährt wird. Benutzern, die an Neuigkeiten interessiert sind, erlaubt Flatpak die Installation der neuesten Test- und stabilen Versionen von Anwendungen, ohne dass Änderungen am System erforderlich sind. Zum Beispiel sind 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, umfasst es nur anwendungsspezifische Abhängigkeiten, während grundlegende System- und Grafikbibliotheken (Gtk+, Qt, GNOME- und KDE-Bibliotheken usw.) in Form von modularen Standardlaufzeitumgebungen bereitgestellt werden. Der Hauptunterschied zwischen Flatpak und Snap liegt darin, dass Snap Komponenten der Hauptsystemumgebung und Isolation durch Systemaufruffilterung verwendet, während Flatpak einen vom System getrennten Container erstellt und mit großen Laufzeitumgebungen arbeitet, indem es nicht Pakete, sondern standardisierte Systemumgebungen bereitstellt (z. B. alle für die Ausführung von GNOME- oder KDE-Programmen erforderlichen Bibliotheken).
Neben der standardisierten Systemumgebung (Runtime), die über einen speziellen , werden zusätzliche Abhängigkeiten (Bundle) bereitgestellt, die für den Betrieb der Anwendung erforderlich sind. Zusammen bilden Runtime und Bundle die Grundlage des Containers, wobei die Runtime separat installiert wird und mehreren Containern zugeordnet werden kann. Dies ermöglicht die Vermeidung von Duplizierung gemeinsamer Systemdateien für die Container. In 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 als Abhängigkeit verwendet die Bindung nur zu einer bestimmten Runtime, ohne die einzelnen Pakete zu berücksichtigen, 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 Partition /usr gemountet, während das Bundle im Verzeichnis /app gemountet wird.
Die Grundlage der Runtime und der Anwendungscontainer wird mithilfe von Technologien erstellt. , bei dem das Abbild atomar aus einem Git-ähnlichen Repository aktualisiert wird, was es ermöglicht, Versionierungsmethoden 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 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 in Gänze aktualisiert, wobei der Zustand atomar geändert wird. Es stehen Werkzeuge zur Verfügung, die inkrementelle Aktualisierungen ermöglichen und die vollständige Ersetzung des Abbilds bei jeder Aktualisierung überflüssig machen.
Die gebildete isolierte Umgebung ist vollständig unabhängig von der verwendeten Distribution und hat bei entsprechender Paketkonfiguration keinen Zugang zu den Dateien und Prozessen des Benutzers oder des Hauptsystems, kann nicht direkt auf die Hardware zugreifen, abgesehen von Ausgaben über DRI, und das Netzwerk-Subsystem. Die Ausgabe von Grafiken und Eingabeorganisation durch das Wayland-Protokoll oder über den X11-Socket-Forwarding. Die Interaktion mit der Außenwelt basiert auf dem DBus-Nachrichtenaustauschsystem und einer speziellen API für Portale. Zur Isolation Schicht und die traditionellen Linux-Technologien zur Container-Virtualisierung, die auf cgroups, Namespaces, Seccomp und SELinux beruhen. Für die Audioausgabe wird PulseAudio verwendet.
Quelle: opennet.ru
