Erstellen des ersten Flatpaks#

Dieses Tutorial liefert eine schnelle Einführung in die Erstellung von Flatpaks. In diesem lernt man, wie man grundsätzlich eine einfache Flatpak-Anwendung erstellt, die dann installiert und gestartet werden kann.

In order to complete this tutorial, you should have followed the setup guide on flatpak.org. You also need to have installed flatpak-builder, which is usually available from the same repository as the flatpak package (e.g. use apt or dnf). You can also install it as a flatpak with flatpak install flathub org.flatpak.Builder.

1. Installieren einer Laufzeitumgebung und des zugehörigen SDK#

Flatpak fordert von jeder Anwendung, eine Laufzeitumgebung zu spezifizieren, die für es für die Auflösung der grundsätzlichen Abhängigkeiten benötigt. Jede Laufzeitumgebung hat ein zugehöriges SDK (Software Development Kit), das alle Bestandteile der Laufzeitumgebung enthält, sowie Header-Dateien und Entwicklung-Tools. Das SDK wird benötigt, um Anwendungen für die Laufzeitumgebung zu erstellen.

In this tutorial we will use the Freedesktop 23.08 runtime and SDK. To install these, run:

$ flatpak install flathub org.freedesktop.Platform//23.08 org.freedesktop.Sdk//23.08

2. Erstellen der App#

Die Anwendung, die für dieses Tutorial erstellt wird, ist ein einfaches Skript. Um sie zu erstellen, kopiert man Folgendes:

#!/bin/sh
echo "Hello world, from a sandbox"

Dies wird in eine leere Datei eingefügt und als hello.sh gespeichert.

3. Hinzufügen eines Manifests#

Jedes Flatpak wird unter Verwendung einer Manifest-Datei gebaut, dieses enthält grundlegende Informationen über die Anwendung und Instruktionen darüber, wie es gebaut werden soll. Um ein Manifest zu der hello world-anwendung hinzuzufügen, fügt man das Folgende in eine leere Datei ein:

id: org.flatpak.Hello
runtime: org.freedesktop.Platform
runtime-version: '23.08'
sdk: org.freedesktop.Sdk
command: hello.sh
modules:
  - name: hello
    buildsystem: simple
    build-commands:
      - install -D hello.sh /app/bin/hello.sh
    sources:
      - type: file
        path: hello.sh

Now save the file alongside hello.sh and call it org.flatpak.Hello.yml.

In einer komplexeren Anwendung würde das Manifest verschiedene Module auflisten. Das letzte Modul würde standardmäßig die Anwendung selbst sein und die davor aufgelisteten Module würden Abhängigkeiten sein, die mit der Anwendung gebündelt werden, da sie kein Bestandteil der Laufzeitumgebung sind.

4. Erzeugen der Anwendung#

Nachdem die Anwendung ein Manifest besitzt, kann flatpak-builder verwendet werden, um sie zu erzeugen. Durchgeführt wird dies, indem ein Zielverzeichnis und die Manifest-Datei angegeben wird:

$ flatpak-builder build-dir org.flatpak.Hello.yml

Dieses Kommando erzeugt jedes Modul, das im Manifest gelistet ist und installiert es, innerhalb des build-dir-Verzeichnisses, in das /app-Unterverzeichnis.

5. Testen des Builds#

Um zu testen, ob der Build erfolgreich war, verwendet man dieses Kommando:

$ flatpak-builder --user --install --force-clean build-dir org.flatpak.Hello.yml
$ flatpak run org.flatpak.Hello

Im zweiten Durchlauf haben wir --force-clean durchgereicht, was bedeutet, dass das zuvor erzeugte build-dir-Verzeichnis gelöscht wurde, bevor der neue Build angestoßen wird.

Die erste Anwendung wurde damit erfolgreich erstellt.

6. Die Anwendung in ein Repository legen#

If you want to share the application you can put it in a repository. This is done by passing the --repo argument to flatpak-builder:

$ flatpak-builder --repo=repo --force-clean build-dir org.flatpak.Hello.yml

Dies stößt den Build-Prozess erneut an und exportiert das Resultat am Ende in ein lokales Verzeichnis namens repo. Zu beachten ist, dass flatpak-builder einen Cache behält von vorherigen Builds im flatpak-builder-Unterverzeichnis, somit kann sehr schnell ein zweiter Build, wie dieser, erzeugt werden.

In order for your application to show up in application stores while testing with a local repository, you might have to run flatpak build-update-repo repo.

For more information how to publish to application stores see MetaInfo files.

7. Installieren der Anwendung#

Nun ist alles so weit vorbereitet, um das Repository, das eben erstellt wurde, hinzuzufügen und die Anwendung zu installieren. Dies wird mit zwei Kommandos durchgeführt:

$ flatpak --user remote-add --no-gpg-verify tutorial-repo repo
$ flatpak --user install tutorial-repo org.flatpak.Hello

Das erste Kommando fügt das Repository hinzu, das im vorherigen Schritt erzeugt wurde. Das zweite Kommando installiert die Anwendung vom Repository.

Beide Kommandos verwenden das --user-Argument, damit wird das Repository für den jeweiligen Benutzer hinzugefügt – und nicht systemweit. Dies ist sinnvoll für Testläufe.

Hierbei ist zu beachten, dass das Repository mit --no-gpg-verify hinzugefügt wurde, da kein GPG-Schlüssel spezifiziert wurde, als die Anwendung erzeugt wurde. Dies ist gut zum Testen, aber für offizielle Repositorys sollten diese mit einem privaten GPG-Schlüssel signiert sein.

8. Starten der Anwendung#

Zum Abschluss kann die Anwendung getestet werden. Um dies durchzuführen wird folgendes Kommando eingegeben:

$ flatpak run org.flatpak.Hello

Das startet die Anwendung und gibt den Text ‚Hello world, from a sandbox‘ aus.