snaps on ubuntu desktop

36
Snaps on Ubuntu Desktop Youngbin Han <[email protected]> Leader, Ubuntu Korea Community https://launchpad.net/~sukso96100

Upload: ubuntu-korea-community

Post on 28-Jan-2018

70 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Snaps on Ubuntu Desktop

Snaps on Ubuntu DesktopYoungbin Han <[email protected]>

Leader, Ubuntu Korea Community

https://launchpad.net/~sukso96100

Page 2: Snaps on Ubuntu Desktop

About me

•한영빈(Youngbin Han)

•성공회대학교소프트웨어공학과재학(2016.02~)

•우분투한국커뮤니티대표(2017.03~)• 생각보다많이힘들더군요. 전대표님들이본인이퇴물임을강조하는이유를알거같음…

•그냥이것저것관심가는거합니다.• 요세는 Django, Electron, Docker 를써보는중입니다.

Page 3: Snaps on Ubuntu Desktop

Index

•전통적인리눅스패키지사용과문제점• Snap 에대한소개및전통적인리눅스패키지와비교• Ubuntu Desktop 에서의 Snap 근황•데스크탑앱을 Snap 패키지로빌드하고배포하기

Page 4: Snaps on Ubuntu Desktop

Before get started…

Page 5: Snaps on Ubuntu Desktop

Linux 에서패키지를설치하려면?

•설치할소프트웨어가해당배포판에서패키지로제공되는지확인

•저장소에서패키지검색

•사용중인배포판의버전을지원하는지확인• 우분투에서제공하는데비안패키지의경우릴리즈별로제공되는패키지가다름(패키지이름도다른경우가있음.)

•패키지관리자로패키지와의존성패키지설치

•설치끝. 사용하면됨.

Page 6: Snaps on Ubuntu Desktop

문제점

•사용중인배포판에서패키지가제공되지않는다면?• 직접패키지를빌드해서설치?

• 제공이되어도사용중이배포판버전에대해지원하지않는다면?

•이걸언제다패키징하냐…• 개발자입장에서는사용자가많아질수록다양한배포판을지원해야함

• 배포판별로패키징방식도다르고, 제공되는것도조금씩다르다.

• 배포판버전별로도패키징해야함.

Page 7: Snaps on Ubuntu Desktop

문제점

•의존성문제• 음… 의존성패키지까지잘깔리면참좋은데, 꼭그러란법은없다.• 어떤패키지는의존성패키지의이전버전을요구하고, 또어떤패키지는최신버전을요구한다, 그러나두버전을동시에깔수가없다.• 배포판을최신버전으로업그레이드했는데, 이버전의배포판에는내가쓰던프로그램이요구하는의존성패키지를제공하지않는다. (으앜)

Page 8: Snaps on Ubuntu Desktop

패키지업그레이드중문제가발생한다면?

Page 9: Snaps on Ubuntu Desktop

Snap(Snappy)?

Page 10: Snaps on Ubuntu Desktop

PPAs?

Page 11: Snaps on Ubuntu Desktop

Click -> Snappy -> Snap

•처음에는 Ubuntu Touch 를위한패키지포멧인, *.click 으로등장.• Ubuntu 터치가처음등장한 Ubuntu 14.04 와함께등장.

• Click 패키지를더발전시켜서 Cloud 와 IoT 로가져옴• Click 이진화하여 Snappy 패키지가됨

•범용리눅스패키지로발전.• 데스크탑, 클라우드, 사물인터넷등다양한분야에서사용.• 이제는 Snap 이라고불림.

Page 12: Snaps on Ubuntu Desktop

범용리눅스패키지(Universal Linux Package)

• Snap이지원되는모든리눅스배포판에서사용가능

• 데스크탑, 서버, 클라우드, 디바이스(IoT 등) 용으로빌드가능• 웬만한용도로는거의다빌드가능하다고보면됩니다.

•한번빌드해서 Snap 이지원되는모든배포판으로한번에배포• 배포판버전별로패키지를관리할필요도없음.

Page 13: Snaps on Ubuntu Desktop

Supported Linux Distros

Page 14: Snaps on Ubuntu Desktop

컨테이너처럼격리되어있음

•기존리눅스패키지처럼시스템디렉터리 (/usr/share, /usr/bin등) 이아닌, 별도의전용경로 (/var/snap)에모두설치됨.

•패키지에필요한의존성까지모두패키지에포함되어있음.

•앱에대한정보(버전, 의존성등)을기술한 snap.yaml과앱코드를포함한 SquashFS 로구성되어있음.• Confinements 와 Interfaces 를이용해서패키지의권한이나동작등을제한할수있음.

Page 15: Snaps on Ubuntu Desktop

VideoClassic, devmode, and strict confinement

https://www.youtube.com/watch?v=GZhbJ44q4Lk

Page 16: Snaps on Ubuntu Desktop

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 에심볼릭링크됨.

•새버전으로업데이트하나가오류가나면, 자동으로롤백됨.• 심볼릭링크를변경해서이전버전으로쉽게되돌리는방식.

Page 17: Snaps on Ubuntu Desktop

Channels

•용도에따라채널을지정하여배포가능.• grade 와 confinement 속성값에따라정해짐.

Page 18: Snaps on Ubuntu Desktop

grade, confinement 값에따른배포가능채널

grade /confinement strict classic devmode

stable 모든채널 모든채널 Beta,edge만

devel Beta,edge만 Beta,edge만 Beta,edge만

Page 19: Snaps on Ubuntu Desktop

On Desktop?

Page 20: Snaps on Ubuntu Desktop

2016.04 ~

• Ubuntu 16.04 LTS 부터기본으로탑제됨.• 이전버전은따로저장소에서받아서설치가능.

•우분투소프트웨어센터(gnome-software) 에서 snap 패키지를설치지원시작.• 완벽하지는않음.

• Unity 연동제공• Snap Desktop Launcher

Page 21: Snaps on Ubuntu Desktop

Snap Desktop Launcher

• https://github.com/ubuntu/snapcraft-desktop-helpers• Snap 포맷으로패키징된데스크탑앱을위한데스크탑연동도구.

Page 22: Snaps on Ubuntu Desktop

2016.10 ~

• Unity 8 Snap (지금은망한 Unity 8…)• 그리고더많은 Snap 앱 : HexChat, Telegram, VLC, etc…

•우분투소프트웨어센터에서 Snap 앱스크린샷조회가능• Ubuntu 14.04 에서도 Snap 사용가능.(2017.02)

Page 23: Snaps on Ubuntu Desktop

2017.01~

• Ubuntu 14.04 에서도 Snap 사용가능.• Classic Confinement 도입• 전체시스템에접근이필요한앱들이 Classic Confinement 를이용해

Snap 으로패키징되어배포됨.• 예 : Atom, VS Code, PyCharm 같은개발자도구

•우분투소프트웨어센터의 Editor’s Picks 부분에 Snap 앱도표시• KDE Discover 에서도 Snap 앱설치가능.

Page 24: Snaps on Ubuntu Desktop

GNOME as a Snap!

Page 25: Snaps on Ubuntu Desktop

In Ubuntu 17.10?

•우분투소프트웨어센터• Editor’s Picks 부분에오직 Snap 앱만표시.• Featured 부분에 Snap 앱도표시.

•당연하게도(?) 더많은앱이 Snap 으로패키징되어배포됨.

Page 26: Snaps on Ubuntu Desktop

Snapping your appLet’s snap simplenote-electron for example.

https://github.com/Automattic/simplenote-electron

Page 27: Snaps on Ubuntu Desktop

미리빌드된 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 생성

Page 28: Snaps on Ubuntu Desktop

Skeleton ofsnapcraft.yaml

Page 29: Snaps on Ubuntu Desktop

Editedcontent

(example)

Page 30: Snaps on Ubuntu Desktop

Building & Running

snapcraftsudo snap install simplenote_1.0.8_amd64.snap

simplenote

Page 31: Snaps on Ubuntu Desktop

dashboard.snapcraft.io

Page 32: Snaps on Ubuntu Desktop

uApp Explorer(uappexplorer.com)

Page 33: Snaps on Ubuntu Desktop

Available as a Snap

Page 34: Snaps on Ubuntu Desktop

• Snapcraft : https://snapcraft.io/• Snapcrafters GitHub : https://github.com/snapcrafters

• Snapcraft YouTube : https://www.youtube.com/channel/UCcH6oAZ0FOSVUMUAojHtFBg

Page 35: Snaps on Ubuntu Desktop

In nearfuture…

apt 라니옛날분이시네

Page 36: Snaps on Ubuntu Desktop

Thank you.Youngbin Han <[email protected]>

Leader, Ubuntu Korea Community

https://launchpad.net/~sukso96100