Grundlegende Konzepte#

Flatpak wird verständlich durch eine kleine Zahl an Schlüsselkonzepten. Es ist sinnvoll, mit diesen vertraut zu sein, bevor man lernt Flatpak auf der Kommandozeile zu verwenden oder um Applikationen zu generieren.

_images/diagram.svg

Laufzeitumgebungen#

Laufzeitumgebungen beinhalten die grundlegenden Abhängigkeiten, die von den Anwendungen verwendet werden. Jede Anwendung muss gegen eine Laufzeitumgebung erzeugt werden und diese Laufzeitumgebung muss auf einem Gastsystem installiert sein, als Voraussetzung damit die Anwendung lauffähig ist (Flatpak kann die Laufzeitumgebung, die von einer Applikation benötigt wird, automatisch installieren). Es können mehrere unterschiedliche Laufzeitumgebungen zur gleichen Zeit installiert werden, dies beinhaltet auch verschiedene Versionen der gleichen Laufzeitumgebung.

Laufzeitumgebungen sind unabhängig von Distributionen und sind auch nicht auf bestimmte Versionen dieser angewiesen. Das bedeutet, dass sie eine stabile und distributionsübergreifende Basis für Anwendungen darstellen und diesen erlauben weiterzuarbeiten – unabhängig von Aktualisierungen des Betriebssystems.

Gebündelte Bibliotheken#

Wenn eine Anwendung Abhängigkeiten benötigt, die nicht in seiner Laufzeitumgebung vorhanden sind, können diese gebündelt werden als Teil der Applikation. Dies gibt Anwendungsentwicklern Flexibilität im Hinblick auf die Abhängigkeiten, die sie verwenden. Dies beinhaltet die Verwendung von:

  • libraries that aren’t available in a runtime

  • different versions of libraries from the ones that are in a runtime

  • gepatchte Versionen von Bibliotheken

Sandboxen#

Mit Flatpak wird jede Applikation in einer isolierten Umgebung erzeugt und gestartet, diese wird als »Sandbox« bezeichnet. Jede Sandbox beinhaltet eine Applikation und seine Laufzeitumgebung. Standardmäßig kann die Anwendung lediglich auf die Inhalte seiner Sandbox zugreifen. Zugriff auf Benutzerdateien, Netzwerk, Grafiksockets, Subsysteme auf dem Bus und Geräten muss ausdrücklich erteilt werden. Zugriff auf andere Dinge, so wie andere Prozesse, ist bewusst nicht möglich.

Einige Ressourcen, die innerhalb der Sandbox liegen, müssen bei Bedarf nach außen freigegeben werden, um vom Gastsystem verwendet zu werden. Diese sind bekannt als »Exports«, da dies Dateien sind, die aus der Sandbox heraus exportiert werden und Dinge enthalten wie die .desktop-Datei und Icon einer Anwendung.

Portale#

Portale sind ein Mechanismus durch den Applikationen, aus einer Sandbox heraus, mit der Gastumgebung interagieren können. Sie geben die Möglichkeit mit Daten, Dateien und Diensten zu interagieren, ohne die Notwendigkeit Sandbox-Berechtigungen hinzuzufügen.

Beispiele für Ressourcen, auf die durch Portale zugegriffen werden kann, beinhalten das Öffnen von Dateien mittels eines Dateiauswahldialogs oder Drucken. Interface-Toolkits können eine transparente Unterstützung für Portale implementieren, sodass der Zugriff auf Ressourcen außerhalb der Sandbox sicher und out-of-the-box funktioniert.

Weitere Informationen zu Portalen können unter Sandbox Permissions gefunden werden.

Repositorys#

Anwendungen und Laufzeitumgebungen von Flatpaks werden normalerweise gespeichert und veröffentlicht unter Verwendung von Repositorys, die sich sehr ähnlich zu Git-Repositorys verhalten. Ein Flatpak-Repository kann ein einziges Objekt oder mehrere enthalten, jedes Objekt ist dabei versioniert, was upgraden und sogar downgraden ermöglicht.

Jedes System, das Flatpak verwendet, kann konfiguriert werden auf jegliche Anzahl von Repositorys zuzugreifen. Sobald ein System konfiguriert wurde auf ein »Remote« zuzugreifen, kann der Inhalt der Remote-Repositorys inspiziert und durchsucht werden.

Wenn eine Aktualisierung durchgeführt wird, werden neue Versionen der installierten Anwendungen und Laufzeitumgebungen von dem relevanten Remote heruntergeladen. Wie mit Git, werden lediglich Unterschiede zwischen Versionen heruntergeladen, was den Prozess sehr effizient macht.