[[Vorlage(Getestet, jammy, bionic, focal)]] {{{#!vorlage Wissen [:Pakete installieren: Installation von Programmen] [:Terminal: Ein Terminal öffnen] [:mit Root-Rechten arbeiten:] }}} [[Inhaltsverzeichnis(3)]] [[Bild(flatpak-logo.png, 80, left)]] Flatpak ist eine Alternative zu dem von Canonical entwickelten [:snap:] Apps. Ziel ist ebenfalls Programme konfliktfrei zur "normalen" [:Paketverwaltung:] zu installieren, indem alle benötigten Binaries, Bibliotheken, Konfigurationsdateien und sonstige Dateien in ein Verzeichnis (normalerweise Unterverzeichnis von '''/var/lib/flatpak/app/''') gelegt werden. Eine Flatpak-Applikation ist somit ohne weiteren Anpassungen in der Regel auf sämtlichen Linux-Distributionen mit installiertem Flatpak lauffähig. Zum [https://docs.flatpak.org/de/latest/basic-concepts.html Grundkonzept] {de} von Flatpak gehört, dass jede Applikation eine Laufzeitumgebung ("Runtime" im Flatpak-Kontext) benötigt. Eine Liste der Flatpak-Laufzeitumgebungen ist in der [http://docs.flatpak.org/en/latest/available-runtimes.html Dokumentation] {en} zu finden. So gibt es z.B. Laufzeitumgebungen für Gnome und KDE, die natürlich entsprechend groß sind. Mehrere Flatpak-Applikationen können sich die selbe Laufzeitumgebung teilen, so fern die Applikationen die gleiche Version der Umgebung nutzen. Fehlt eine Laufzeitumgebung, wird diese automatisch mit installiert. Es können auch mehrere Laufzeitumgebungen in verschiedenen Version parallel installiert sein. = Installation = == aus den Paketquellen == Flatpak ist seit Ubuntu 16.10 in den offiziellen Paketquellen enthalten[1]: {{{#!vorlage Paketinstallation flatpak, universe }}} = Benutzung = Viele Anwendungen bieten ihre Downloads direkt auf ihrer Webseite im Flatpak-Format an. Eine Liste zentral verfügbarer Flatpaks findet man im Internet unter dem [https://flathub.org/apps.html Flathub-Repository] {en}, es gibt jedoch auch weitere Quellen. == Flatpaks systemweit installieren == Um die Installation zu vereinfachen, werden alle für die Installation notwendigen Informationen in eine '''.flatpakref'''-Datei geschrieben. Installation über eine solche Datei erfolgt mit folgendem Befehl[2][3]: {{{#!vorlage Befehl sudo flatpak install --from FLATPAKREF }}} Hierbei kann `FLATPAKREF` eine lokale Datei oder eine URL sein. `--from` kann außerdem entfallen, wenn `FLATPAKREF` auf '''.flatpakref''' endet. Möchte man z.B. LibreOffice installieren, führt man folgenden Befehl aus: {{{#!vorlage Befehl sudo flatpak install --from http://download.documentfoundation.org/libreoffice/flatpak/LibreOffice.flatpakref }}} Oder man lädt sich die Datei [https://download.documentfoundation.org/libreoffice/flatpak/LibreOffice.flatpakref LibreOffice.flatpakref] {dl} lokal herunter und anschließend (angenommen die Datei liegt im Download-Ordner): {{{#!vorlage Befehl sudo flatpak install --from ~/Downloads/LibreOffice.flatpakref }}} Die Datei '''LibreOffice.flatpakref''' kann danach gelöscht werden. Sofern bereits ein Flatpak-Repository bereits registriert ist (siehe [#Flatpak-Verzeichnis hier]), kann ein Paket auch wie folgt installiert werden: {{{#!vorlage Befehl sudo flatpak install [REPO] [PAKET] }}} beispielsweise {{{#!vorlage Befehl sudo flatpak install flathub org.libreoffice.LibreOffice }}} == Lokale 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: {{{#!vorlage Befehl flatpak install --user --from http://ftp.fau.de/tdf/libreoffice/flatpak/LibreOffice.flatpakref }}} Wichtig ist hier, tatsächlich kein sudo zu verwenden! == Liste installierter Programme == {{{#!vorlage Befehl flatpak list }}} Beispiel: {{{#!code console $ flatpak list Name Application ID Version Zweig Installation ... LibreOffice org.libreoffice.LibreOffice 7.4.4.2 stable system }}} {{{#!vorlage Hinweis Zu beachten ist, dass wenn im Folgenden von "PAKET" die Rede ist, nicht einfach der Programmname gemeint ist, sondern tatsächlich der Name, der bei diesem Befehl angezeigt wird. So ist der Paketname von LibreOffice (auf 64-bit Systemen) '''org.libreoffice.LibreOffice/x86_64/fresh''' oder einfach nur '''org.libreoffice.LibreOffice''', da alles nach dem / weggelassen werden kann. Es bietet sich hier an, lange Paket-Namen mit der [[Vorlage(Tasten, tab)]]-Taste zu vervollständigen ("tabben"). }}} == Suche von Flatpak Paketen == Sofern Anwendungen nicht bereits auf ihrer Webseite im Flatpak-Format angeboten werden, kann auch auf Flatpak-Verzeichnissen (Repositories) nach bestimmten Anwendungen gesucht werden. Diese Verzeichnisse bieten zum einen meist eine eigene Suche auf ihrer Webseite an: * beispielsweise [https://flathub.org/apps Flathub], das derzeit größte Repository für Flatpak-Pakete. === Flatpak-Verzeichnis === Zum anderen kann man auch Flatpak Pakete suchen. Voraussetzung dafür ist jedoch, dass ein Flatpak-Verzeichnis eingetragen ist. Das geschieht mit dem Kommando: {{{#!vorlage Befehl flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo }}} Wenn dies erfolgt ist, ggfs. neu starten, dann kann ein Paket / Substring / Programm gesucht werden mit {{{#!vorlage Befehl flatpak search [STRING] }}} beispielsweise {{{#!vorlage Befehl flatpak search office }}} {{{#!code console $ 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 == {{{#!vorlage Befehl sudo flatpak update [PAKET] }}} Oder lokal: {{{#!vorlage Befehl flatpak update --user [PAKET] }}} Ohne Angabe eines `PAKETes` wird ein Update aller installierten Programme versucht. == Deinstallation == {{{#!vorlage Befehl sudo flatpak uninstall [PAKET] }}} Oder lokal: {{{#!vorlage Befehl flatpak uninstall --user [PAKET] }}} == Deinstallation ungenutzter Pakete == Ggf. kann man mit diesem Befehl Speicherplatz freigeben: {{{#!vorlage Befehl 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 === Von Kommandozeile werden Flatpak-Anwendungen bei Bedarf so gestartet: {{{#!vorlage Befehl 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: {{{#!vorlage Befehl flatpak run org.libreoffice.LibreOffice }}} ==== Alternativen ==== Für regelmäßige Benutzer ist diese Syntax nicht gerade eingängig. Verschiedene Optionen können Abhilfe schaffen: 1. Mit einem '''[:Umgebungsvariable/typische_Anwendungsfälle/#PATH-erweitern:erweiterten Pfad]''' können die installierten Programme 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. Für jedes Flatpak-Programm wird ein '''[:alias:]''' eingerichtet, um es mit dem gewünschten (Kurz-)Kommando ''loffice'' zu starten: {{{ # einzutragen in die ~/.bashrc oder ~/.bash_aliases: alias loffice='flatpak run org.libreoffice.LibreOffice' }}} 3. Ein '''Startscript''' wird angelegt als [:Root-Rechte:Superuser] im [:Umgebungsvariable/typische_Anwendungsfälle:$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''': {{{#!code sh #!/bin/sh flatpak run --command=libreoffice org.libreoffice.LibreOffice "$@" }}} Dieses Script muss noch ausführbar gemacht werden mit {{{#!vorlage Befehl 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 [http://docs.flatpak.org/de/latest/ Flatpak-Homepage] {de}. == Speicherbedarf == Den gesamten, auf der Festplatte belegten Speicherplatz aller flatpak-Dateien kann man sich mit {{{#!vorlage Befehl du -hs /var/lib/flatpak }}} {{{#!vorlage Befehl 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 [wikipedia:Sandbox: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 === {{{#!vorlage 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 [:Rechte/#Zugriffsrecht: 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: {{{#!vorlage Befehl 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:''' {{{#!vorlage Befehl 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: {{{#!vorlage Befehl flatpak override --show name.des.programms }}} === Erteilte Berechtigungen entfernen === Mit folgendem Befehl werden alle eigenen Berechtigungen einer Flatpak-Anwendung wieder entfernt: {{{#!vorlage Befehl sudo flatpak override --reset name.des.programms }}} = Unterschiede zu snap == [: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 [https://snapcraft.io snapcraft.io] {en}, 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. = Links = * [http://flatpak.org/] {en} - offizielle Homepage * [http://docs.flatpak.org/en/latest/] {en} - Dokumentation * [http://docs.flatpak.org/en/latest/sandbox-permissions-reference.html] {en} - Dokumentation - Sandbox Berechtigungen * [:AppImage:] - alternatives Format zu Flatpak und snap * [https://flathub.org/apps/details/com.github.tchx84.Flatseal Flatseal] {en} - Rechte gezielt für einzelne Flatpak-Anwendungen konfigurieren * [https://curius.de/2021/09/flatpak-snap-vs-paketverwaltung-alles-was-dazu-gesagt-werden-muss/ flatpak/snap - Paketverwaltung] {de} - Vergleich der Formate, Vor- und Nachteile # tag: System, Paketverwaltung