Snaps on Ubuntu Desktop

Preview:

Citation preview

Snaps on Ubuntu DesktopYoungbin 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 를이용해서패키지의권한이나동작등을제한할수있음.

VideoClassic, 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 appLet’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.gzsnapcraft init # snapcraft.yaml 생성

Skeleton ofsnapcraft.yaml

Editedcontent

(example)

Building & Running

snapcraftsudo 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/UCcH6oAZ0FOSVUMUAojHtFBg

In nearfuture…

apt 라니옛날분이시네

Thank you.Youngbin Han <sukso96100@gmail.com>

Leader, Ubuntu Korea Community

https://launchpad.net/~sukso96100