neue stabile Version des Tools , das ein System zur Erstellung von autarken Paketen 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 unterstützt, , 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 in der Flatpak 1.4-Version:
- Die Organisation der Einstellungen externer Repositories wurde geändert. Anstelle von *.conf-Dateien mit Einstellungen werden im Verzeichnis /etc/flatpak/remotes.d jetzt reguläre Dateien «.flatpakrepo» verwendet, die beim ersten Einsatz von flatpak automatisch importiert werden. Diese Dateien können frei bearbeitet und gelöscht werden, ähnlich wie manuell hinzugefügte Repositories;
- Die Organisation der installierbaren Pakete, die für das gesamte System verfügbar sind, wurde erheblich überarbeitet. In früheren Versionen wurde das Paket zunächst in ein temporäres Verzeichnis, das dem Benutzer gehörte, installiert, und anschließend wurde der Prozess system-helper aufgerufen, um es aus diesem Verzeichnis ins System zu importieren. Dieser Ansatz führte zu hohem Disk-Ressourcenverbrauch, unnötigem I/O und potenziellen Sicherheitsproblemen. In der neuen Version wird zur Installation von Systempaketen ein spezielles neues FUSE-Dateisystem verwendet, in das der Benutzer Daten schreiben kann, der Zugriff auf die geschriebenen Dateien wird dem Benutzer jedoch nach Abschluss des Schreibens verweigert. Der neue Ansatz erfordert die Einrichtung eines separaten Benutzers für flatpak (standardmäßig „flatpak“) und Änderungen an den SELinux-Regeln;
- Die Möglichkeit, Filter für externe Repositories auf der Kundenseite festzulegen, wurde hinzugefügt. Mit Hilfe von Filtern kann die Sichtbarkeit von Anwendungen im Repository eingeschränkt werden, indem ein Weiß- und Schwarzeschema verwendet wird;
- Eine Bibliotheks-API zum Hinzufügen externer Repositories aus flatpakref-Dateien wurde hinzugefügt;
- Ein seccomp-Profil für Docker wurde hinzugefügt, das die Ausführung von flatpak in Containern ermöglicht;
- Die Möglichkeit zur Installation aus mehreren P2P-Quellen (über USB-Speicher oder im lokalen Netzwerk) wurde verbessert;
- In dem Befehl „flatpak remote-ls“ wurde eine automatische Filterung von Anwendungen, deren Supportzeit abgelaufen ist, implementiert;
- In „flatpak remote-ls“ und „flatpak remote-info“ wurde die Option „—cached“ für die Bereitstellung von Informationen basierend auf lokal zwischengespeicherten Daten eingeführt;
- Die Möglichkeit, ein Ablaufdatum für die Lebensdauer eines Pakets anzugeben, nach dem ein Vorschlag für den Wechsel zu einem neuen Branch angezeigt wird, wurde hinzugefügt;
- Die Option „—socket=pcsc“ zum Zugriff auf Smartcards wurde hinzugefügt;
- Unterstützung für Systeme, die mehrere NVIDIA-Grafikkarten enthalten, wurde hinzugefügt;
- Unterstützung für dconf im Sandbox-Umfeld implementiert;
- Das Team build-update-repo hat die Optionen „—no-update-[summary,appstream]“ und „—static-delta-ignore-ref=PATTERN“ hinzugefügt;
- Die Geschwindigkeit der Regeneration von Appstream-Zweigen für große Repositories wurde erheblich erhöht.
Wir erinnern daran, dass Flatpak-Anwendungsentwicklern ermöglicht, die Verbreitung ihrer Programme zu vereinfachen, die nicht in den offiziellen Repositories von Distributionen enthalten sind, dank eines universellen Containers ohne separate Builds für jede Distribution. Für sicherheitsbewusste Nutzer ermöglicht Flatpak das Ausführen potenziell unsicherer Anwendungen in einem Container, der nur Zugriff auf Netzwerkfunktionen und benutzerspezifische Dateien der Anwendung gewährt. Für Nutzern, die an Neuheiten interessiert sind, ermöglicht Flatpak die Installation der neuesten Test- und stabilen Versionen von Anwendungen, ohne Änderungen am System vornehmen zu müssen. Derzeit sind Flatpak-Pakete bereits verfügbar. für LibreOffice, Firefox, GIMP, Inkscape, Kdenlive, Steam, 0 A.D., Visual Studio Code, VLC, Slack, Skype, Telegram Desktop, Android Studio usw.
Um die Paketgröße zu reduzieren, beinhaltet es nur spezifische Abhängigkeiten für die Anwendung, während grundlegende System- und Grafikbibliotheken (Gtk+, Qt, GNOME- und KDE-Bibliotheken usw.) in Form von modularen Standard-Runtime-Umgebungen bereitgestellt werden. Der Hauptunterschied zwischen Flatpak und Snap besteht darin, dass Snap die Komponenten der Hauptsystemumgebung und eine Isolation auf Basis von Systemaufruf-Filterung verwendet, während Flatpak einen vom System separaten Container erzeugt und mit großen Runtime-Sets operiert, die anstelle von Paketen typische Systemumgebungen (zum Beispiel alle Bibliotheken, die zur Ausführung von GNOME- oder KDE-Programmen erforderlich sind) als Abhängigkeiten bereitstellt.
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 erzeugte isolierte Umgebung ist vollständig unabhängig von der verwendeten Distribution und hat bei ordnungsgemäßer Paketkonfiguration keinen Zugriff auf Benutzerdateien und -prozesse oder das Hauptsystem. Sie kann nicht direkt auf Hardware zugreifen, mit Ausnahme der Ausgabe über DRI und des Netzwerkunterstützungssystems. Die Grafikausgabe und die Eingabeverarbeitung 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
