Skip to content
Search

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

Running

Temporary extract-and-run without FUSE

When FUSE is not available, extract to a temporary directory and run instead of mounting.

./App.AppImage --appimage-extract-and-run
# 또는 / or
APPIMAGE_EXTRACT_AND_RUN=1 ./App.AppImage

Extracting the contents only

./App.AppImage --appimage-extract   # squashfs-root/ 디렉터리로 추출

AppImageUpdate

Python packaging

Troubleshooting

Including multiple executables

Failed to load libfuse.so.2

dlopen(): error loading 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)
./App.AppImage --appimage-extract-and-run
Fix 2 — install FUSE (libfuse2)
sudo apt install libfuse2
On Ubuntu 22.04+/24.04, the package name is libfuse2 or libfuse2t64. 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

./App.AppImage --appimage-extract-and-run --no-sandbox

: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 dpkg -i App.deb

: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

Missing X server or <code>$DISPLAY</code> ... The platform failed to initialize.

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.

echo "DISPLAY=$DISPLAY WAYLAND=$WAYLAND_DISPLAY SESSION=$XDG_SESSION_TYPE SSH=$SSH_CONNECTION"
Case 1 — Wayland session (Ubuntu default, most common)
Electron fell back to X11 and failed. Launch it with Ozone Wayland.
./App.AppImage --appimage-extract-and-run --no-sandbox --ozone-platform-hint=auto
Case 2 — SSH remote connection
To show the GUI on the local screen, reconnect with X11 forwarding.
ssh -Y user@host
./App.AppImage --appimage-extract-and-run --no-sandbox --disable-gpu
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

Favorite site

author Zer0 sitemap