SlideShare a Scribd company logo
1 of 36
Download to read offline
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

More Related Content

What's hot

윈도우에서 도커 설치
윈도우에서 도커 설치윈도우에서 도커 설치
윈도우에서 도커 설치choi sungwook
 
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
게임 개발에 도움을 주는 CruiseControl.NET과 Windows TerminalOnGameServer
 
Open Platform Tizen and Web, 오픈 플랫폼 타이젠과 웹
Open Platform Tizen and Web, 오픈 플랫폼 타이젠과 웹Open Platform Tizen and Web, 오픈 플랫폼 타이젠과 웹
Open Platform Tizen and Web, 오픈 플랫폼 타이젠과 웹Daniel Juyung Seo
 
버추얼박스에 우분투그놈 14.04LTS 설치하기
버추얼박스에 우분투그놈 14.04LTS 설치하기버추얼박스에 우분투그놈 14.04LTS 설치하기
버추얼박스에 우분투그놈 14.04LTS 설치하기licubeclub
 
docker_quick_start
docker_quick_startdocker_quick_start
docker_quick_startSukjin Yun
 
[Nomad connection]docker seminar 15.10.08
[Nomad connection]docker seminar 15.10.08[Nomad connection]docker seminar 15.10.08
[Nomad connection]docker seminar 15.10.08Nomad Connection, Inc.
 
코분투메뉴얼 10.04 Cobuntu Manual
코분투메뉴얼 10.04 Cobuntu Manual코분투메뉴얼 10.04 Cobuntu Manual
코분투메뉴얼 10.04 Cobuntu ManualUbuntu Korea Community
 
caanoo Ernice
caanoo Ernicecaanoo Ernice
caanoo Ernicejumiss
 
Virtual Box 게스트 확장설치
Virtual Box 게스트 확장설치Virtual Box 게스트 확장설치
Virtual Box 게스트 확장설치sibalmonkeys
 
Tensorflow 설치 가이드 for Windows10
Tensorflow 설치 가이드 for Windows10Tensorflow 설치 가이드 for Windows10
Tensorflow 설치 가이드 for Windows10Hwanhee Kim
 
강분도 - 공개SW개발과 우분투 (2010Y10M05D)
강분도 - 공개SW개발과 우분투 (2010Y10M05D)강분도 - 공개SW개발과 우분투 (2010Y10M05D)
강분도 - 공개SW개발과 우분투 (2010Y10M05D)Ubuntu Korea Community
 
오픈소스 맛보기 - 정민우님
오픈소스 맛보기 - 정민우님오픈소스 맛보기 - 정민우님
오픈소스 맛보기 - 정민우님NAVER D2
 
[BRK30136] Windows 기반 백엔드 개발자를 위한 컨테이너 시작하기 / Introduction to Containers For ...
[BRK30136] Windows 기반 백엔드 개발자를 위한 컨테이너 시작하기 / Introduction to Containers For ...[BRK30136] Windows 기반 백엔드 개발자를 위한 컨테이너 시작하기 / Introduction to Containers For ...
[BRK30136] Windows 기반 백엔드 개발자를 위한 컨테이너 시작하기 / Introduction to Containers For ...Jung Hyun Nam
 
Virtual Development Environment Setting
Virtual Development Environment SettingVirtual Development Environment Setting
Virtual Development Environment SettingKwangyoun Jung
 
리눅스 시작하기
리눅스 시작하기리눅스 시작하기
리눅스 시작하기Pete Lee
 

What's hot (20)

윈도우에서 도커 설치
윈도우에서 도커 설치윈도우에서 도커 설치
윈도우에서 도커 설치
 
2주차 linux
2주차 linux2주차 linux
2주차 linux
 
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
 
Open Platform Tizen and Web, 오픈 플랫폼 타이젠과 웹
Open Platform Tizen and Web, 오픈 플랫폼 타이젠과 웹Open Platform Tizen and Web, 오픈 플랫폼 타이젠과 웹
Open Platform Tizen and Web, 오픈 플랫폼 타이젠과 웹
 
버추얼박스에 우분투그놈 14.04LTS 설치하기
버추얼박스에 우분투그놈 14.04LTS 설치하기버추얼박스에 우분투그놈 14.04LTS 설치하기
버추얼박스에 우분투그놈 14.04LTS 설치하기
 
docker_quick_start
docker_quick_startdocker_quick_start
docker_quick_start
 
[Nomad connection]docker seminar 15.10.08
[Nomad connection]docker seminar 15.10.08[Nomad connection]docker seminar 15.10.08
[Nomad connection]docker seminar 15.10.08
 
Maker 오해와 진실
Maker 오해와 진실Maker 오해와 진실
Maker 오해와 진실
 
코분투메뉴얼 10.04 Cobuntu Manual
코분투메뉴얼 10.04 Cobuntu Manual코분투메뉴얼 10.04 Cobuntu Manual
코분투메뉴얼 10.04 Cobuntu Manual
 
caanoo Ernice
caanoo Ernicecaanoo Ernice
caanoo Ernice
 
Virtual Box 게스트 확장설치
Virtual Box 게스트 확장설치Virtual Box 게스트 확장설치
Virtual Box 게스트 확장설치
 
Tensorflow 설치 가이드 for Windows10
Tensorflow 설치 가이드 for Windows10Tensorflow 설치 가이드 for Windows10
Tensorflow 설치 가이드 for Windows10
 
강분도 - 공개SW개발과 우분투 (2010Y10M05D)
강분도 - 공개SW개발과 우분투 (2010Y10M05D)강분도 - 공개SW개발과 우분투 (2010Y10M05D)
강분도 - 공개SW개발과 우분투 (2010Y10M05D)
 
RZDESK-Docker hackday
RZDESK-Docker hackdayRZDESK-Docker hackday
RZDESK-Docker hackday
 
Docker
DockerDocker
Docker
 
오픈소스 맛보기 - 정민우님
오픈소스 맛보기 - 정민우님오픈소스 맛보기 - 정민우님
오픈소스 맛보기 - 정민우님
 
Introduce Cobuntu 9.04
Introduce Cobuntu 9.04Introduce Cobuntu 9.04
Introduce Cobuntu 9.04
 
[BRK30136] Windows 기반 백엔드 개발자를 위한 컨테이너 시작하기 / Introduction to Containers For ...
[BRK30136] Windows 기반 백엔드 개발자를 위한 컨테이너 시작하기 / Introduction to Containers For ...[BRK30136] Windows 기반 백엔드 개발자를 위한 컨테이너 시작하기 / Introduction to Containers For ...
[BRK30136] Windows 기반 백엔드 개발자를 위한 컨테이너 시작하기 / Introduction to Containers For ...
 
Virtual Development Environment Setting
Virtual Development Environment SettingVirtual Development Environment Setting
Virtual Development Environment Setting
 
리눅스 시작하기
리눅스 시작하기리눅스 시작하기
리눅스 시작하기
 

Viewers also liked

게임해킹의 관심을 끄는데 미연시만한게 없죠
게임해킹의 관심을 끄는데 미연시만한게 없죠게임해킹의 관심을 끄는데 미연시만한게 없죠
게임해킹의 관심을 끄는데 미연시만한게 없죠Ubuntu Korea Community
 
300초만에 알아가는 Git 관련 꿀팁
300초만에 알아가는 Git 관련 꿀팁300초만에 알아가는 Git 관련 꿀팁
300초만에 알아가는 Git 관련 꿀팁Ubuntu Korea Community
 
Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로
Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로
Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로Ubuntu Korea Community
 
FPGA 개발하면서 겪은 삽질에 대한 총 정리
FPGA 개발하면서 겪은 삽질에 대한 총 정리FPGA 개발하면서 겪은 삽질에 대한 총 정리
FPGA 개발하면서 겪은 삽질에 대한 총 정리Ubuntu Korea Community
 
How and why we have integrated Slack and IRC
How and why we have integrated Slack and IRCHow and why we have integrated Slack and IRC
How and why we have integrated Slack and IRCUbuntu Korea Community
 
런치패드를 통한 쉽고 재미있는 우분투 번역
런치패드를 통한 쉽고 재미있는 우분투 번역런치패드를 통한 쉽고 재미있는 우분투 번역
런치패드를 통한 쉽고 재미있는 우분투 번역Ubuntu Korea Community
 
Linux Kernel 개발참여방법과 문화 (Contribution)
Linux Kernel 개발참여방법과 문화 (Contribution)Linux Kernel 개발참여방법과 문화 (Contribution)
Linux Kernel 개발참여방법과 문화 (Contribution)Ubuntu Korea Community
 
synthetic aperture radar
synthetic aperture radarsynthetic aperture radar
synthetic aperture radarAmit Rastogi
 

Viewers also liked (17)

고등수학 스터디 결과발표
고등수학 스터디 결과발표고등수학 스터디 결과발표
고등수학 스터디 결과발표
 
게임해킹의 관심을 끄는데 미연시만한게 없죠
게임해킹의 관심을 끄는데 미연시만한게 없죠게임해킹의 관심을 끄는데 미연시만한게 없죠
게임해킹의 관심을 끄는데 미연시만한게 없죠
 
300초만에 알아가는 Git 관련 꿀팁
300초만에 알아가는 Git 관련 꿀팁300초만에 알아가는 Git 관련 꿀팁
300초만에 알아가는 Git 관련 꿀팁
 
Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로
Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로
Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로
 
How to manage Azure with open source
How to manage Azure with open sourceHow to manage Azure with open source
How to manage Azure with open source
 
FPGA 개발하면서 겪은 삽질에 대한 총 정리
FPGA 개발하면서 겪은 삽질에 대한 총 정리FPGA 개발하면서 겪은 삽질에 대한 총 정리
FPGA 개발하면서 겪은 삽질에 대한 총 정리
 
HanJP IM Project 개요
HanJP IM Project 개요HanJP IM Project 개요
HanJP IM Project 개요
 
LTE-M 을 이용한 IoT 통신
LTE-M 을 이용한 IoT 통신LTE-M 을 이용한 IoT 통신
LTE-M 을 이용한 IoT 통신
 
How and why we have integrated Slack and IRC
How and why we have integrated Slack and IRCHow and why we have integrated Slack and IRC
How and why we have integrated Slack and IRC
 
DNS & Mail Server Study
DNS & Mail Server StudyDNS & Mail Server Study
DNS & Mail Server Study
 
Ubuntu's Unity : Birth to Death
Ubuntu's Unity : Birth to DeathUbuntu's Unity : Birth to Death
Ubuntu's Unity : Birth to Death
 
Ubuntu for make things
Ubuntu for make thingsUbuntu for make things
Ubuntu for make things
 
변태적인 터미널 사용방법
변태적인 터미널 사용방법변태적인 터미널 사용방법
변태적인 터미널 사용방법
 
런치패드를 통한 쉽고 재미있는 우분투 번역
런치패드를 통한 쉽고 재미있는 우분투 번역런치패드를 통한 쉽고 재미있는 우분투 번역
런치패드를 통한 쉽고 재미있는 우분투 번역
 
Linux Kernel 개발참여방법과 문화 (Contribution)
Linux Kernel 개발참여방법과 문화 (Contribution)Linux Kernel 개발참여방법과 문화 (Contribution)
Linux Kernel 개발참여방법과 문화 (Contribution)
 
Pratik
PratikPratik
Pratik
 
synthetic aperture radar
synthetic aperture radarsynthetic aperture radar
synthetic aperture radar
 

Similar to Snaps on Ubuntu Desktop

리눅스에 대하여
리눅스에 대하여리눅스에 대하여
리눅스에 대하여ETRIBE_STG
 
장태희 - General Trend, Ubuntu Based Platform (대세는 우분투 기반, 2014Y11M05D)
장태희 - General Trend, Ubuntu Based Platform (대세는 우분투 기반, 2014Y11M05D)장태희 - General Trend, Ubuntu Based Platform (대세는 우분투 기반, 2014Y11M05D)
장태희 - General Trend, Ubuntu Based Platform (대세는 우분투 기반, 2014Y11M05D)Ubuntu Korea Community
 
What is linux(리눅스란 무엇인가)
What is linux(리눅스란 무엇인가)What is linux(리눅스란 무엇인가)
What is linux(리눅스란 무엇인가)Youngbin Han
 
시스템 관리자를 위한 리눅스강의 1강 20130203
시스템 관리자를 위한 리눅스강의 1강 20130203시스템 관리자를 위한 리눅스강의 1강 20130203
시스템 관리자를 위한 리눅스강의 1강 20130203doo rip choi
 
개방형 데스크톱 OS 기술동향
개방형 데스크톱 OS 기술동향개방형 데스크톱 OS 기술동향
개방형 데스크톱 OS 기술동향Kevin Kim
 
OpenStack DevStack Install - 1부 (All-in-one)
OpenStack DevStack Install - 1부 (All-in-one)OpenStack DevStack Install - 1부 (All-in-one)
OpenStack DevStack Install - 1부 (All-in-one)Ian Choi
 
[231]나는서버를썰터이니너는개발만하여라 양지욱
[231]나는서버를썰터이니너는개발만하여라 양지욱[231]나는서버를썰터이니너는개발만하여라 양지욱
[231]나는서버를썰터이니너는개발만하여라 양지욱NAVER D2
 
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기Chanwoong Kim
 
Docker at Deview 2013
Docker at Deview 2013Docker at Deview 2013
Docker at Deview 2013Jude Kim
 
Docker at Deview 2013
Docker at Deview 2013Docker at Deview 2013
Docker at Deview 2013Jude Kim
 
[OpenInfra Days Korea 2018] (Track 3) Zuul v3 - OpenStack 인프라 코드로 CI/CD 살펴보기
[OpenInfra Days Korea 2018] (Track 3) Zuul v3 - OpenStack 인프라 코드로 CI/CD 살펴보기[OpenInfra Days Korea 2018] (Track 3) Zuul v3 - OpenStack 인프라 코드로 CI/CD 살펴보기
[OpenInfra Days Korea 2018] (Track 3) Zuul v3 - OpenStack 인프라 코드로 CI/CD 살펴보기OpenStack Korea Community
 
3.ubuntu custom
3.ubuntu custom3.ubuntu custom
3.ubuntu customsprdd
 
[12월 번역 Meetup] Hands on-lab 오픈스택: 번역으로 contributor 활동하기
[12월 번역 Meetup] Hands on-lab 오픈스택: 번역으로 contributor 활동하기[12월 번역 Meetup] Hands on-lab 오픈스택: 번역으로 contributor 활동하기
[12월 번역 Meetup] Hands on-lab 오픈스택: 번역으로 contributor 활동하기OpenStack Korea Community
 
데이터분석의 길 2: “고수는 최고의 연장을 사용한다” (툴채인)
데이터분석의 길 2:  “고수는 최고의 연장을 사용한다” (툴채인)데이터분석의 길 2:  “고수는 최고의 연장을 사용한다” (툴채인)
데이터분석의 길 2: “고수는 최고의 연장을 사용한다” (툴채인)Jaimie Kwon (권재명)
 
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발Jeongkyu Shin
 
The growth process of open source projects
The growth process of open source projectsThe growth process of open source projects
The growth process of open source projectsKevin Kim
 

Similar to Snaps on Ubuntu Desktop (20)

리눅스에 대하여
리눅스에 대하여리눅스에 대하여
리눅스에 대하여
 
장태희 - General Trend, Ubuntu Based Platform (대세는 우분투 기반, 2014Y11M05D)
장태희 - General Trend, Ubuntu Based Platform (대세는 우분투 기반, 2014Y11M05D)장태희 - General Trend, Ubuntu Based Platform (대세는 우분투 기반, 2014Y11M05D)
장태희 - General Trend, Ubuntu Based Platform (대세는 우분투 기반, 2014Y11M05D)
 
What is linux(리눅스란 무엇인가)
What is linux(리눅스란 무엇인가)What is linux(리눅스란 무엇인가)
What is linux(리눅스란 무엇인가)
 
시스템 관리자를 위한 리눅스강의 1강 20130203
시스템 관리자를 위한 리눅스강의 1강 20130203시스템 관리자를 위한 리눅스강의 1강 20130203
시스템 관리자를 위한 리눅스강의 1강 20130203
 
CentOS/RHEL to openSUSE Leap/SLES
CentOS/RHEL to openSUSE Leap/SLESCentOS/RHEL to openSUSE Leap/SLES
CentOS/RHEL to openSUSE Leap/SLES
 
개방형 데스크톱 OS 기술동향
개방형 데스크톱 OS 기술동향개방형 데스크톱 OS 기술동향
개방형 데스크톱 OS 기술동향
 
JetsonTX2 Python
 JetsonTX2 Python  JetsonTX2 Python
JetsonTX2 Python
 
OpenStack DevStack Install - 1부 (All-in-one)
OpenStack DevStack Install - 1부 (All-in-one)OpenStack DevStack Install - 1부 (All-in-one)
OpenStack DevStack Install - 1부 (All-in-one)
 
[231]나는서버를썰터이니너는개발만하여라 양지욱
[231]나는서버를썰터이니너는개발만하여라 양지욱[231]나는서버를썰터이니너는개발만하여라 양지욱
[231]나는서버를썰터이니너는개발만하여라 양지욱
 
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
 
Native A/V
Native A/VNative A/V
Native A/V
 
Docker at Deview 2013
Docker at Deview 2013Docker at Deview 2013
Docker at Deview 2013
 
Docker at Deview 2013
Docker at Deview 2013Docker at Deview 2013
Docker at Deview 2013
 
[OpenInfra Days Korea 2018] (Track 3) Zuul v3 - OpenStack 인프라 코드로 CI/CD 살펴보기
[OpenInfra Days Korea 2018] (Track 3) Zuul v3 - OpenStack 인프라 코드로 CI/CD 살펴보기[OpenInfra Days Korea 2018] (Track 3) Zuul v3 - OpenStack 인프라 코드로 CI/CD 살펴보기
[OpenInfra Days Korea 2018] (Track 3) Zuul v3 - OpenStack 인프라 코드로 CI/CD 살펴보기
 
3.ubuntu custom
3.ubuntu custom3.ubuntu custom
3.ubuntu custom
 
[12월 번역 Meetup] Hands on-lab 오픈스택: 번역으로 contributor 활동하기
[12월 번역 Meetup] Hands on-lab 오픈스택: 번역으로 contributor 활동하기[12월 번역 Meetup] Hands on-lab 오픈스택: 번역으로 contributor 활동하기
[12월 번역 Meetup] Hands on-lab 오픈스택: 번역으로 contributor 활동하기
 
데이터분석의 길 2: “고수는 최고의 연장을 사용한다” (툴채인)
데이터분석의 길 2:  “고수는 최고의 연장을 사용한다” (툴채인)데이터분석의 길 2:  “고수는 최고의 연장을 사용한다” (툴채인)
데이터분석의 길 2: “고수는 최고의 연장을 사용한다” (툴채인)
 
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
 
In c
In cIn c
In c
 
The growth process of open source projects
The growth process of open source projectsThe growth process of open source projects
The growth process of open source projects
 

More from Ubuntu Korea Community

권총 사격하러 우분투 써밋 참가한 썰.txt
 권총 사격하러 우분투 써밋 참가한 썰.txt  권총 사격하러 우분투 써밋 참가한 썰.txt
권총 사격하러 우분투 써밋 참가한 썰.txt Ubuntu Korea Community
 
머신러닝/딥러닝 개발자/연구자에게 필요한 개발/연구 환경
머신러닝/딥러닝 개발자/연구자에게 필요한 개발/연구 환경머신러닝/딥러닝 개발자/연구자에게 필요한 개발/연구 환경
머신러닝/딥러닝 개발자/연구자에게 필요한 개발/연구 환경Ubuntu Korea Community
 
우분투한국커뮤니티 2022년 활동 정리
우분투한국커뮤니티 2022년 활동 정리우분투한국커뮤니티 2022년 활동 정리
우분투한국커뮤니티 2022년 활동 정리Ubuntu Korea Community
 
우분투한국커뮤니티 2022년 신년회
우분투한국커뮤니티 2022년 신년회우분투한국커뮤니티 2022년 신년회
우분투한국커뮤니티 2022년 신년회Ubuntu Korea Community
 
Memory Attack - The Memory Attack Techniques
Memory Attack - The Memory Attack TechniquesMemory Attack - The Memory Attack Techniques
Memory Attack - The Memory Attack TechniquesUbuntu Korea Community
 
Python을 이용한 Linux Desktop Application
Python을 이용한 Linux Desktop ApplicationPython을 이용한 Linux Desktop Application
Python을 이용한 Linux Desktop ApplicationUbuntu Korea Community
 
케라스와 함께하는 재밌는 딥러닝 활용 사례들
케라스와 함께하는 재밌는 딥러닝 활용 사례들케라스와 함께하는 재밌는 딥러닝 활용 사례들
케라스와 함께하는 재밌는 딥러닝 활용 사례들Ubuntu Korea Community
 
딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투Ubuntu Korea Community
 
9월 서울지역 세미나 GPG 키사이닝 파티
9월 서울지역 세미나 GPG 키사이닝 파티9월 서울지역 세미나 GPG 키사이닝 파티
9월 서울지역 세미나 GPG 키사이닝 파티Ubuntu Korea Community
 
우분투한국커뮤니티 2018년도 상반기 활동 보고
우분투한국커뮤니티 2018년도 상반기 활동 보고우분투한국커뮤니티 2018년도 상반기 활동 보고
우분투한국커뮤니티 2018년도 상반기 활동 보고Ubuntu Korea Community
 
새로운 Libhanjp 라이브러리 구조
새로운 Libhanjp 라이브러리 구조새로운 Libhanjp 라이브러리 구조
새로운 Libhanjp 라이브러리 구조Ubuntu Korea Community
 
스타트업에서 하드웨어 개발 프로세스 도입하기
스타트업에서 하드웨어 개발 프로세스 도입하기스타트업에서 하드웨어 개발 프로세스 도입하기
스타트업에서 하드웨어 개발 프로세스 도입하기Ubuntu Korea Community
 

More from Ubuntu Korea Community (20)

권총 사격하러 우분투 써밋 참가한 썰.txt
 권총 사격하러 우분투 써밋 참가한 썰.txt  권총 사격하러 우분투 써밋 참가한 썰.txt
권총 사격하러 우분투 써밋 참가한 썰.txt
 
머신러닝/딥러닝 개발자/연구자에게 필요한 개발/연구 환경
머신러닝/딥러닝 개발자/연구자에게 필요한 개발/연구 환경머신러닝/딥러닝 개발자/연구자에게 필요한 개발/연구 환경
머신러닝/딥러닝 개발자/연구자에게 필요한 개발/연구 환경
 
우분투한국커뮤니티 2022년 활동 정리
우분투한국커뮤니티 2022년 활동 정리우분투한국커뮤니티 2022년 활동 정리
우분투한국커뮤니티 2022년 활동 정리
 
우분투한국커뮤니티 2022년 신년회
우분투한국커뮤니티 2022년 신년회우분투한국커뮤니티 2022년 신년회
우분투한국커뮤니티 2022년 신년회
 
Ubuntu Korea at FOSSASIA Summit 2022
Ubuntu Korea at FOSSASIA Summit 2022Ubuntu Korea at FOSSASIA Summit 2022
Ubuntu Korea at FOSSASIA Summit 2022
 
Overview of the Flatpak
Overview of the FlatpakOverview of the Flatpak
Overview of the Flatpak
 
Usage of the MQTT
Usage of the MQTTUsage of the MQTT
Usage of the MQTT
 
Open Source and the License
Open Source and the LicenseOpen Source and the License
Open Source and the License
 
Memory Attack - The Memory Attack Techniques
Memory Attack - The Memory Attack TechniquesMemory Attack - The Memory Attack Techniques
Memory Attack - The Memory Attack Techniques
 
Python을 이용한 Linux Desktop Application
Python을 이용한 Linux Desktop ApplicationPython을 이용한 Linux Desktop Application
Python을 이용한 Linux Desktop Application
 
나의 우분투 이야기
나의 우분투 이야기나의 우분투 이야기
나의 우분투 이야기
 
Malware Dataset & Ubuntu
Malware Dataset & UbuntuMalware Dataset & Ubuntu
Malware Dataset & Ubuntu
 
케라스와 함께하는 재밌는 딥러닝 활용 사례들
케라스와 함께하는 재밌는 딥러닝 활용 사례들케라스와 함께하는 재밌는 딥러닝 활용 사례들
케라스와 함께하는 재밌는 딥러닝 활용 사례들
 
딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투
 
9월 서울지역 세미나 GPG 키사이닝 파티
9월 서울지역 세미나 GPG 키사이닝 파티9월 서울지역 세미나 GPG 키사이닝 파티
9월 서울지역 세미나 GPG 키사이닝 파티
 
우분투한국커뮤니티 2018년도 상반기 활동 보고
우분투한국커뮤니티 2018년도 상반기 활동 보고우분투한국커뮤니티 2018년도 상반기 활동 보고
우분투한국커뮤니티 2018년도 상반기 활동 보고
 
새로운 Libhanjp 라이브러리 구조
새로운 Libhanjp 라이브러리 구조새로운 Libhanjp 라이브러리 구조
새로운 Libhanjp 라이브러리 구조
 
스타트업에서 하드웨어 개발 프로세스 도입하기
스타트업에서 하드웨어 개발 프로세스 도입하기스타트업에서 하드웨어 개발 프로세스 도입하기
스타트업에서 하드웨어 개발 프로세스 도입하기
 
기계들의 소셜 미디어, MQTT
기계들의 소셜 미디어, MQTT기계들의 소셜 미디어, MQTT
기계들의 소셜 미디어, MQTT
 
모바일에 딥러닝 심기
모바일에 딥러닝 심기모바일에 딥러닝 심기
모바일에 딥러닝 심기
 

Snaps on Ubuntu Desktop

  • 1. Snaps on Ubuntu Desktop Youngbin Han <sukso96100@gmail.com> Leader, Ubuntu Korea Community https://launchpad.net/~sukso96100
  • 2. About me • 한영빈(Youngbin Han) • 성공회대학교 소프트웨어공학과 재학(2016.02~) • 우분투한국커뮤니티 대표(2017.03~) • 생각보다 많이 힘들더군요. 전 대표님들이 본인이 퇴물임을 강조하는 이 유를 알 거 같음… • 그냥 이것저것 관심가는거 합니다. • 요세는 Django, Electron, Docker 를 써보는 중입니다.
  • 3. Index • 전통적인 리눅스 패키지 사용과 문제점 • Snap 에 대한 소개 및 전통적인 리눅스 패키지와 비교 • Ubuntu Desktop 에서의 Snap 근황 • 데스크탑 앱을 Snap 패키지로 빌드하고 배포하기
  • 5. Linux 에서 패키지를 설치하려면? • 설치할 소프트웨어가 해당 배포판에서 패키지로 제공되는지 확인 • 저장소에서 패키지 검색 • 사용중인 배포판의 버전을 지원하는지 확인 • 우분투에서 제공하는 데비안 패키지의 경우 릴리즈별로 제공되는 패키지 가 다름(패키지 이름도 다른 경우가 있음.) • 패키지 관리자로 패키지와 의존성 패키지 설치 • 설치 끝. 사용하면 됨.
  • 6. 문제점 • 사용중인 배포판에서 패키지가 제공되지 않는다면? • 직접 패키지를 빌드해서 설치? • 제공이 되어도 사용중이 배포판 버전에 대해 지원하지 않는다면? • 이걸 언제 다 패키징하냐… • 개발자 입장에서는 사용자가 많아질수록 다양한 배포판을 지원해야 함 • 배포판별로 패키징 방식도 다르고, 제공되는 것도 조금씩 다르다. • 배포판 버전별로도 패키징 해야함.
  • 7. 문제점 • 의존성 문제 • 음… 의존성 패키지까지 잘 깔리면 참 좋은데, 꼭 그러란 법은 없다. • 어떤 패키지는 의존성 패키지의 이전 버전을 요구하고, 또 어떤 패키지는 최신 버전을 요구한다, 그러나 두 버전을 동시에 깔 수가 없다. • 배포판을 최신 버전으로 업그레이드 했는데, 이 버전의 배포판에는 내가 쓰던 프로그램이 요구하는 의존성 패키지를 제공하지 않는다. (으앜)
  • 8. 패키지 업그레이드 중 문제가 발생한다면?
  • 10. PPAs?
  • 11. Click -> Snappy -> Snap • 처음에는 Ubuntu Touch 를 위한 패키지 포멧인, *.click 으로 등장. • Ubuntu 터치가 처음 등장한 Ubuntu 14.04 와 함께 등장. • Click 패키지를 더 발전시켜서 Cloud 와 IoT 로 가져옴 • Click 이 진화하여 Snappy 패키지가 됨 • 범용 리눅스 패키지로 발전. • 데스크탑, 클라우드, 사물인터넷 등 다양한 분야에서 사용. • 이제는 Snap 이라고 불림.
  • 12. 범용 리눅스 패키지(Universal Linux Package) • Snap이 지원되는 모든 리눅스 배포판에서 사용 가능 • 데스크탑, 서버, 클라우드, 디바이스(IoT 등) 용으로 빌드 가능 • 웬만한 용도로는 거의 다 빌드 가능하다고 보면 됩니다. • 한번 빌드해서 Snap 이 지원되는 모든 배포판으로 한번에 배포 • 배포판 버전별로 패키지를 관리 할 필요도 없음.
  • 14. 컨테이너처럼 격리되어 있음 • 기존 리눅스 패키지 처럼 시스템 디렉터리 (/usr/share, /usr/bin 등) 이 아닌, 별도의 전용 경로 (/var/snap)에 모두 설치됨. • 패키지에 필요한 의존성까지 모두 패키지에 포함되어 있음. • 앱에 대한 정보(버전, 의존성 등)을 기술한 snap.yaml과 앱 코드를 포함한 SquashFS 로 구성되어 있음. • Confinements 와 Interfaces 를 이용해서 패키지의 권한이나 동 작 등을 제한할 수 있음.
  • 15. Video Classic, devmode, and strict 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 만
  • 20. 2016.04 ~ • Ubuntu 16.04 LTS 부터 기본으로 탑제됨. • 이전 버전은 따로 저장소에서 받아서 설치 가능. • 우분투 소프트웨어 센터(gnome-software) 에서 snap 패키지를 설치 지원 시작. • 완벽하지는 않음. • Unity 연동 제공 • Snap Desktop Launcher
  • 21. Snap Desktop Launcher • https://github.com/ubuntu/snapcraft-desktop-helpers • Snap 포맷으로 패키징된 데스크탑 앱을 위한 데스크탑 연동 도구.
  • 22. 2016.10 ~ • Unity 8 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. GNOME as a Snap!
  • 25. In Ubuntu 17.10? • 우분투 소프트웨어 센터 • Editor’s Picks 부분에 오직 Snap 앱만 표시. • Featured 부분에 Snap 앱도 표시. • 당연하게도(?) 더 많은 앱이 Snap 으로 패키징 되어 배포됨.
  • 26. Snapping your app Let’s snap 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 생성
  • 30. Building & Running snapcraft sudo snap install simplenote_1.0.8_amd64.snap simplenote
  • 34. • Snapcraft : https://snapcraft.io/ • Snapcrafters GitHub : https://github.com/snapcrafters • Snapcraft YouTube : https://www.youtube.com/channel/UCcH6oAZ0FOSVUMUAoj HtFBg
  • 36. Thank you. Youngbin Han <sukso96100@gmail.com> Leader, Ubuntu Korea Community https://launchpad.net/~sukso96100