[[Vorlage(Getestet, jammy, bionic, focal)]] {{{#!vorlage Wissen [:Pakete installieren: Installation von Programmen] [:Terminal: Ein Terminal öffnen] [:mit Root-Rechten arbeiten:] }}} [[Inhaltsverzeichnis(2)]] [[Bild(Flatpak/flatpak-logo.png, 80, left)]] 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. = Programs & Runtimes = 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. 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 [http://docs.flatpak.org/en/latest/available-runtimes.html Dokumentation] {en} 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, sofern 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-Verzeichnisse (Remotes) == 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: * [https://flathub.org/apps Flathub] ist das derzeit wichtigste und größte Repository für Flatpak-Pakete. * tägliche Abzüge der neuesten Software (und damit möglicherweise instabil, eigentlich nur zu Testzwecken) werden auf eigenen Flatpak-Remotes von [https://wiki.gnome.org/Apps/Nightly Gnome] und [https://userbase.kde.org/Tutorials/Flatpak KDE] angeboten. Stabile Versionen dieser Anwendungen werden auf Flathub veröffentlicht. = Installation der Flatpak-Umgebung = Wer Flatpak-Pakete nutzen will, muss zuerst die Flatpak-Umgebung mit dem Installations-Programm installieren. == aus den APT-Paketquellen == Flatpak ist seit Ubuntu 16.10 in den offiziellen Paketquellen enthalten[1]: {{{#!vorlage Paketinstallation flatpak, universe }}} === Registrierung des Flatpak-Verzeichnisses Flathub === {{{#!vorlage Befehl flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo }}} {{{#!vorlage Befehl flatpak remotes }}} gibt die eingerichteten Remotes aus. == in Gnome Software (für Gnome) == Flatpak kann auch mit Plugins in [:Gnome-Software:Gnome Software], der Softwareverwaltungs-Applikationen des Desktops integriert werden. Damit werden auch Flatpak Applikationen automatisch verwaltet und aktualisiert. {{{#!vorlage Paketinstallation gnome-software-plugin-flatpak, universe }}} === Registrierung des Flatpak-Verzeichnisses Flathub im Terminal === {{{#!vorlage Befehl flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo }}} Ausgabe der eingerichteten Remotes: {{{#!vorlage Befehl 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:Plasma Discover], existiert ein Plugin zur Darstellung und Aktualisierung von Flatpak Paketen: {{{#!vorlage Paketinstallation plasma-discover-backend-flatpak, universe }}} === 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: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. {{{#!vorlage Hinweis Flatpak bezeichnet eine Anwendung nicht mit dem Programmnamen, sondern um Verwechslungen zu vermeiden mit dem sog. [https://docs.flatpak.org/de/latest/using-flatpak.html#identifiers 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 [[Vorlage(Tasten, tab)]]-Taste zu vervollständigen ("tabben"). Die Paketnamen sind Case-sensitive, damit muss auf korrekte Groß-Klein-Schreibung geachtet werden, wenn ein bestimmtes Paket verwendet werden soll. }}} == 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. {{{#!vorlage Befehl 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 installiert: {{{#!vorlage Befehl 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 [[Vorlage(Tasten, tab)]]-Taste gedrückt wird. {{{ $ sudo flatpak install flathub org.libreoffice.LibreOffice[mark][/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 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 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]: {{{#!vorlage 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: {{{#!vorlage Befehl 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: {{{#!vorlage Befehl 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 == {{{#!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 }}} == Suche von Flatpak Paketen == Auf den eingerichteten Flatpak-Verzeichnissen (Remotes) kann nach verfügbaren Programmen 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 (systemweit) installierten Programme versucht, sofern eine aktuellere Version auf den Remotes vorliegt. == 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 mitgeliefert ins 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 gestartet werden, das Kommdando lautet dann wie folgt: {{{#!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 }}} === 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: {{{#!vorlage Befehl 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. ==== 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: {{{ # einzutragen in die ~/.bashrc oder ~/.bash_aliases: alias loffice='flatpak run org.libreoffice.LibreOffice' }}} 2. 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. == Dokumentation == 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-Pakete kann kontrolliert werden 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. == 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 === {{{#!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 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: {{{#!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 }}} === Grafische Zugriffsverwaltung === Mit [https://flathub.org/apps/details/com.github.tchx84.Flatseal Flatseal] {en} können Rechte gezielt für einzelne Flatpak-Anwendungen konfiguriert werden. = 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 * [https://flathub.org/apps/details/com.github.tchx84.Flatseal Flatseal] {en} - Rechte gezielt für einzelne Flatpak-Anwendungen konfigurieren = Siehe auch = * [:AppImage:] - alternatives Format zu Flatpak * [:Snap:] - Ubuntu-eigenes Paketformat * [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