Linux에서 Snap 패키지를 사용하고 설치하는 방법

리눅스 환경에서 소프트웨어를 설치하는 방식은 다양합니다. 데비안 패키지, 레드햇 RPM 패키지, 아치 리눅스 사용자 저장소, 젠투 포티지 트리, AppImages, 정적 바이너리 파일이 포함된 tar.gz 아카이브 등이 대표적입니다. 이처럼 다양한 설치 방법이 존재하지만, 리눅스용 전문 소프트웨어를 개발할 때 모든 리눅스 배포판에서 이를 쉽게 사용할 수 있도록 하는 것은 여전히 큰 과제입니다. 우분투 개발팀은 이러한 문제를 해결하기 위해 스냅 패키지라는 새로운 솔루션을 제시했습니다. 이제 스냅 패키지가 리눅스 생태계에서 왜 필요하며, 어떻게 사용하고 설치하는지 자세히 알아보겠습니다.

참고: 이 글 하단에 첨부된 비디오 튜토리얼을 통해 더욱 쉽게 이해할 수 있습니다.

스냅 패키지의 탄생 배경

개발자들은 종종 자신들이 만든 프로그램을 다양한 패키지 형태로 배포해야 하는 어려움에 직면합니다. 각 패키지 형태에 맞춰 파일을 생성하는 데 많은 시간과 노력이 소요되기 때문에, 결국 많은 프로그램들이 리눅스 환경에서 제대로 활용되지 못하는 경우가 발생합니다. 이러한 문제점을 해결하기 위해 우분투 팀은 스냅 패키지를 개발했습니다. 스냅은 스냅 저장소에서 다운로드하여 설치할 수 있으며, 프로그램 실행에 필요한 모든 요소가 자체적으로 포함되어 있습니다.

스냅 패키지 안에는 라이브러리, 바이너리 파일, 이미지 파일, 오디오 파일 및 프로그램 등 앱 실행에 필요한 모든 것이 들어있어 시스템 환경에 종속되지 않고 독립적으로 작동합니다. 즉, 호스트 시스템이 구형이거나 설정이 잘못되어 있어도 프로그램 실행에는 전혀 영향을 미치지 않습니다. 이 덕분에 모든 리눅스 배포판에서 스냅을 효율적으로 설치할 수 있게 되었고, 개발자들은 자신의 스냅 저장소를 만들어 ‘범용 설치 프로그램’처럼 활용할 수 있게 되었습니다.

Snapd 설치 및 실행

Snapd는 리눅스에서 스냅 패키지를 실행하는 데 필요한 기술입니다. 스냅을 개발한 회사는 주요 리눅스 배포판 개발자들과 협력하여 스냅 패키지를 쉽게 실행하고 설치할 수 있도록 노력해왔습니다. 다음은 Snapd를 설치하는 방법입니다.

참고: 우분투 사용자 및 우분투 기반 리눅스 배포판 사용자는 Snapd를 별도로 설치할 필요가 없습니다.

데비안 테스트/불안정 버전

sudo apt install snapd

페도라

sudo dnf install snapd
sudo systemctl enable --now snapd.socket

아치 리눅스

sudo pacman -S snapd
sudo systemctl enable --now snapd.socket

오픈수세 립 42.2

sudo zypper addrepo https://download.opensuse.org/repositories/system:/snappy/openSUSE_Leap_42.2/ snappy
sudo zypper install snapd
sudo systemctl enable --now snapd.socket

오픈수세 텀블위드

sudo zypper addrepo https://download.opensuse.org/repositories/system:/snappy/openSUSE_Tumbleweed/ snappy
sudo zypper install snapd
sudo systemctl enable --now snapd.socket

젠투

sudo -s
nano -w /etc/portage/repos.conf/gentoo-snappy.conf

아래 내용을 붙여넣으세요.

[gentoo-snappy]
# An unofficial overlay that supports the installation of the "Snappy" backbone.
# Maintainer: Clayton "kefnab" Dobbs (email protected)
# Upstream Maintainer: Zygmunt "zyga" Krynicki (email protected)
location = /usr/local/portage/gentoo-snappy
sync-type = git
sync-uri = https://github.com/zyga/gentoo-snappy.git
priority = 50
auto-sync = yes

Ctrl + O를 눌러 구성 파일을 저장합니다.

emaint sync --repo gentoo-snappy

스냅 패키지 사용법

앞서 언급했듯이 스냅 패키지는 우분투와 캐노니컬이 운영하는 ‘스냅 저장소’에 호스팅됩니다. 누구나 스냅 패키지를 무료로 게시할 수 있습니다. 자신의 스냅 패키지를 저장소에 게시하고 싶다면 스냅크래프트.io 웹사이트를 참고하세요. 이 웹사이트에는 스냅 패키지를 게시하는 데 필요한 모든 정보가 상세하게 안내되어 있습니다.

스냅 저장소에서 소프트웨어를 검색하려면 `find` 명령을 사용하면 됩니다.

snap find programname

예를 들어, 다음 명령어를 실행해 봅시다.

snap find telegram

위 명령어를 실행하면 “telegram”이라는 키워드가 포함된 모든 설치 가능한 스냅 패키지 목록이 표시됩니다. 이 목록을 살펴보고 원하는 패키지를 찾으세요. 그런 다음, 아래의 설치 명령어를 사용하여 패키지를 설치하면 됩니다.

sudo snap install telegram-latest

위 명령어를 실행하면 스냅 저장소에서 최신 버전의 스냅 패키지를 다운로드하여 시스템에 설치합니다. 그 후, 스냅 컨테이너를 마운트하여 사용자가 내부 소프트웨어에 접근할 수 있도록 합니다. 스냅이 마운트된 위치를 확인하려면 `lsblk` 명령을 실행하세요. 스냅은 소프트웨어가 탑재된 볼륨이며, 시스템에 연결된 다른 하드 드라이브나 장치와 마찬가지로 취급됩니다.

설치된 스냅 패키지를 시스템에서 제거하려면 `remove` 명령을 사용하면 됩니다.

예를 들어, 다음 명령어를 실행해 봅시다.

sudo snap remove telegram-latest

제거하려는 스냅 패키지 이름을 잊으셨나요? 그렇다면 다음 명령어를 실행해 보세요.

snap list

`list` 명령어를 실행하면 시스템에 설치된 모든 스냅 패키지 목록이 표시됩니다. 이 목록에서 제거하려는 스냅 패키지 이름을 확인한 후, 앞서 설명한 `remove` 명령어를 사용하여 제거할 수 있습니다.

참고: `snap –help` 명령어를 사용하여 이 튜토리얼에서 다루지 않은 다른 명령어들을 확인해 보세요.

스냅 패키지 업데이트

다른 소프트웨어와 마찬가지로 스냅 패키지도 업데이트가 필요합니다. 스냅 데몬은 시스템 내의 모든 스냅 컨테이너를 관리합니다. 따라서 스냅 패키지는 일반적인 방식으로는 업데이트되지 않습니다. 시스템에 설치된 스냅 패키지를 업데이트하려면 `refresh` 명령어를 사용해야 합니다. 스냅 패키지를 사용할 때 알아두어야 할 중요한 명령어 중 하나입니다.

sudo snap refresh

결론

스냅 패키지는 리눅스에서 소프트웨어를 설치하고 사용하는 방식을 혁신적으로 바꿀 가능성이 있습니다. 소프트웨어 개발자는 여러 가지 패키지 형태, 바이너리 파일, 배포 방법을 만드는 대신 단 하나의 스냅 컨테이너만 만들면 됩니다. 이 스냅 컨테이너에는 라이브러리, 실행 코드 및 기타 중요한 파일들이 모두 포함되어 있어 사용자들이 단일 명령어로 쉽게 설치할 수 있습니다.

스냅 패키지가 완벽한 것은 아닙니다. 일부 리눅스 초보 사용자는 명령줄 인터페이스를 통해서만 앱을 설치할 수 있다는 점에 어려움을 느낄 수도 있습니다. 스냅 패키지가 점점 더 대중화됨에 따라 우분투 개발팀이 스냅을 설치하고 사용하는 사용자 친화적인 그래픽 인터페이스를 개발하기를 기대합니다. 그때까지는 명령줄 인터페이스를 사용해야 할 것입니다.