Einfache Frage: Wie kann ich Dateien aus einem AppImage extrahieren?
GUI, CLI, es ist egal, solange es die Arbeit erledigt.
Ich verwende openSUSE Tumbleweed, falls das wichtig ist
Antwort1
Erste, prüfen Sie, ob Ihre AppImage-Datei die neueste Version ihres internen Formats verwendet:
/path/to/your.AppImage --appimage-help
Wenn Sie in der Ausgabe die folgende Zeile sehen:
--appimage-extract Extract content from embedded filesystem image
Sie können selbst entscheiden, wie Sie weiter vorgehen. In diesem Fall haben Sie eine (neuere)Typ 2AppImage-Format vor Ihnen. (Der „Pfad“-Teil des Befehls kann relativ oder absolut sein.)
ZweiteWenn der erste Befehl nicht funktioniert hat, können Sie ein Hilfstool verwenden. Sie benötigen hierfür allerdings sudo/root-Rechte:herunterladenappimagetool
(das natürlich als AppImage verfügbar ist). Machen Sie es ausführbar und führen Sie Folgendes aus:
/path/to/appimagetool-x86_64.AppImage --list /path/to/your.AppImage
Dies sollte Ihnen eine Liste aller Dateien und ihrer (relativen) Pfade geben, die eingebettet sind inIhr.AppImage. ExtrahierenIhr.AppImagein ein Verzeichnis mit dem Namen und dem Speicherort/Pfad/zu/somedir, laufen
mkdir /path/to/somedir
/path/to/appimagetool-x86_64.AppImage /path/to/your.AppImage /path/to/somedir
Dritte, Sie können AppImages (Typ 1 und Typ 2) auch ohne das Hilfstool mounten:
Typ 1:
mkdir mountpoint sudo mount -o loop my.AppImage mountpoint/ # You can now inspect the contents # You can now also copy the contents to a writable location of your hard disk sudo umount mountpoint/ # Do not forget the umount step! # If you do forget it, your system may exhibit unwanted behavior.
Typ 2:
mkdir mountpoint my.AppImage --appimage-offset 123456 # This is just an example output sudo mount my.AppImage mountpoint/ -o offset=123456 # you can now inspect the contents sudo umount mountpoint/ # Do not forget the umount step! # If you do forget it, your system may exhibit unwanted behavior.
Hinweis für die „Paranoiden“:Wenn Sie dem AppImage nicht vertrauen möchten, ist die dritte Methode vorzuziehen. Denn das Ausführen von the.AppImage --appimage-extract
oder the.AppImage --appimage-mount
oder (für AppImages vom Typ 2) the.AppImage --appimage-offset
bedeutet, dass Sie tatsächlich ein AppImage ausführen (allerdings nicht dessen Inhalt).
Aktualisieren:
Um die Frage von @jayarjo im Kommentar unten zu beantworten (wie verpacke ich das AppImage nach Änderungen neu?):
Sie könnenappimagetoolnicht nur, um ein vorhandenes AppImage in ein AppDir zu extrahieren. Sie können es auch verwenden, um das AppDir (möglicherweise nach einigen Änderungen) wieder in ein (modifiziertes) AppImage umzupacken.
Lauf einfach
appimagetool -v /path/to/AppDir
Beobachten Sie die Ausgabe des Befehls (ausführlich gemacht durch
-v
) für den Speicherort und den Namen des neu erstellten AppImage. Das ist alles.
Antwort2
Erweiterung in .7z umbenennen
$ mv file.AppImage file.7z
mit Feilenrolle ausziehen
$ file-roller --extract-here file.7z
Auf Linux Mint getestet.
Antwort3
Umbenennen kann ich nur mit Rechtsklick, Beispiel:
komprimieren-pdf-v0.1-x86_64.AppImage
Zu:
komprimieren-pdf-v0.1-x86_64.zip
dann rechtsklick
"Hier entpacken"
und Arbeiten
Extrahieren Sie alle darin enthaltenen Dateien in einem Ordner
Antwort4
Basierend auf der Antwort hier habe ich dieses einfache Bash-Skript erstellt. Aber ich habe noch nie ein AppImage gefunden, das ich mit einem Loop-Gerät extrahieren konnte. EDIT: Habe gerade gemacht: „wxHexEditor“
Hier:
#!/bin/bash
APP="$2"
UNPK="$(echo $APP | sed 's/\.AppImage//')"
case "$1" in
-a)
chmod +x $APP;
./$APP --appimage-extract
mv squashfs-root $UNPK
;;
-b)
mkdir -p /tmp/$UNPK
sudo mount -o loop $APP /tmp/$UNPK &>/dev/null
mkdir -p ~/Desktop/$UNPK
cp -R /tmp/$UNPK/* ~/Desktop/$UNPK &>/dev/null
sudo umount /tmp/$UNPK
;;
*)
echo
echo " Usage: appunpack [option] AppImageFile"
echo
echo " Options: -a Unpack using --appimage-extract"
echo " -b Unpack using a loop device"
;;
esac