Snap·Flatpak — 배포판 독립 패키지 시스템

Snap과 Flatpak의 구조적 차이, SquashFS·OSTree 기반 격리 원리, 핵심 명령어, 보안 샌드박스를 비교하고 사용 시나리오를 정리합니다.

· 5 min read · PALDYN Team

지난 글에서 Arch Linux의 pacman을 살펴봤습니다. apt, dnf, pacman은 각각 Debian, Red Hat, Arch에 묶인 배포판 전용 도구입니다. 하지만 SnapFlatpak은 배포판과 무관하게 같은 패키지를 어디서든 설치할 수 있도록 설계된 범용 패키지 포맷입니다. 앱과 의존성을 하나의 컨테이너에 묶어 배포하고, 샌드박스로 격리한다는 공통 목표를 가지지만 구현 철학은 상당히 다릅니다.

Snap

Snap은 Canonical(Ubuntu)이 개발했습니다. 패키지(.snap 파일)는 SquashFS 이미지로 묶여 /snap/{name}/{revision}/ 에 읽기 전용으로 마운트됩니다. 앱을 실행할 때 이 이미지를 loop 디바이스로 마운트해 파일시스템처럼 사용합니다.

# snapd 상태 확인
systemctl status snapd

# 검색
snap find "code editor"

# 설치 (기본: stable 채널)
sudo snap install code --classic

# 설치된 snap 목록
snap list

# 업데이트 (자동 갱신, 수동 강제)
sudo snap refresh
sudo snap refresh code

# 제거
sudo snap remove code

# 특정 revision으로 롤백
sudo snap revert code

채널 시스템

Snap은 stable, candidate, beta, edge 네 채널을 제공합니다.

snap install chromium --channel=beta
snap switch chromium --channel=stable
snap info code | grep -A5 channels

--classic 옵션은 샌드박스를 해제해 호스트 파일시스템에 자유롭게 접근하게 합니다. VS Code, IntelliJ 같은 IDE에 주로 씁니다. --devmode는 개발 중 제한을 완화합니다.

snapd 데몬

Snap은 snapd라는 백그라운드 데몬이 항상 실행되어야 합니다. 이 점이 가장 큰 비판 대상입니다.

snap services          # snap이 관리하는 서비스 목록
snap logs snapd        # snapd 로그

Snap · Flatpak 핵심 명령어

Flatpak

Flatpak은 Red Hat과 GNOME 커뮤니티가 주도합니다. 앱을 OSTree(Git과 유사한 파일시스템 버전 관리) 위에 저장하고, Bubblewrap으로 샌드박스를 구성합니다. 별도 데몬 없이 flatpak CLI만으로 동작한다는 점이 Snap과 다릅니다.

# Flathub 저장소 추가 (최초 1회)
flatpak remote-add --if-not-exists flathub \
  https://flathub.org/repo/flathub.flatpakrepo

# 검색
flatpak search firefox

# 설치 (애플리케이션 ID 방식)
flatpak install flathub org.mozilla.firefox

# 실행
flatpak run org.mozilla.firefox

# 목록
flatpak list

# 업데이트
flatpak update

# 제거 (사용되지 않는 런타임도 정리)
flatpak uninstall org.mozilla.firefox
flatpak uninstall --unused

런타임과 SDK

Flatpak의 핵심 특징은 공유 런타임입니다. 여러 앱이 org.gnome.Platform, org.freedesktop.Platform 같은 공통 런타임을 공유해 디스크를 절약합니다.

# 설치된 런타임 목록
flatpak list --runtime

# 특정 앱의 런타임 정보
flatpak info org.mozilla.firefox

권한(Permission) 관리

Flatpak 앱은 기본적으로 호스트 파일시스템에 접근할 수 없습니다. xdg-desktop-portal을 통해 선택적 접근을 허용합니다.

# 앱 권한 확인
flatpak info --show-permissions org.mozilla.firefox

# 런타임 권한 수동 조정
flatpak override --user \
  --filesystem=home org.mozilla.firefox

# GUI 도구 (GNOME Software / Flatseal)
flatpak install flathub com.github.tchx84.Flatseal

Snap vs Flatpak 비교

사용 시나리오

상황추천
Ubuntu 서버에 최신 데몬 앱Snap
데스크탑 GUI 앱 (크로스 배포판)Flatpak
IDE · 개발 도구Snap (--classic)
세밀한 권한 제어 필요Flatpak
서드파티 저장소 없이 설치Snap (Snapcraft Store)

정리

Snap은 Canonical 생태계와 통합이 깊고 --classic으로 개발 도구에 강점이 있습니다. Flatpak은 공유 런타임으로 디스크를 아끼고 권한 모델이 세밀해 데스크탑 GUI 앱에 적합합니다. 두 시스템은 경쟁하면서도 공존하며, 하나의 배포판에서 둘 다 쓰는 것도 일반적입니다.


지난 글: pacman — Arch Linux 패키지 관리자 완전 가이드

다음 글: 소스에서 빌드하기 — ./configure·make·make install


읽어주셔서 감사합니다. 😊