5
2
Simple question, how can I extract files from an AppImage?
GUI, CLI, it doesn't matter, as long as it gets the job done.
I'm using openSUSE Tumbleweed if it matters
5
2
Simple question, how can I extract files from an AppImage?
GUI, CLI, it doesn't matter, as long as it gets the job done.
I'm using openSUSE Tumbleweed if it matters
2
First, look if your AppImage file is using the newest version of its internal format:
/path/to/your.AppImage --appimage-help
If you see the following line in the output:
--appimage-extract Extract content from embedded filesystem image
you can conclude yourself how to proceed. In this case you have a (newer) type 2 AppImage format in front of you. (The 'path' part of the command may be relative or absolute.)
Second, if the first command didn't work, you can use a helper tool. However, you need sudo/root privileges for this: download appimagetool
(which off course is available as an AppImage). Make it executable and run:
/path/to/appimagetool-x86_64.AppImage --list /path/to/your.AppImage
This should give you a list of all files and their (relative) paths embedded in your.AppImage. To extract your.AppImage into a directory named and located at /path/to/somedir , run
mkdir /path/to/somedir
/path/to/appimagetool-x86_64.AppImage /path/to/your.AppImage /path/to/somedir
Third, you can mount AppImages (type 1 as well as type 2) without the helper tool too:
Type 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.
Type 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.
Hint for the 'paranoid': If you do not want to trust the AppImage, the third method is preferable. Because running (for type 2 AppImages) the.AppImage --appimage-extract
or the.AppImage --appimage-mount
or the.AppImage --appimage-offset
means you are actually executing an AppImage (though not its content).
To answer the question of @jayarjo in the comment below (how to re-package the AppImage after modifications?):
You can use appimagetool not just to extract an existing AppImage into an AppDir. You can use it to also re-package the AppDir (possibly after some changes) back into a (modified) AppImage.
Just run
appimagetool -v /path/to/AppDir
Watch output of command (made verbose by -v
) for the location and name of the newly created AppImage. That's it.
Do you know how to pack it back? Suppose I've extracted it, altered some scripts and now want to create an AppImage out of it. – jayarjo – 2019-05-19T06:56:48.720
1@jayarjo: You can use appimagetool not just to extract an existing AppImage into an AppDir. You can use it to also re-package the AppDir (possibly after some changes) back into a (modified) AppImage: "appimagetool -v /path/to/AppDir"
. Watch output of command (made verbose by -v
) for location of newly created AppImage. That's it. – Kurt Pfeifle – 2019-05-19T11:10:30.217
0
The --appimage-extract
might not work sometimes:
./your.AppImage --appimage-extract
However, mount
does
mkdir /tmp/mountpoint
sudo mount -o loop your.AppImage /tmp/mountpoint
0
Based on the answer here, I've create this simple bash script. But I've never encounter an AppImage that I could extract with a loop device. EDIT: Just did: "wxHexEditor"
Here:
#!/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
2https://github.com/AppImage/AppImageKit/wiki/Extracting-AppImages – Arkadiusz Drabczyk – 2018-03-08T13:43:38.513
@Sekhemty: Did you even see the answer provided below? – Kurt Pfeifle – 2019-05-19T11:15:37.003