AppImage
lastmod 2026-06-23created 2020-03-0721 edits
AppImage is a Linux application packaging format that runs as a single executable without being installed into the distribution. Internally it mounts a SquashFS image with FUSE and runs it, so it may be blocked from running depending on whether the runtime environment supports FUSE and (for Electron apps) on sandbox and display settings.
Categories
- linuxdeploy
- pyappimage (python)
- Apptainer - application containers for Linux
Running
Temporary extract-and-run without FUSE
When FUSE is not available, extract to a temporary directory and run instead of mounting.
Extracting the contents only
AppImageUpdate
Python packaging
- Python – AppImageHub
- How to create an AppImage from start to finish from a Python project?
- Github - AppImage/AppImageKit - Wiki - Bundling Python apps
Troubleshooting
Including multiple executables
Failed to load libfuse.so.2
| "Caution" |
| On Ubuntu 24.04 (HP laptop), installing the fuse and libfuse2 packages caused an issue where GNOME did not show up at boot |
AppImage needs FUSE 2 to run. Without the library, mounting fails. This is not a problem with the app itself; the runtime environment simply lacks FUSE.
- Fix 1 — extract and run
- Launches right away without FUSE. (See #Temporary extract-and-run without FUSE above)
- Fix 2 — install FUSE (libfuse2)
- On Ubuntu 22.04+/24.04, the package name is
libfuse2orlibfuse2t64. After installation, it runs as is without--appimage-extract-and-run.
chrome-sandbox SUID sandbox error (Electron apps)
The SUID sandbox helper binary was found, but is not configured correctly... chrome-sandbox is owned by root and has mode 4755
This happens when Chromium's SUID sandbox helper (chrome-sandbox) is not owned by root with 4755 permissions, so it aborts. Recent Ubuntu (23.10+) restricts unprivileged user namespaces with AppArmor, so Electron falls back to the SUID sandbox, but the helper extracted to /tmp cannot have setuid permission.
| Method | Command | Sandbox | Notes |
| Quick check | | :Template:Cross | For checking that it works |
| Relax via sysctl | Run after applying the sysctl below | :Template:Tick | Changes a system-wide setting |
| Install the deb (recommended) | Run after | :Template:Tick | Suitable for distribution; root:4755 set automatically |
- Relaxing the unprivileged user namespace restriction with sysctl
# 일시 적용 / temporary
sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0
# 영구 적용 / persistent
echo 'kernel.apparmor_restrict_unprivileged_userns=0' \
| sudo tee /etc/sysctl.d/60-apparmor-namespace.conf
After that, it runs normally with the sandbox on. When installed from .deb, chrome-sandbox is set to root:4755, so it works without --no-sandbox.
Missing X server or $DISPLAY
This means the current shell is not connected to a display server (no $DISPLAY). It is not an app bug but an environment problem: there is no screen to show the GUI on. Check the environment first.
- Case 1 — Wayland session (Ubuntu default, most common)
- Electron fell back to X11 and failed. Launch it with Ozone Wayland.
- Case 2 — SSH remote connection
- To show the GUI on the local screen, reconnect with X11 forwarding.
- Case 3 — truly headless (no monitor)
- Verify only startup and rendering with a virtual display (Xvfb) and check with a screenshot.
sudo apt install -y xvfb imagemagick
xvfb-run -a --server-args="-screen 0 1100x780x24" bash -c '
./App.AppImage --appimage-extract-and-run --no-sandbox --disable-gpu &
sleep 7; import -window root /tmp/app.png; kill %1 2>/dev/null'
See also
- AppImage
- Snap
- Flatpak
- Package management system
- apt
- yum
- Application Isolation
- Firejail - application sendboxing.
Favorite site
- AppImage | Linux apps that run anywhere
- How to use AppImage on Linux (complete guide)
- Linux Package Managers Compared – AppImage vs Snap vs Flatpak
- Flatpak, SNAP, and AppImage: what is the difference between the formats?
- [Recommended] Comparison: Snap vs Flatpak vs AppImage