최근 수정 시각 : 2026-02-09 22:01:09

AppImage


<nopad>[[Linux|
파일:Linux 로고.svg
Linux
관련 문서
]]
리누스 토르발스 · 커널 · 배포판 (목록) · 환경변수 · 소프트웨어 · 명령어 · GUI 환경 · Linux 게이밍 · Tux · Flatpak · Snap(패키지 관리자) · AppImage

1. 개요2. 작동 방식3. 장점
3.1. 배포판 비종속3.2. 패키지 버전 간 충돌 방지3.3. 버전 선택의 자유3.4. Flatpak의 대안
4. 단점
4.1. 큰 용량, 느린 실행 속도4.2. 표준 패키지 레지스트리와 업데이트 관리 방법의 부재
5. 에러 해결법
5.1. fuse: memory allocation failed5.2. 특정 데스크탑 환경에서 UI 폰트가 너무 작아지는 문제
6. 기타

1. 개요

AppImageLauncher 홈페이지
쉬운 설치(Integrate)를 위한 패키지를 설치하는 것을 권장한다.

앱이미지(AppImage, 구 명칭: klik 및 PortableLinuxApps)는 리눅스에서 휴대용 소프트웨어를 배포하기 위한 오픈 소스 포맷이다. 업스트림 패키징이라고 불리는 개념인 특정 리눅스 배포판과 독립적으로 바이너리 소프트웨어를 설치할 수 있도록 하는 것을 목표로 한다. 결과적으로, 다른 파일을 사용할 필요 없이 하나의 앱이미지를 우분투, 아치 리눅스 및 레드햇 엔터프라이즈 리눅스에 설치하고 실행할 수 있다. 이는 기본 리눅스 배포판과 독립적인, 루트를 사용하지 않고 설치하는 형식을 목표로 한다.

2004년에 klik이라는 이름으로 처음 출시되었으며 지속적으로 개발된 후 2011년에 PortableLinuxApps로 이름이 바뀌고 2013년에 앱이미지로 이름이 변경되었다. 버전 2는 2016년에 출시됐다.

2. 작동 방식

기본적으로 리눅스 커널의 가상 파일 시스템 API인 FUSE에 기반한다.

임시 디렉토리에 가상의 파일시스템 SquashFS(읽기 전용)을 생성하여 그 곳에 패키지를 풀어 마운트한 후 실행한다. 프로세스 종료 시 마운트가 해제되며 임시 디렉토리에 마운트된 디렉토리 또한 제거된다. 다만 데이터는 마운트 디렉토리 외부에 저장되어 안전하다.

3. 장점

3.1. 배포판 비종속

거의 대부분의 메이저 배포판에서 항상 같은 바이너리를 이식해 사용할 수 있다.

apt를 사용하는 데비안, pacman을 사용하는 아치, dnf를 사용하는 페도라 상관 없이 하나의 패키지 시스템으로 통일하여, 굳이 여러 배포판용으로 힘들게 빌드하지 않아도 된다.

3.2. 패키지 버전 간 충돌 방지

기존 패키지 관리자는 패키지 한 개만 원하는데 필요없는 패키지까지 같이 딸려 설치되거나 반대로 꼭 원하는 패키지의 삭제를 요구하거나, 시스템에 패키지 하나가 설치되어 있지 않아 설치를 거부하여, 바이러스도 아닌데 시스템 설정을 파괴하는 경우도 있다. 게다가 배포판의 큰 업데이트 시 버전이 맞지 않는다고, 다른 패키지랑 함께 존재할 수 없다고 sudo apt autoremove로 삭제를 권하게 되고, 이렇게 패키지 간 내전이 일어나다가, 마치 내전이 핵전쟁으로 번지듯, 시스템이 정상 작동이 불가능할 정도로 망가지는 경우도 있었다.(윈도우에서도 프로그램을 설치했다 삭제했다 여러 번 하면 시스템이 조금씩 망가지며 어느 정도 망가지는 건 무시 가능하지만, 조금씩 고장이 쌓여 어느 순간 크게 망가져 포맷의 필요성을 느낄 수 있다.) 하지만 AppImage는 필요 의존성 패키지까지 묶어, 다른 패키지나 배포판의 버전 충돌을 방지한다.

3.3. 버전 선택의 자유

기존 apt 패키지는 의존성 패키지의 버전 충돌을 막기 위해 버전 업데이트에 매우 보수적이었다. 업데이트가 매우 느렸다. 게다가 다운그레이드도 매우 어려웠다. 하지만 AppImage는 의존성 패키지까지 한 팩에 묶임으로서 어떤 버전이든 선택이 가능하다.
만약 최신 버전이 떴을 때, 어떤 문제가 있다고 유저들이 말하면 잠시 미룰 수 있다. 그래도 굳이 최신 버전이 어떤 문제가 있는 지 궁금하다면 직접 찍먹 후 버전을 다시 내릴 수도 있고.

3.4. Flatpak의 대안

Flatpak 문서의 단점 문단에 서술한 것처럼, Flatpak에서 작동되지 않는 요소가 있다면(주로 타 프로그램이나 외부 경로 연동 등) AppImage로 한 번 시도해 볼 수 있다.
다행히 AppImage는 타 프로그램이나 외부 경로 관련 문제는 일으키지 않는다.

4. 단점

4.1. 큰 용량, 느린 실행 속도

의존성 패키지까지 묶어 배포하여. 시스템에 어떤 패키지가 설치되었는가 확인할 필요가 적어 안정적이지만, 용량이 크고 그만큼 드라이브도 많이 읽는다.
Krita가 apt에서는 약 140 MB, AppImage에서는 약 336 MB를 차지한다. 그리고 FUSE(Filesystem in USErspace)라는 가상 파티션을 생성하는 샌드박스형 구조라 실행 속도도 느리다.
하지만 HDD를 사용하던 시절에나 용량에 민감하고 실행 속도도 몇 분이었지, 요즘은 개인용 컴퓨터도 SSD가 많이 선호되고 대용량화되어 현대 컴퓨터 사양에서는 몇 백 MB에 몇 초에 불과한 속도 저하는 무시 가능하다.

4.2. 표준 패키지 레지스트리와 업데이트 관리 방법의 부재

AppImage는 단순한 배포 포맷일 뿐, 어딘가에 모든 종속성을 다루는 범용적인 패키지 레지스트리나 이를 접근하기 쉽게 해주는 패키지 관리자가 있는 것은 아니다.

Flatpak은 Flathub라는 공식 스토어와 자동 업데이트가 존재하지만, AppImage는 스토어가 없어 직접 다운로드 페이지까지 가서 다운로드받아야 한다. 자동 업데이트도 지원하지 않는다. 새 버전을 설치(Integrate) 시에는 파일명이 바뀌어(이름-버전-해시.appimage) 전혀 다른 프로그램으로 취급하여 타 프로그램 연동 시 새로 경로를 설정해야 한다.

5. 에러 해결법

5.1. fuse: memory allocation failed

AppImage 프로그램을 더블클릭해도 반응이 없는 증상.
우분투 리눅스 기준 'sudo apt purge appimagelauncher' 명령 실행 후, 해당 프로그램 실행을 시도해 본 후, 실행 성공 시 다시 AppImageLauncher를 설치하면 된다.

5.2. 특정 데스크탑 환경에서 UI 폰트가 너무 작아지는 문제

특정 데스크탑 환경에서 Flatpak 등의 다른 패키지에서는 안 그러지만, AppImage 빌드에서 폰트가 너무 작아지는 문제가 종종 발생하곤 한다. 프로그램 자체에 폰트 크기 설정 기능이 있다면 괜찮겠지만, 그 설정이 없다면...
https://github.com/LMMS/lmms/issues/6659

6. 기타

NixNixOS 환경에서는 동적 링킹을 철저하게 packaging 단계에서 포인팅하는 그 특성상 appimage의 이식성이 다소 빛을 발하지 못하는 편이다.# 꼭 appimage를 돌려야 하는 상황이라면 appimage-run 등을 사용할 수 있다.

원하는 패키지가 appimage로 배포되지 않는다면, pkg2appimage 등을 사용해서 전통적인 배포판별 패키지 파일을 appimage로 패키징해볼 수 있다.

분류