Snaps on Ubuntu Desktop
Youngbin Han <sukso96100@gmail.com>
Leader, Ubuntu Korea Community
https://launchpad.net/~sukso96100
About me
• 한영빈(Youngbin Han)
• 성공회대학교 소프트웨어공학과 재학(2016.02~)
• 우분투한국커뮤니티 대표(2017.03~)
• 생각보다 많이 힘들더군요. 전 대표님들이 본인이 퇴물임을 강조하는 이
유를 알 거 같음…
• 그냥 이것저것 관심가는거 합니다.
• 요세는 Django, Electron, Docker 를 써보는 중입니다.
Index
• 전통적인 리눅스 패키지 사용과 문제점
• Snap 에 대한 소개 및 전통적인 리눅스 패키지와 비교
• Ubuntu Desktop 에서의 Snap 근황
• 데스크탑 앱을 Snap 패키지로 빌드하고 배포하기
Before
get
started…
Linux 에서 패키지를 설치하려면?
• 설치할 소프트웨어가 해당 배포판에서 패키지로 제공되는지 확인
• 저장소에서 패키지 검색
• 사용중인 배포판의 버전을 지원하는지 확인
• 우분투에서 제공하는 데비안 패키지의 경우 릴리즈별로 제공되는 패키지
가 다름(패키지 이름도 다른 경우가 있음.)
• 패키지 관리자로 패키지와 의존성 패키지 설치
• 설치 끝. 사용하면 됨.
문제점
• 사용중인 배포판에서 패키지가 제공되지 않는다면?
• 직접 패키지를 빌드해서 설치?
• 제공이 되어도 사용중이 배포판 버전에 대해 지원하지 않는다면?
• 이걸 언제 다 패키징하냐…
• 개발자 입장에서는 사용자가 많아질수록 다양한 배포판을 지원해야 함
• 배포판별로 패키징 방식도 다르고, 제공되는 것도 조금씩 다르다.
• 배포판 버전별로도 패키징 해야함.
문제점
• 의존성 문제
• 음… 의존성 패키지까지 잘 깔리면 참 좋은데, 꼭 그러란 법은 없다.
• 어떤 패키지는 의존성 패키지의 이전 버전을 요구하고, 또 어떤 패키지는
최신 버전을 요구한다, 그러나 두 버전을 동시에 깔 수가 없다.
• 배포판을 최신 버전으로 업그레이드 했는데, 이 버전의 배포판에는 내가
쓰던 프로그램이 요구하는 의존성 패키지를 제공하지 않는다. (으앜)
패키지 업그레이드 중 문제가 발생한다면?
Snap(Snappy)?
PPAs?
Click -> Snappy -> Snap
• 처음에는 Ubuntu Touch 를 위한 패키지 포멧인, *.click 으로 등장.
• Ubuntu 터치가 처음 등장한 Ubuntu 14.04 와 함께 등장.
• Click 패키지를 더 발전시켜서 Cloud 와 IoT 로 가져옴
• Click 이 진화하여 Snappy 패키지가 됨
• 범용 리눅스 패키지로 발전.
• 데스크탑, 클라우드, 사물인터넷 등 다양한 분야에서 사용.
• 이제는 Snap 이라고 불림.
범용 리눅스 패키지(Universal Linux Package)
• Snap이 지원되는 모든 리눅스 배포판에서 사용 가능
• 데스크탑, 서버, 클라우드, 디바이스(IoT 등) 용으로 빌드 가능
• 웬만한 용도로는 거의 다 빌드 가능하다고 보면 됩니다.
• 한번 빌드해서 Snap 이 지원되는 모든 배포판으로 한번에 배포
• 배포판 버전별로 패키지를 관리 할 필요도 없음.
Supported Linux Distros
컨테이너처럼 격리되어 있음
• 기존 리눅스 패키지 처럼 시스템 디렉터리 (/usr/share, /usr/bin
등) 이 아닌, 별도의 전용 경로 (/var/snap)에 모두 설치됨.
• 패키지에 필요한 의존성까지 모두 패키지에 포함되어 있음.
• 앱에 대한 정보(버전, 의존성 등)을 기술한 snap.yaml과 앱 코드를
포함한 SquashFS 로 구성되어 있음.
• Confinements 와 Interfaces 를 이용해서 패키지의 권한이나 동
작 등을 제한할 수 있음.
Video
Classic, devmode, and strict confinement
https://www.youtube.com/watch?v=GZhbJ44q4Lk
Transactional Updates
• 패키지가 리비전별로 디렉터리를 만들어 관리하며, 현재 쓰는 버
전을 각 패키지 디렉터리별로 있는 current 에 심볼릭 링크 함.
• 패키지의 파일은 /var/lib/snapd/snaps/(name)_(rev).snap 에 설치되고,
/snap/(name)/(rev) 에 SquashFS 로 마운트 되어, /snap/(name)/current
에 심볼릭 링크 됨.
• 패키지가 사용하는 쓰기 영역은 /var/snap/(name)/(rev) 로 생성되어,
/var/snap/(name)/current 에 심볼릭 링크 됨.
• 새 버전으로 업데이트 하나가 오류가 나면, 자동으로 롤백 됨.
• 심볼릭 링크를 변경해서 이전 버전으로 쉽게 되돌리는 방식.
Channels
• 용도에 따라 채널을 지정하여 배포 가능.
• grade 와 confinement 속성 값에 따라 정해짐.
grade, confinement 값에 따른 배포 가능 채널
grade /	confinement strict classic devmode
stable 모든 채널 모든 채널 Beta,	edge 만
devel Beta,	edge 만 Beta,	edge 만 Beta,	edge 만
On Desktop?
2016.04 ~
• Ubuntu 16.04 LTS 부터 기본으로 탑제됨.
• 이전 버전은 따로 저장소에서 받아서 설치 가능.
• 우분투 소프트웨어 센터(gnome-software) 에서 snap 패키지를
설치 지원 시작.
• 완벽하지는 않음.
• Unity 연동 제공
• Snap Desktop Launcher
Snap Desktop Launcher
• https://github.com/ubuntu/snapcraft-desktop-helpers
• Snap 포맷으로 패키징된 데스크탑 앱을 위한 데스크탑 연동 도구.
2016.10 ~
• Unity 8 Snap (지금은 망한 Unity 8…)
• 그리고 더 많은 Snap 앱 : HexChat, Telegram, VLC, etc…
• 우분투 소프트웨어 센터에서 Snap 앱 스크린샷 조회 가능
• Ubuntu 14.04 에서도 Snap 사용 가능.(2017.02)
2017.01~
• Ubuntu 14.04 에서도 Snap 사용 가능.
• Classic Confinement 도입
• 전체 시스템에 접근이 필요한 앱들이 Classic Confinement 를 이용해
Snap 으로 패키징 되어 배포됨.
• 예 : Atom, VS Code, PyCharm 같은 개발자 도구
• 우분투 소프트웨어 센터의 Editor’s Picks 부분에 Snap 앱도 표시
• KDE Discover 에서도 Snap 앱 설치 가능.
GNOME as a Snap!
In Ubuntu 17.10?
• 우분투 소프트웨어 센터
• Editor’s Picks 부분에 오직 Snap 앱만 표시.
• Featured 부분에 Snap 앱도 표시.
• 당연하게도(?) 더 많은 앱이 Snap 으로 패키징 되어 배포됨.
Snapping your app
Let’s snap simplenote-electron for example.
https://github.com/Automattic/simplenote-electron
미리 빌드된 Tarball 받고, 초기 파일 생성
wget https://github.com/Automattic/simplenote-
electron/releases/download/v1.0.8/Simplenote-linux-
x64.1.0.8.tar.gz
tar xvzf Simplenote-linux-x64.1.0.8.tar.gz
cd Simplenote-linux-x64.1.0.8.tar.gz
snapcraft init # snapcraft.yaml 생성
Skeleton of
snapcraft.yaml
Edited
content
(example)
Building & Running
snapcraft
sudo snap install simplenote_1.0.8_amd64.snap
simplenote
dashboard.snapcraft.io
uApp Explorer(uappexplorer.com)
Available as a Snap
• Snapcraft : https://snapcraft.io/
• Snapcrafters GitHub : https://github.com/snapcrafters
• Snapcraft YouTube :
https://www.youtube.com/channel/UCcH6oAZ0FOSVUMUAoj
HtFBg
In near
future…
apt 라니
옛날 분이시네
Thank you.
Youngbin Han <sukso96100@gmail.com>
Leader, Ubuntu Korea Community
https://launchpad.net/~sukso96100

Snaps on Ubuntu Desktop

  • 1.
    Snaps on UbuntuDesktop Youngbin Han <sukso96100@gmail.com> Leader, Ubuntu Korea Community https://launchpad.net/~sukso96100
  • 2.
    About me • 한영빈(YoungbinHan) • 성공회대학교 소프트웨어공학과 재학(2016.02~) • 우분투한국커뮤니티 대표(2017.03~) • 생각보다 많이 힘들더군요. 전 대표님들이 본인이 퇴물임을 강조하는 이 유를 알 거 같음… • 그냥 이것저것 관심가는거 합니다. • 요세는 Django, Electron, Docker 를 써보는 중입니다.
  • 3.
    Index • 전통적인 리눅스패키지 사용과 문제점 • Snap 에 대한 소개 및 전통적인 리눅스 패키지와 비교 • Ubuntu Desktop 에서의 Snap 근황 • 데스크탑 앱을 Snap 패키지로 빌드하고 배포하기
  • 4.
  • 5.
    Linux 에서 패키지를설치하려면? • 설치할 소프트웨어가 해당 배포판에서 패키지로 제공되는지 확인 • 저장소에서 패키지 검색 • 사용중인 배포판의 버전을 지원하는지 확인 • 우분투에서 제공하는 데비안 패키지의 경우 릴리즈별로 제공되는 패키지 가 다름(패키지 이름도 다른 경우가 있음.) • 패키지 관리자로 패키지와 의존성 패키지 설치 • 설치 끝. 사용하면 됨.
  • 6.
    문제점 • 사용중인 배포판에서패키지가 제공되지 않는다면? • 직접 패키지를 빌드해서 설치? • 제공이 되어도 사용중이 배포판 버전에 대해 지원하지 않는다면? • 이걸 언제 다 패키징하냐… • 개발자 입장에서는 사용자가 많아질수록 다양한 배포판을 지원해야 함 • 배포판별로 패키징 방식도 다르고, 제공되는 것도 조금씩 다르다. • 배포판 버전별로도 패키징 해야함.
  • 7.
    문제점 • 의존성 문제 •음… 의존성 패키지까지 잘 깔리면 참 좋은데, 꼭 그러란 법은 없다. • 어떤 패키지는 의존성 패키지의 이전 버전을 요구하고, 또 어떤 패키지는 최신 버전을 요구한다, 그러나 두 버전을 동시에 깔 수가 없다. • 배포판을 최신 버전으로 업그레이드 했는데, 이 버전의 배포판에는 내가 쓰던 프로그램이 요구하는 의존성 패키지를 제공하지 않는다. (으앜)
  • 8.
    패키지 업그레이드 중문제가 발생한다면?
  • 9.
  • 10.
  • 11.
    Click -> Snappy-> Snap • 처음에는 Ubuntu Touch 를 위한 패키지 포멧인, *.click 으로 등장. • Ubuntu 터치가 처음 등장한 Ubuntu 14.04 와 함께 등장. • Click 패키지를 더 발전시켜서 Cloud 와 IoT 로 가져옴 • Click 이 진화하여 Snappy 패키지가 됨 • 범용 리눅스 패키지로 발전. • 데스크탑, 클라우드, 사물인터넷 등 다양한 분야에서 사용. • 이제는 Snap 이라고 불림.
  • 12.
    범용 리눅스 패키지(UniversalLinux Package) • Snap이 지원되는 모든 리눅스 배포판에서 사용 가능 • 데스크탑, 서버, 클라우드, 디바이스(IoT 등) 용으로 빌드 가능 • 웬만한 용도로는 거의 다 빌드 가능하다고 보면 됩니다. • 한번 빌드해서 Snap 이 지원되는 모든 배포판으로 한번에 배포 • 배포판 버전별로 패키지를 관리 할 필요도 없음.
  • 13.
  • 14.
    컨테이너처럼 격리되어 있음 •기존 리눅스 패키지 처럼 시스템 디렉터리 (/usr/share, /usr/bin 등) 이 아닌, 별도의 전용 경로 (/var/snap)에 모두 설치됨. • 패키지에 필요한 의존성까지 모두 패키지에 포함되어 있음. • 앱에 대한 정보(버전, 의존성 등)을 기술한 snap.yaml과 앱 코드를 포함한 SquashFS 로 구성되어 있음. • Confinements 와 Interfaces 를 이용해서 패키지의 권한이나 동 작 등을 제한할 수 있음.
  • 15.
    Video Classic, devmode, andstrict confinement https://www.youtube.com/watch?v=GZhbJ44q4Lk
  • 16.
    Transactional Updates • 패키지가리비전별로 디렉터리를 만들어 관리하며, 현재 쓰는 버 전을 각 패키지 디렉터리별로 있는 current 에 심볼릭 링크 함. • 패키지의 파일은 /var/lib/snapd/snaps/(name)_(rev).snap 에 설치되고, /snap/(name)/(rev) 에 SquashFS 로 마운트 되어, /snap/(name)/current 에 심볼릭 링크 됨. • 패키지가 사용하는 쓰기 영역은 /var/snap/(name)/(rev) 로 생성되어, /var/snap/(name)/current 에 심볼릭 링크 됨. • 새 버전으로 업데이트 하나가 오류가 나면, 자동으로 롤백 됨. • 심볼릭 링크를 변경해서 이전 버전으로 쉽게 되돌리는 방식.
  • 17.
    Channels • 용도에 따라채널을 지정하여 배포 가능. • grade 와 confinement 속성 값에 따라 정해짐.
  • 18.
    grade, confinement 값에따른 배포 가능 채널 grade / confinement strict classic devmode stable 모든 채널 모든 채널 Beta, edge 만 devel Beta, edge 만 Beta, edge 만 Beta, edge 만
  • 19.
  • 20.
    2016.04 ~ • Ubuntu16.04 LTS 부터 기본으로 탑제됨. • 이전 버전은 따로 저장소에서 받아서 설치 가능. • 우분투 소프트웨어 센터(gnome-software) 에서 snap 패키지를 설치 지원 시작. • 완벽하지는 않음. • Unity 연동 제공 • Snap Desktop Launcher
  • 21.
    Snap Desktop Launcher •https://github.com/ubuntu/snapcraft-desktop-helpers • Snap 포맷으로 패키징된 데스크탑 앱을 위한 데스크탑 연동 도구.
  • 22.
    2016.10 ~ • Unity8 Snap (지금은 망한 Unity 8…) • 그리고 더 많은 Snap 앱 : HexChat, Telegram, VLC, etc… • 우분투 소프트웨어 센터에서 Snap 앱 스크린샷 조회 가능 • Ubuntu 14.04 에서도 Snap 사용 가능.(2017.02)
  • 23.
    2017.01~ • Ubuntu 14.04에서도 Snap 사용 가능. • Classic Confinement 도입 • 전체 시스템에 접근이 필요한 앱들이 Classic Confinement 를 이용해 Snap 으로 패키징 되어 배포됨. • 예 : Atom, VS Code, PyCharm 같은 개발자 도구 • 우분투 소프트웨어 센터의 Editor’s Picks 부분에 Snap 앱도 표시 • KDE Discover 에서도 Snap 앱 설치 가능.
  • 24.
  • 25.
    In Ubuntu 17.10? •우분투 소프트웨어 센터 • Editor’s Picks 부분에 오직 Snap 앱만 표시. • Featured 부분에 Snap 앱도 표시. • 당연하게도(?) 더 많은 앱이 Snap 으로 패키징 되어 배포됨.
  • 26.
    Snapping your app Let’ssnap simplenote-electron for example. https://github.com/Automattic/simplenote-electron
  • 27.
    미리 빌드된 Tarball받고, 초기 파일 생성 wget https://github.com/Automattic/simplenote- electron/releases/download/v1.0.8/Simplenote-linux- x64.1.0.8.tar.gz tar xvzf Simplenote-linux-x64.1.0.8.tar.gz cd Simplenote-linux-x64.1.0.8.tar.gz snapcraft init # snapcraft.yaml 생성
  • 28.
  • 29.
  • 30.
    Building & Running snapcraft sudosnap install simplenote_1.0.8_amd64.snap simplenote
  • 31.
  • 32.
  • 33.
  • 34.
    • Snapcraft :https://snapcraft.io/ • Snapcrafters GitHub : https://github.com/snapcrafters • Snapcraft YouTube : https://www.youtube.com/channel/UCcH6oAZ0FOSVUMUAoj HtFBg
  • 35.
  • 36.
    Thank you. Youngbin Han<sukso96100@gmail.com> Leader, Ubuntu Korea Community https://launchpad.net/~sukso96100