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.