Ubuntu Snaps
Ubuntu Snaps 是 Ubuntu 的母公司 Canonical 於 2016 年 4 月釋出 Ubuntu16.04 LTS(LongTermSupport,長期支援版)時引入的一種容器化的軟體包格式。自 Ubuntu16.04 LTS 起,Ubuntu 作業系統可以同時支援 Snap 及 Debian 這兩種格式的安裝包。
與傳統的 dpkg/apt 有著很大的區別。Ubuntu Snaps 可以讓開發者將他們的軟體更新包隨時釋出給使用者,而不必等待 Ubuntu 自身的發行版更新週期。其次 Snap 應用可以同時安裝多個版本的軟體而不會互相干擾,一個 Snap 應用的安裝包擁有所有依賴的檔案和庫,各個 Snap 應用之間完全獨立。比如同時安裝 Python2.7 和 Python3.3 而不會造成衝突,這就是所謂的容器化軟體包格式。由此帶來的問題就是 Snap 應用會佔用更多的磁碟空間。
snapd 是 Snaps 軟體包的管理用具,指令為 snap
。Snapcraft 是開發人員將其程式打包為 Snap 格式的工具,可以從 GitHub 倉庫自動構建,指令為 snapcraft
。
REFS:
- https://snapcraft.io/
- https://tutorials.ubuntu.com/tutorial/basic-snap-usage#0
- https://tutorials.ubuntu.com/tutorial/advanced-snap-usage#0
Snaps 工具使用示例
安裝 Snaps 支援:
sudo apt update
sudo apt install snapd
sudo apt install snapcraft
登入:使用 Ubuntu One 賬戶
snap login your@email.lol
從 SnapStore 尋找釋出在商店裡的 Snap 應用:
sudo snap find
sudo snap find | grep $SNAP_NAME
安裝一個 Snap 應用:
sudo snap install $SNAP_NAME
解除安裝一個 Snap 應用:
sudo snap remove $SNAP_NAME
檢視一個 Snap 的詳細資訊:
snap info $SNAP_NAME
顯示已安裝的 Snap 應用列表:
sudo snap list
更新一個已安裝的 Snap 應用:
sudo snap refresh $SNAP_NAME
還原 Snap 應用到以前安裝的版本:
sudo snap revert $SNAP_NAME
編譯一個 Snap 應用
編譯一個 Snap 應用:如果你開發或擁有了一個 Snap 專案,那麼你只需要執行以下指令就會得到一個副檔名為 .snap 的檔案,這個就是我們所需要的 Snap 應用安裝檔案。
$ cd <your_poject_dict>
$ snapcraft
在 snapcraft
打包的過程中,它經歷如下的幾個階段:
- pull: Download or retrieve artifacts defined for a part.
- build: Build artifacts defined for a part. Build systems capable of running parallel build jobs will do so unless “–no-parallel-build” is specified.
- stage: Stage the part’s built artifacts into the common staging area.
- prime: Final copy and preparation for the snap.
- snap: Create a snap.
清除一個 Snap 應用在編譯過程中的檔案:
napcraft clean