AppImages: Portable Software für Linux

Die traditionelle Paketverwaltung unter Linux hat fundamentale Vorzüge gegenüber dem Software-Wildwuchs à la Windows. Es ist aber andererseits auch unflexibel und wartungsaufwendig. Appimages sind eine willkommene Ergänzung.

Containerformate haben Konjunktur. Sie bieten Distributions-unabhängige Software, umgehen das Problem der Paketabhängigkeiten und erlauben den portablen Einsatz der Software. Gegenüber den technisch aufwendigeren Techniken Snap, Flatpak und Docker haben hier die Appimages einen entscheidenden Vorteil: Auf dem Zielrechner ist keinerlei Werkzeug erforderlich – keine Laufzeitumgebung, kein Paketwerkzeug. Die Images werden einfach heruntergeladen, ausführbar geschaltet und – laufen. Da Appimages keine Sandbox-Isolation (wie Docker & Co.) gegenüber dem übrigen System gewährleisten, wird der Einsatz allerdings zur Vertrauensfrage – ganz ähnlich zu Windows. Wer sich an die vertrauenswürdigen Quellen hält, hat jedoch eine überaus komfortable Technik an der Hand, seine Software-Ausstattung zu ergänzen oder gezielt auf den portablen Einsatz auszurichten.

Das Appimage-Format

Appimages gehen auf das schon 2004 geschaffene Format „klik“ zurück. Über dessen Folgeprojekt „Portable Linux Apps“ erhielt die Weiterentwicklung 2013 die Bezeichnung „Appimage“. Es gilt das Prinzip „1 app = 1 file“. Typischerweise hat diese eine Containerdatei die Endung .appimage oder nur .app. Dies dient nur der Erkennung für den Nutzer, technisch ist die Endung bedeutungslos und kann nach dem Download auch gelöscht werden. Die Containerdatei enthält neben dem eigentlichen Programm alle notwendigen Komponenten und Bibliotheken. Beim Start durch Doppelklick mountet ein Wrapper-Script zur Laufzeit alle Komponenten in das Dateisystem und lädt dann das eigentliche Programm. Typischerweise erscheint die Software in Taskmanagern dann zweimal – eine Instanz für das eigentliche Programm, die zweite für den Start-Wrapper. Der gesamte Ladevorgang ist komplexer als bei einer nativ installierten Software, was sich aber auf modernen Rechnern allenfalls messbar, aber nicht spürbar auswirkt. Der autarke Container benötigt kein besonderes Ausgangverzeichnis, sondern ist an beliebiger Stelle, auch auf externen USB-Medien lauffähig.

Appimages in der Praxis

Die wichtigsten und vertrauenswürdigen Quellen für Appimages sind folgende: https://github.com/AppImage/AppImageKit/wiki/AppImages: Diese Liste wurde zwar inzwischen durch https://appimage.github.io/apps/ ersetzt, ist aber einfacher und übersichtlicher als sein Nachfolger. Hier finden Sie namhafte Software wie Avidemux, Etcher, Gimp, Kdenlive, Krita, Openshot, Qupzilla, Scribus oder Xnview. Zum Download führt jeweils der Link „Releases“ neben dem Produktnamen und nachfolgend der Download-Link mit der Extension „.AppImage“ im Dateinamen.
https://bintray.com/probono/AppImages/ ist eine weitere große Fundgrube für Appimages unter anderem mit relativ aktuellen Browsern (Firefox, Chromium, Vivaldi) und viel Software-Prominenz wie Calibre, Clementine, Fritzing, Geany, Inkscape, Nightingale, Thunderbird, VLC, Wireshark. Nutzen Sie hier bei der jeweiligen Software den Link „Files“ und dort das Download-Angebot mit der Endung „.AppImage“. Hier lohnt es sich ferner, auf den Zeithinweis „Updated“ zu achten, um das möglichst aktuelle Image auszuwählen.
Ergänzend kann das kleinere Angebot auf https://www.linux-appimages.org/ besucht werden. Es führt aber aktuell nur in Einzelfällen über den Umfang der beiden bereits genannten Quellen hinaus.
Nach dem Download sollten Sie bei aller Portabilität des Pakets dieses in ein Verzeichnis verschieben, wo es dann voraussichtlich verbleiben wird. Das dient erstens der Ordnung und ist zweitens sogar notwendig, wenn Sie die spätere Option zur Systemintegration wahrnehmen wollen (siehe unten). Danach schalten Sie die Imagedatei ausführbar, entweder mit

chmod +x [name]

im Terminal oder über „Eigenschaften -> Zugriffsrechte“ im Dateimanager. Ab sofort ist die Software einsatzbereit. Beim ersten Start erscheint häufig die Abfrage „Would you like to integrate…“. Wenn Sie mit „Yes“ zustimmen, schreibt das Programm unter /usr/share/app-install/desktop seine .desktop-Datei. Dies führt dazu, dass es künftig im Startmenü oder Such-Dash des Systems auftaucht, außerdem im „Öffnen mit“-Dialog des Dateimanager, was die Verknüpfung mit Dateitypen erlaubt. Kurz: Das portable Programm ist damit praktisch wie eine echt installierte Software in das System integriert.
Beachten Sie ferner, dass die Image-Software selbst zwar „readonly“ ist, aber durchaus anpassungsfähig, da sie die Einstellungen im Home-Verzeichnis des Benutzers unter ~/.config/[Software], zum Teil auch direkt unter ~/.[Software] speichert. Das gewährleistet eine weitestgehend normale Nutzung. Ein Chromium-Appimage kann also durchaus Designs integrieren, eine Software wie Openshot kann wie gewohnt individuell eingerichtet werden.
Die „De-Installation“ ist natürlich ebenso einfach: Es genügt, die Appimage-Datei auf Dateiebene manuell zu löschen, gegebenenfalls auch noch den Konfigurationsordner unter ~/.config.
Da Appimages nicht update-fähig sind, sind sicherheitskritische Programme wie Browser und Mail nicht unbedingt erste Kandidaten. Einschlägig sind hingegen Tools wie Avidemux, Etcher, Krita, Openshot, Xnview, die man immer wieder mal und eventuell auf verschiedenen Linux-Systemen benötigt.

Theoretisch sind Appimages Update-fähig: Auf https://github.com/AppImage/AppImageUpdate/releases gibt es das Tool „AppImageUpdate“ – bei Redaktionsschluss AppImageUpdate-233-628bef8-x86_64.AppImage. Das Tool ist noch Beta und seinerseits ein Appimage. Nach dem Aufruf navigiert man im Dialog „Please choose an AppImage for updating“ zum fraglichen Appimage. Nach Doppelklick sucht das Tool nach Versions- und URL- Informationen im Image. Gibt es eine aktuellere Version, dann verbindet sich das Update-Tool mit der Seite des Entwicklers und lädt diese Version. Dabei sorgt eine Delta-Analyse für minimalen Download-Aufwand. Die ältere Version bleibt bestehen, kann aber natürlich gelöscht werden, wenn die neue Version problemlos läuft. Eine noch bequemere Integration in die Systemshell, die für Appimages ein Kontextmenü „Update“ anzeigt, ist noch nicht in allen Distributionen umgesetzt.

Unterm Strich ist AppImageUpdate eine sehr vielversprechende Technik, portable Linux-Programme aktuell zu halten. Leider haben viele Appimage-Entwickler die Update-Technik noch nicht auf dem Radar. Fehlen die nötigen Infos im Container, dann zeigt AppImageUpdate eine Fehlermeldung und den Rat, man solle den Entwickler informieren.

Appimages: Vorteile und Nachteile

+ universelles, Distributions-unabhängiges Format: Appimages laufen auf den allermeisten Linux-Distributionen

+ keine Installation, keine Paketabhängigkeiten

+ keine root-Rechte erforderlich, da keine Systemdateien berührt werden

+ eine Software = eine einzige Datei: läuft portabel aus jedem Ordner – auch von USB oder DVD

+ Appimages erlauben die Verwendung verschiedener Versionen nebeneinander

+ simple „De-Installation“ durch Löschen der Appimage-Datei

+ individuelle Einstellungen durch Konfigurationsdateien unter ~/.config/[Software] oder ~/.[Software]

+ optionale Systemintegration (Menü, „Öffnen mit“-Dialog) durch .desktop-Datei

– Appimages sind readonly. Für Updates ist eine besondere Technik erforderlich (siehe oben das Tool „AppImageUpdate“).

– Appimage bieten keine Sandbox-Isolation

– Appimages stammen ohne Drittkontrolle direkt vom Software-Entwickler

Der Clementine-Player ist nur als Appimage präsent, aber dennoch über die Gnome-Suche erreichbar. Dafür sorgt die beim Erststart erstellte .desktop-Datei.

Zurück zur Linux-Übersichtsseite…