Skip to content
TheAssassin edited this page Jun 4, 2017 · 46 revisions

AppImages require FUSE to run. Filesystem in Userspace (FUSE) is a system that lets non-root users mount filesystems.

Install FUSE

Many distributions have a working FUSE setup out-of-the-box. However if it is not working for you, you may need to install and configure FUSE manually.

For example, on Ubuntu:

sudo apt-get install fuse
sudo modprobe fuse
user="$(whoami)"
sudo usermod -a -G fuse $user

For example, on openSUSE:

sudo zypper install fuse

As of May 2017, it is necessary on the Tumbleweed (at least on the Live ISO) to also run

chmod a+x /usr/bin/fusermount
chown root /usr/bin/fusermount
chmod u+s /usr/bin/fusermount

Quite possibly this is a Tumbleweed bug.

For example, on CentOS/RHEL:

yum --enablerepo=epel -y install fuse-sshfs # install from EPEL
user="$(whoami)"
usermod -a -G fuse "$user" 

For example, on Armbian 64-bit systems (e.g., for the Pine64) you need to install 32-bit libfuse2 in order to run 32-bit AppImages such as the MuseScore one:

sudo apt install libfuse2:armhf

Fallback

If you don't want to install FUSE, you can either mount or extract the AppImage.

To mount the AppImage and run the application, simply run

sudo mount -o loop Some.AppImage /mnt
/mnt/AppRun

If that does not work, you might have an experimental type 2 AppImage. These can directly be extracted. Run the AppImage with --appimage-extract to extract the contents of the AppImage.

Docker

When running an AppImage from a Docker container you will get the following error:

fuse: failed to open /dev/fuse: Operation not permitted
Could not mount AppImage
Please see https://github.com/probonopd/AppImageKit/wiki/FUSE

You'll often hear "oh, just add these arguments to docker run --cap-add SYS_ADMIN --cap-add MKNOD --device /dev/fuse:mrw and it'll work", but that is totally insecure and not recommended, as it bypasses security restrictions which have been implemented for very good reasons.

Instead, just extract the AppImage in your build script:

[...]
./appimagetool-*.AppImage --appimage-extract
# AppImage contents have been extracted to a directory called squashfs-root, which might be changed in the 
squashfs-root/AppRun <any argument that you'd normally pass directly to appimagetool-*.AppImage>
# clean up a bit
rm -rf squashfs-root/
[...]

If extracting does not work (with the same error message as above), it means you have a really outdated copy of appimagetool. In this case, please go to our release page and download a newer release.

If you want to still use the AppImage directly if you're not in a container (e.g. on your local machine), you can combine this with some detection code that attempts to find out if you're in a container or not.