AppImage
AppImage는 배포판에 설치하지 않고 단일 실행 파일로 동작하는 Linux 애플리케이션 패키징 포맷이다. 내부적으로 SquashFS 이미지를 FUSE로 마운트해 실행하므로, 실행 환경의 FUSE 지원 여부 및 (Electron 앱의 경우) 샌드박스·디스플레이 설정에 따라 실행이 막히는 경우가 있다.
Categories
- linuxdeploy
- pyappimage (python)
- Apptainer - 리눅스용 어플리케이션 컨테이너
실행
FUSE 없이 임시 추출 실행
FUSE가 없을 때 마운트 대신 임시 디렉터리로 추출해서 실행한다.
내용물만 추출
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
여러 개의 실행파일 포함
libfuse.so.2 로딩 실패
| "주의" |
| Ubuntu 24.04 에서 (HP 랩탑) 에서 fuse, libfuse2 패키지 설치하면 부팅시 GNOME 이 출력되지 않는 이슈 발생하더라 |
AppImage는 실행에 FUSE 2가 필요하다. 라이브러리가 없으면 마운트에 실패한다. 앱 자체의 문제가 아니라 실행 환경에 FUSE가 없는 것이다.
- 해결 1 — 추출 실행
- FUSE 없이 바로 띄운다. (위 #FUSE 없이 임시 추출 실행 참고)
- 해결 2 — FUSE(libfuse2) 설치
- Ubuntu 22.04+/24.04에서는 패키지명이
libfuse2또는libfuse2t64이다. 설치 후에는--appimage-extract-and-run없이 그대로 실행된다.
chrome-sandbox SUID 샌드박스 오류 (Electron 앱)
The SUID sandbox helper binary was found, but is not configured correctly... chrome-sandbox is owned by root and has mode 4755
Chromium의 SUID 샌드박스 헬퍼(chrome-sandbox)가 root 소유·4755 권한이 아니어서 중단된 경우다. 최근 Ubuntu(23.10+)가 AppArmor로 비특권 user namespace를 제한하면서 Electron이 SUID 샌드박스로 폴백하는데, /tmp에 추출된 헬퍼는 setuid 권한을 가질 수 없어 발생한다.
| 방법 | 명령 | 샌드박스 | 비고 |
| 즉시 확인 | | :틀:Cross | 동작 확인용 |
| sysctl 완화 | 아래 sysctl 적용 후 실행 | :틀:Tick | 시스템 전역 설정 변경 |
| deb 설치 (권장) | | :틀:Tick | 배포에 적합, root:4755 자동 설정 |
- sysctl로 비특권 user namespace 제한 완화
# 일시 적용 / 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
이후 샌드박스를 켠 채로 정상 실행된다. .deb 설치 시에는 chrome-sandbox가 root:4755로 세팅되므로 --no-sandbox 없이 동작한다.
Missing X server or $DISPLAY
현재 셸에 디스플레이 서버가 연결되어 있지 않다는 뜻이다($DISPLAY 없음). 앱 버그가 아니라 GUI를 띄울 화면이 없는 환경 문제다. 먼저 환경을 확인한다.
- 경우 1 — Wayland 세션 (Ubuntu 기본, 가장 흔함)
- Electron이 X11로 폴백하다 실패한 것. Ozone Wayland로 띄운다.
- 경우 2 — SSH 원격 접속
- GUI를 로컬 화면에 띄우려면 X11 포워딩으로 재접속한다.
- 경우 3 — 진짜 헤드리스 (모니터 없음)
- 가상 디스플레이(Xvfb)로 부팅·렌더만 검증하고 스크린샷으로 확인한다.
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.