ubuntuusers.de

Du betrachtest eine alte Revision dieser Wikiseite.

Flatpak

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:


Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

Flatpak/flatpak-logo.png Flatpak ist ein distributionsunabhängiges Paketierungsformat, das - ähnlich wie snap oder AppImage - zur Installation eines Programms alle notwendigen Software-Abhängigkeiten in den angepassten Versionen in einer Datei im spezifizierten Flatpak-Format mitbringt. Das hat den Vorteil, dass eine neue Version einer Applikation nicht mehr von den Paket-Betreuern für alle gefragten Distributionen und unterstützten Distributions-Versionen angepasst, getestet und in die distributionsabhängige Paketverwaltung zur Verfügung gestellt werden muss. Gerade für Applikationen mit kleinen Entwickler-Teams ist dies ein wichtiger Vorteil zur Verbreitung ihrer Software.

Zum Grundkonzept 🇩🇪 von Flatpak gehört, dass jede Applikation eine Laufzeitumgebung ("Runtime" im Flatpak-Kontext) benötigt. In dieser Runtime stehen alle benötigten Binaries, Bibliotheken, Konfigurationsdateien und sonstige Dateien zum Betrieb zur Verfügung, die mit Flatpak in ein Verzeichnis (normalerweise ein Unterverzeichnis von /var/lib/flatpak/app/) installiert wurden und durch den flatpak-Prozess isoliert betrieben werden. Eine Liste der Flatpak-Laufzeitumgebungen ist in der Dokumentation 🇬🇧 zu finden. Laufzeitumgebungen gibt es z.B. für Gnome und KDE, die die notwendigen Bibliotheken der Desktop-Umgebung (DE) beinhalten und entsprechend umfangreich sind. Mehrere Flatpak-Applikationen können sich hier dieselbe Laufzeitumgebung teilen, so fern die Applikationen die gleiche Version der Umgebung nutzen. Fehlt eine Laufzeitumgebung, wird diese automatisch mitinstalliert. Es können auch mehrere Laufzeitumgebungen in verschiedenen Version parallel installiert sein.

Flatpak-Pakete können als Paket-Dateien geladen und installiert werden; wesentlich komfortabler ist jedoch die Konfiguration von sog. Remotes, also Paket-verzeichnissen, die Suchen, automatische Installationen und Aktualisierungen der Programm-Paketen und insbesondere ihrer Abhängigkeiten und Laufzeitumgebungen ermöglichen. Es gibt verschiedene solche Remotes und es können auch mehrere parallel eingerichtet sein:

Installation der Flatpak-Umgebung

aus den APT-Paketquellen

Flatpak ist seit Ubuntu 16.10 in den offiziellen Paketquellen enthalten[1]:

  • flatpak (universe)

Befehl zum Installieren der Pakete:

sudo apt-get install flatpak 

Oder mit apturl installieren, Link: apt://flatpak

Registrierung des Flatpak-Verzeichnisses Flathub

flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo 
flatpak remotes 

gibt die eingerichteten Remotes aus.

in Gnome Software (für Gnome)

Flatpak kann auch mit Plugins in Gnome Software, der Softwareverwaltungs-Applikationen des Desktops integriert werden. Damit werden auch Flatpak Applikationen automatisch verwaltet und aktualisiert.

  • gnome-software-plugin-flatpak (universe)

Befehl zum Installieren der Pakete:

sudo apt-get install gnome-software-plugin-flatpak 

Oder mit apturl installieren, Link: apt://gnome-software-plugin-flatpak

Registrierung des Flatpak-Verzeichnisses Flathub im Terminal

flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo 

Ausgabe der eingerichteten Remotes:

flatpak remotes 

In Gnome Software können dann gleichberechtigt APT-Anwendungen und Flatpak-Anwendungen gesucht werden.

in Plasma Discover (für KDE)

Auch für die Software-Verwaltung in KDE, Plasma Discover, existiert ein Plugin zur Darstellung und Aktualisierung von Flatpak Paketen:

  • plasma-discover-backend-flatpak (universe)

Befehl zum Installieren der Pakete:

sudo apt-get install plasma-discover-backend-flatpak 

Oder mit apturl installieren, Link: apt://plasma-discover-backend-flatpak

Registrierung des Flatpak-Verzeichnisses Flathub in Discover

In Plasma Discover können Remotes eingerichtet werden über

  • Registerkarte 'Einstellungen' öffnen (unten links)

  • Im Hauptfenster in der Titelzeile 'Flatpak' auf + Paketquelle hinzufügen klicken

  • im erscheinenden Popup-Fenster die URI:

https://flathub.org/repo/flathub.flatpakrepo

eintragen,

  • Mit '+ Hinzufügen' bestätigen.

In Discover kann gleich nach neuen Anwendungen gesucht werden. Flatpak Pakete erscheinen gleichberechtigt in der Ergebnisliste, der Pakettyp wird bei Flatpaks oben rechts der Applikations-Anzeige eingeblendet, bei mehreren Quellen kann die entsprechende zur Installation ausgewählt werden - ist kein solcher Hinweis zu sehen, wird bei 'Installieren' das Apt-Paket eingespielt.

Kommandozeilen-Referenz

Gnome Software und Plasma Discover stellen Flatpak-Pakete gleichberechtigt neben den Distributionspaketen dar, das Installations-Format wird hier über die angebotene Quelle ausgewählt. Auf der Kommandozeile hingegen können noch einige Optionen bei der Installation berücksichtigt werden.

Hinweis:

Flatpak bezeichnet eine Anwendung nicht mit dem Programmnamen, sondern um Verwechslungen zu vermeiden mit dem sog. Identifikator-Tripel. So ist bspw. der Paketname von LibreOffice org.libreoffice.LibreOffice und adressiert eindeutig 'Organisationsart.Entwickler.Programmname'. Es bietet sich hier an, lange Paket-Namen mit der Tab ⇆ -Taste zu vervollständigen ("tabben").

Installation eines Flatpak-Paketes

Mit registriertem Flatpak-Verzeichnis/Remote wird ein Paket beispielsweise wie folgt installiert:

sudo flatpak install flathub org.libreoffice.LibreOffice 

Zusatzpakete

Viele Pakete bieten außerdem Unterpakete an, die die Funktionalität der Software in bestimmten Bereichen erweitern, bspw. angepasste Sprachpakete oder Hilfe-Dokumentation. Die Auswahl dieser Pakete lässt sich schnell im Terminal ausgeben, indem mit dem Cursor am Ende des flatpak-Paketes (hier nach dem 'LibreOffice') die Tab ⇆ -Taste gedrückt wird.

$ sudo flatpak install flathub org.libreoffice.LibreOffice<TAB>
org.libreoffice.LibreOffice
org.libreoffice.LibreOffice.BundledExtension.Voikko
org.libreoffice.LibreOffice.Debug
org.libreoffice.LibreOffice.Help
org.libreoffice.LibreOffice.Locale
org.libreoffice.LibreOffice.Sources

Mit der Tab-Taste schickt flatpak die Anforderung nach der Paketliste an das Repository und kommt mit der Liste zurück. Wenn also nach Drücken von Tab ⇆ nicht sofort etwas passiert, die Taste einfach nach ca. 10 Sekunden nochmal drücken.

Flatpaks ohne Remote/Flatpak-Verzeichnis installieren

Downloads von Programm-Webseiten bieten sogenannte FLATPAKREF-Dateien an mit der Endung .flatpakref, die alle für die Installation notwendigen Informationen und den Verweis auf eine Download-Quelle (oftmals flathub.org) beinhalten. Dies ist notwendig für Anwendungen, die nicht von Flathub bzw. einem registrierten Remote kommen sollen. Installation über eine solche Datei erfolgt mit folgendem Befehl[2][3]:

sudo flatpak install --from FLATPAKREF 

Dabei kann FLATPAKREF eine lokale Datei oder eine URL sein. Wenn die Adresse auf .flatpakref endet, kann --from entfallen. Möchte man z.B. LibreOffice installieren, führt man folgenden Befehl aus:

sudo flatpak install --from https://flathub.org/repo/appstream/org.libreoffice.LibreOffice.flatpakref
                                                                                    # oder
wget https://flathub.org/repo/appstream/org.libreoffice.LibreOffice.flatpakref      # Download der flatpakref-Datei
sudo flatpak install org.libreoffice.LibreOffice.flatpakref 

benutzerspezifische Installation

Flatpak bietet außerdem die Möglichkeit, Programme "lokal" für nur einen Nutzer zu installieren. Dies hat den Vorteil, dass keine erhöhten Rechte (sudo) notwendig sind. Andererseits sind so installierte Programme auch nur für den Nutzer verfügbar, der sie installiert hat.

Um ein Programm lokal zu installieren, muss einfach nur --user während der Installation angegeben werden. LibreOffice lokal zu installieren sieht dann z.B. so aus:

flatpak install --user --from https://flathub.org/repo/appstream/org.libreoffice.LibreOffice.flatpakref 

Wichtig ist hier, tatsächlich kein sudo zu verwenden!

Liste installierter Programme

flatpak list 

Beispiel:

1
2
3
4
$ flatpak list
Name                            Application ID                                     Version              Zweig              Installation
...
LibreOffice                     org.libreoffice.LibreOffice                        7.4.4.2              stable             system

Suche von Flatpak Paketen

flatpak search [STRING] 

beispielsweise

flatpak search office 

1
2
3
$ flatpak search libreoffice
Name          Beschreibung                                   Application ID                       Version Zweig  Remotes
LibreOffice   The LibreOffice productivity suite             org.libreoffice.LibreOffice          7.4.4.2 stable flathub

Update

sudo flatpak update [PAKET] 

Oder lokal:

flatpak update --user [PAKET] 

Ohne Angabe eines PAKETes wird ein Update aller (systemweit) installierten Programme versucht.

Deinstallation

sudo flatpak uninstall [PAKET] 

Oder lokal:

flatpak uninstall --user [PAKET] 

Deinstallation ungenutzter Pakete

Ggf. kann man mit diesem Befehl Speicherplatz freigeben:

sudo flatpak uninstall --unused 

Vor dem Löschen wird man zur Sicherheit nochmal gefragt, ob die angezeigten Pakete tatsächlich gelöscht werden sollen.

Starten

Gängige Desktop-Umgebungen wie GNOME, KDE, LXQt, Xfce und andere sollten auch über Flatpak installierte Anwendungen automatisch erkennen und wie klassisch installierte Anwendungen anzeigen. Die entsprechenden .desktop-Dateien werden im Flatpak geliefert im Verzeichnis /var/lib/flatpak/app/[PAKET]/current/active/export/share/applications/[PAKET].desktop bzw. /var/lib/flatpak/exports/share/applications/[PAKET].desktop (Softlink) und können so auch aufgerufen werden.

Starten von Kommandozeile

Da Flatpaks in erster Linie für die Integration grafischer Programme gedacht war, stand hier der Start über die Benutzeroberfläche im Vordergrund. Flatpak-Anwendungen können bei Bedarf auch von Kommandozeile werden gestartet, das Kommdando lautet dann wie folgt:

flatpak run [PAKET] 

Auch hier gilt, dass 'PAKET' für die eindeutige Nomenklatur steht, die man über flatpak list nachsehen kann, in unserem Beispiel also:

flatpak run org.libreoffice.LibreOffice 
Alternativen

Für regelmäßige Terminal-Benutzer ist diese Syntax nicht gerade eingängig. Verschiedene Optionen können Abhilfe schaffen:

  1. Für ein einzelnes Paket können die installierten Programme mit einem erweiterten Pfad zumindest ohne das 'flatpak run' Kommando gestartet werden - auch wenn der Programm-Aufruf bleibt:

~$ export PATH="$PATH:/var/lib/flatpak/exports/bin" # einzutragen in die ~/.bashrc oder ~/.profile
~$ org.libreoffice.LibreOffice

2. Falls mehrere Flatpak-Programme genutzt werden, wird für jedes Programm ein alias eingerichtet, um es mit dem gewünschten (Kurz-)Kommando (bspw. hier:) loffice zu starten:

# einzutragen in die ~/.bashrc oder ~/.bash_aliases:
alias loffice='flatpak run org.libreoffice.LibreOffice'

3. Ein Startscript wird angelegt als Superuser im $PATH (bspw. /usr/local/bin/) mit demjenigen Namen, unter dem es in der Shell aufgerufen werden soll und folgendem Inhalt - im hiesigen Beispiel also /usr/local/bin/loffice:

1
2
#!/bin/sh
flatpak run --command=libreoffice org.libreoffice.LibreOffice "$@"

Dieses Script muss noch ausführbar gemacht werden mit

chmod a+x /usr/local/bin/loffice 

und kann dann mit loffice inkl. folgender Kommandozeilenargumente (daher das "$@") aufgerufen werden.

weitere Programme im Flatpak aufrufen

Sollten andere Kommandos von der Shell aufgerufen werden, die mit dem Flatpak mit installiert werden, kann dieses Startscript ebenfall verwendet werden, nur eben mit dem Programmnamen --command=[PROGRAMM], wobei das Programm [PROGRAMM] in der Flatpak-Installation im Verzeichnis /var/lib/flatpak/app/[PAKET]/current/active/files/bin/ vorliegen muss (und nur dort!). Ein direkter Link auf dieses Programm ist nicht zu empfehlen, da das Programm in der Flatpak-Laufzeitumgebung laufen muss. Manuelle Änderungen im gesamten Verzeichnis unter /var/lib/flatpak/app/[PAKET] sollten ebenfalls unterbleiben, da diese nach dem nächsten (u.U. automatisierten) Update wieder überschrieben werden.

Weiteres

Für weitere Möglichkeiten empfiehlt sich ein genauer Blick auf die man-Page oder die offizielle Dokumentationen auf der Flatpak-Homepage 🇩🇪.

Speicherbedarf

Den gesamten, auf der Festplatte belegten Speicherplatz aller flatpak-Dateien kann man sich mit

du -hs /var/lib/flatpak 
flatpak list --show-details 

Zeigt für jede Anwendung u.A. die installierte Größe in einer übersichtlichen Form.

Bekannte Probleme

Über Flatpak installierte Anwendungen können nur auf bestimmte Ordner zugreifen

Dies ist tatsächlich kein Bug, sondern ein (Sicherheits-) Feature.

Flatpak-Anwendungen laufen in einer sogenannten Sandbox und haben so nur Zugriff auf Ressourcen, die die jeweiligen Anwendungen unbedingt brauchen. So hat z.B. ein Browser wie Firefox als Flatpak nur Zugriff auf die persönlichen Ordner - und kann somit auch nicht z.B. auf einer eingehängten Datenpartition Daten löschen oder verschlüsseln.

Berechtigungen für Ordner hinzufügen

Hinweis:

Im Folgenden werden lediglich Berechtigungen für die Flatpak-Anwendung an sich erteilt. Der ausführende Benutzer muss darüber hinaus ebenfalls die entsprechenden Zugriffsrechte für diesen Ordner besitzen, siehe auch chmod.

Möchte man Dateien in einem anderen Ordner lesen oder speichern, kann man mit folgendem Befehl Berechtigungen hinzufügen:

sudo flatpak override --filesystem=/beliebiger/pfad name.des.programms 

Folgende Berechtigungen können gesetzt werden:

  • :ro - nur Leserechte

  • :rw - Schreib- und Leserechte (dies ist die Standardoption)

  • :create - Schreib- und Leserechte, erstellt Ordner, falls dieser nicht vorhanden ist

Beispiel:

sudo flatpak override --filesystem=/media/Daten:create org.mozilla.FirefoxNightly 
  • Folgende Pfade stehen auf der Blacklist und können nicht verwendet werden:

    • /lib

    • /lib32

    • /lib64

    • /bin

    • /sbin

    • /usr

    • /boot

    • /root

    • /tmp

    • /etc

    • /app

    • /run

    • /proc

    • /sys

    • /dev

    • /var

  • Ausnahme von Blacklist : /run/media

Erteilte Berechtigungen anzeigen

Eigens erteilte Berechtigungen kann man sich mit diesem Befehl anzeigen lassen:

flatpak override --show name.des.programms 

Erteilte Berechtigungen entfernen

Mit folgendem Befehl werden alle eigenen Berechtigungen einer Flatpak-Anwendung wieder entfernt:

sudo flatpak override --reset name.des.programms 

Unterschiede zu snap

Snap wird maßgeblich von Canonical entwickelt, Flatpak ist ein von Alexander Larsson gestartetes Communityprojekt. Die Entwickler stammen größtenteils aus dem Gnome-Projekt, Flatpak ist jedoch explizit nicht an GNOME gebunden.

Für snaps gibt es einen zentralen Server snapcraft.io 🇬🇧, eine Dezentraliät wie bei Flatpak ist nicht vorgesehen. Man kann zwar frei und kostenlos snaps via snapcraft.io zur Verfügung stellen, die Serversoftware ist aber proprietär. Flatpak dagegen ist per Design komplett dezentral. Jeder, der will, kann (und soll) einen eigenen Flatpak-Server eröffnen. Mit Flathub gibt es jedoch trotzdem eine zentrale Anlaufstelle für einen Großteil verfügbarer Flatpak-Anwendungen.

Diese Revision wurde am 23. August 2023 02:48 von dirkolus erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Paketverwaltung, System