2016年3月3日 星期四

snap 套件包簡介

Canonical 公司最近提供了一種叫做 snap 的套件包格式,目的是希望可以改善開發 IoT 裝置的流程,甚至是進一步培育 IoT 的 App ecosystem。綜觀整個 snap 的孕育過程,snap 的前身似乎可以說是 click package,後來再針對 snappy 架構** 而改良的格式。以 snappy、Ubuntu core***、和 snap package 三者構成的開發與系統環境,成為 Canonical 公司的產品重心。這兩天 Canonical 和 MTK 合作的消息便是一個這樣的例子。

** snappy 是系統架構的方式。意指是一種使用 snap 當作系統管理(安裝、移除軟體)單位的手段。
*** 最常見的詞是 snappy Ubuntu Core,因為 snappy 架構常常和 Ubuntu Core 搭配使用。解讀方式是 snappy (形容詞) Ubuntu Core(名詞),就是 墊基於 Ubuntu Core 之上的 snappy 架構。Ubuntu Core 和以往的 Ubuntu (現在稱為 Ubuntu Desktop)的架構不同,細節請參考官方網頁


今天要介紹打包一個 snap。

實作上官方網頁其實寫得很清楚了,基本上下面的內容直接是取自與摘要該網頁 XD


  • 打包的工具叫做 snapcraft。Trusty 上面沒有,可以透過增加 PPA 來安裝。(我自己有試過編 github 上面的 source code 來玩,但不知道為什麼會 crash;我推測是因為最近自己系統上的 python 被我有點弄髒了 =.= )
  • 打包的設定寫在 snapcraft.yaml,這基本上可以類比於 debian/rules 這類型的檔案。
  • snapcraft 五大步驟是:pull build stage strip snap, 合稱 assemble
  • 概念上就是通通摻在一起做撒尿牛完:有點像是編靜態 shared library,把所有需要的東西拉下來、編譯、踢掉執行階段用不到的 binary、把剩下的 binary 弄成一包。這樣的設計應該是為了 IoT device 而做的。(是的,我也推測會相對肥大)