snaps on ubuntu desktop
TRANSCRIPT
Snaps on Ubuntu DesktopYoungbin Han <[email protected]>
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 <[email protected]>
Leader, Ubuntu Korea Community
https://launchpad.net/~sukso96100