Zum Inhalt springen

Flatpak/Anwendung

Aus Foxwiki

Anwendung

Kommandozeilen-Referenz

[:Gnome-Software:Gnome Software] und [:Plasma_Discover: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

Suche eines Flatpak-Paketes

Zur Suche eines Flatpak-Paketes im Terminal ist mindestens ein registriertes Remote notwendig

  • Die Suche erfolgt nach beliebigen Zeichenketten auch ohne Großschreibung
sudo flatpak search libreoffice

Verfügbare Zusatzoptionen von Programmpaketen können untersucht werden, indem man nach [#Zusatzpakete Zusatzpaketen] sucht

Installation eines Flatpak-Paketes

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

sudo flatpak install Organisationsart.Entwickler.Programmname
  1. Beispiel

sudo flatpak install flathub org.libreoffice.LibreOffice

Installation auf Benutzerebene

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, also den Befehl mit Nutzerrechten und __nicht__ mit Root-Rechten auszuführen

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 Vorlage(Tasten, tab)-Taste gedrückt wird

$ sudo flatpak install flathub org.libreoffice.LibreOffice[mark]<TAB>[/mark]
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 Vorlage(Tasten, tab) schickt flatpak die Anforderung nach der Paketliste an das Repository und kommt mit der Liste zurück

  • Wenn also nach Drücken von Vorlage(Tasten, 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 Dateien mit der Endung .flatpakref an, 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

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

Liste installierter Programme

flatpak list

Beispiel

flatpak list
Name Application ID Version Zweig Installation

LibreOffice org.libreoffice.LibreOffice 7.4.4.2 stable system

Suche von Flatpak Paketen

Auf den eingerichteten Flatpak-Verzeichnissen (Remotes) kann nach verfügbaren Programmen gesucht werden mit

flatpak search [STRING]

beispielsweise

flatpak search office
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 auf Systemebene installierten Programme versucht, sofern eine aktuellere Version auf den Remotes vorliegt

Deinstallation

sudo flatpak uninstall [PAKET]

Oder lokal

flatpak uninstall --user [PAKET]

Gibt man zusätzlich die Option `--delete-data` mit an

sudo flatpak uninstall --delete-data [PAKET]

werden zusätzlich die spezifischen Daten des Benutzers unterhalb von ~/.var/app/ für das deinstallierte Paket entfernt

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 mitgeliefert
  • /var/lib/flatpak/app/[PAKET]/current/active/export/share/applications/[PAKET].desktop
  • bzw
/var/lib/flatpak/exports/share/applications/[PAKET].desktop ([:ln/#Symbolische-Verknuepfungen: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 gestartet werden, das Kommando 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

Weitere Programme im Flatpak aufrufen

Weitere Programme, die ebenfalls mit dem Flatpak mitgeliefert wurden und einzeln aufgerufen werden können, befinden sich dann im Verzeichnis /var/lib/flatpak/app/[PAKET]/current/active/files/bin/

  • Der Aufruf solcher Programme innerhalb der Flatpak-Applikations-Umgebung erfolgt mit der --command-Option
flatpak run --command=enblend net.sourceforge.Hugin

(Beispiel hier aus dem Programmpaket [:Hugin/#enblend-Flatpak:])

Ein direkter Link auf solche Programme 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 vermieden werden, da diese nach dem nächsten (ggfs
  • automatisierten) Update wieder überschrieben werden

Debugging auf Konsole

Mit den Befehlen oben können Konsolenausgaben innerhalb des Flatpaks zur weiteren Analyse dargestellt werden, die ggfs

  • beim normalen Aufruf mit flatpak run nicht auftreten
  • So wird im Beispiel unten die Shell [:Bash:] aufgerufen, auf der innerhalb des Flatpak-Containers besondere [:Umgebungsvariable:Umgebungsvariablen] oder spezielle Optionen des Programms gesetzt werden können
user@linux:~$ flatpak run --command=bash org.domain.application
user@linux:~$ # Auch wenn nichts passiert zu sein scheint, befinden wir uns nun in einer Shell im Flatpak-Container der Applikation!
user@linux:~$ VARIABLE=debug application --debug # Beispielaufruf mit Umgebungsvariable VARIABLE und Option --debug
user@linux:~$ ^D # Wir verlassen die Shell im Container wieder (Strg-D)
exit
user@linux:~$
Alternative Aufrufe

Für regelmäßige Terminal-Benutzer ist die 'flatpak run'-Syntax nicht gerade eingängig

  • Verschiedene Optionen können Abhilfe schaffen
1. 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: \\
  1. einzutragen in die ~/.bashrc oder ~/.bash_aliases
alias loffice='flatpak run org.libreoffice.LibreOffice'
1. 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: \\
#!/bin/sh
flatpak run --command=libreoffice org.libreoffice.LibreOffice "$@"

Dieses Skript 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

Dokumentation

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-Pakete kann kontrolliert werden 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

Flatpak Sicherheit

Flatpak-Anwendungen laufen in einer sogenannten [wikipedia:Sandbox:Sandbox] und haben so nur Zugriff auf Ressourcen, die die jeweiligen Anwendungen unbedingt brauchen

  • So hat ein Browser wie Firefox als Flatpak-Applikation in der Grundeinstellung nur Zugriff auf die persönlichen Ordner - Daten auf einer eingehängten Datenpartition löschen oder verschlüsseln wird von Flatpak verhindert

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 [: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

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 dafür auf der Blacklist und können nicht verwendet werden

  • /lib, /lib32, /lib64
  • /bin, /sbin
  • /usr, /var
  • /boot, /etc, /dev, /tmp, /app
  • /run (hingegen erlaubt: /run/media), /proc, /sys
  • /root

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

Grafische Zugriffsverwaltung

Mit Flatseal können Rechte gezielt für einzelne Flatpak-Anwendungen konfiguriert werden

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 dezentrale Arbeitsweise 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

Flatpak installiert alle Daten / Dateien unkomprimiert auf dem Laufwerk, snaps werden stets komprimiert in einem [:Squashfs:] Dateisystem gespeichert

  • Daher benötigten Flatpaks unter Umständen (deutlich) mehr Speicherplatz als snaps


Problembehebung

No remote refs found for flathub

Mit dem folgenden Befehl wird das Repository hinzugefügt

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