快轉到主要內容

Linux系統的Snap是什麼?跨發行版軟體套件管理員使用方法

Linux系統 Linux好用軟體 Snap Ubuntu
🗓️ 民國112年 癸卯年
✍ 切換正體/簡體字
目錄

Snap是什麼呢?這是Linux系統的一種軟體打包格式兼套件管理系統,由Ubuntu背後的公司Canonical推動。

Snap管理系統是為了解決在不同Linux發行版安裝軟體的問題,將軟體需要的依賴套件都包在一起,即可保證每個發行版都到安裝一致的軟體版本。

甚至在舊版本的Ubuntu LTS系統也可以用Snap安裝到最新版軟體,而不至於弄壞系統套件依賴。

不知道有什麼Snap軟體好裝?你可以先在 Snapcraft瀏覽編輯精選的好用軟體。Snap除了用來裝圖形應用程式之外,也有很多純文字工具提供Snap版本,方便於伺服器環境使用。Snap本身有一套沙盒的權限系統,可進一步增強系統安全性。

本文介紹Snapd與Snap的用法。

1. 安裝Snapd
#

Snap軟體依賴「Snapd」來管理套件。Snapd目前只有Ubuntu、Ubuntu Core、Ubuntu touch、Manjaro、openSUSE有內建,如果你使用這些發行版可以跳過這一段。

沒內建Snapd的Linux發行版要自行安裝。Snapd僅支援使用Systemd的Linux發行版,所以Alpine Linux和MX Linux無法裝Snapd。

Gentoo從 官方軟體庫編譯Snapd

Arch Linux透過 AUR安裝Snapd

Fedora 從DNF安裝

  1. 如果你的Linux系統沒有任何安全機制,建議安裝 AppArmor用於管理Snap權限,增強安全性。

  2. 在安裝好Snap後,記得設定Snapd開機服務

sudo systemctl enable snapd.apparmor.service
sudo systemctl enable snapd.socket
  1. 重開機後便可以開始安裝Snap軟體了。

2. 如何安裝Snap軟體
#

在安裝Snapd後,推薦安裝Snap Store,方便以圖形化方式安裝軟體。

  1. 使用此指令從Snap套件庫安裝Snap Store:
sudo snap install snap-store
  1. 目前Snap Store是由Canonical經營,上面的有許多開發者親自發布的軟體(綠勾勾)。Snap Store的軟體也可以在 SnapCraft網頁找到

  2. 在軟體安裝頁面,右上角可以讓你選擇要裝穩定版(stable)還是測試版(beta)的軟體

  3. 有趣的是,Snap Store的軟體網頁會顯示下載此軟體的用戶來自哪些國家,和他們使用的發行版。

3. Snap常用指令
#

如果你覺得從Snap Store點選太慢,不妨使用指令管理更新。

列出目前已安裝的Snap軟體:

sudo snap list

更新全部的Snap軟體:

sudo snap refresh

Snap預設會自動在背景下載軟體更新,如果要停用自動更新,使用--hold--unhold引數開關自動更新:

# 停用全域自動更新
snap refresh --hold

# 僅停用Firefox的自動更新
snap refresh --hold firefox

# 啟用自動更新
snap refresh --unhold

搜尋Snap Store上的軟體,例如搜尋Firefox:

snap search firefox

安裝Snap軟體需要加sudo

snap install firefox

Snap軟體安裝後應會出現在應用程式列表。或者用指令執行Snap軟體:

snap run firefox

執行Snap軟體的時候可以加上參數,例如Firefox開啟隱私視窗:

snap run firefox -private

可以看到執行Snap軟體需要多加snap run的指令,但其實你也可以直接打firefox開啟Snap版的Firefox。

如果執行Snap版firefox的時候顯示找不到指令,使用者要自行將Snap軟體的安裝路徑~/snap/bin加到~/.bashrc

echo "$PATH:~/snap/bin" >> ~/.bashrc
source ~/.bashrc

解除安裝Snap軟體的指令:

sudo snap remove firefox

解除安裝Snap軟體的時候一併刪除使用者資料:

sudo snap remove --purge firefox

4. Snap軟體資料的存放位置
#

Snap軟體通常會隔離應用程式資料的存放位置,包括軟體設定檔等資料。比如Snap版Firefox會把.mozilla目錄放到~/snap/firefox/common/.mozilla/,而非直接在使用者家目錄新增.mozilla

註:Snap版Firefox還是會先嘗試讀取~/.mozilla的資料,該目錄不存在的話才會使用自身的目錄。這可能是Ubuntu想讓使用者能輕鬆從deb版Firefox切換到Snap版Firefox的設計。


如果Snap是以root身份安裝,Snap軟體的資料就是位於/var/snap/Snap軟體名稱/common(SNAP_COMMON)和/var/snap/Snap軟體名稱/版本號(SNAP_DATA)

一般使用者的話,Snap軟體資料位於~/snap/Snap軟體名稱/common(SNAP_COMMON)和~/snap/Snap軟體名稱/版本號(SNAP_DATA)


如果有舊版、用不到的Snap套件在佔空間,你可以直接移除快取檔:

sudo systemctl stop snapd
sudo sh -c 'rm -rf /var/lib/snapd/cache/*'
sudo systemctl start snapd

5. 備份Snap軟體資料
#

Snap提供快照功能,能把目前系統安裝的Snap軟體和資料備份起來,方便日後復原。

  1. 使用sudo snap save製作快照,它會將Snap與軟體資料全部儲存起來。

  2. 快照的數字ID是遞進計算的,使用snap saved列出已儲存的快照,每個快照都會有一組數字。sudo snap forget 快照ID刪除快照。

  3. Snap的快照也可以匯出成zip檔案,方便搬移到其他硬碟儲存,要使用的時候再匯入。

sudo snap export-snapshot 1 my-snapshot.zip

sudo snap import-snapshot my-snapshot.zip
  1. sudo snap restore 快照ID還原快照,還原時資料會直接覆蓋。

  2. 另外Snap可以設定snapshots.automatic.retention的數值,啟用自動製作快照,數值不可低於24小時。數值若設定no就是不要自動製作快照。

snap set system snapshots.automatic.retention=30h

6. 如何調整Snap軟體的權限
#

此處供進階使用者參考,一般使用者應該不需要煩惱這些問題,因為權限應該是Snap軟體打包時就寫好了。軟體若出問題應該先向打包Snap軟體的人回報,Snap Store下方都會有開發者的聯絡資訊。


根據Snap官方文件,每個Snap軟體都有 插頭Plug和插槽Slot,彼此之間使用 界面Interfaces來溝通。

Snap依賴AppArmor來管理權限,如果系統沒有AppArmor,則Snap會以classic模式執行,以上權限系統全部失效,Snap軟體將擁有存取任意系統檔案的權限。

最簡單的權限管理方式就是用Snap Store,在安裝軟體後會多出權限按鈕(Permission),在這裡可控管該軟體的權限,像是禁止Snap軟體存取使用者家目錄、USB裝置、麥克風等等。

Snap Store簡潔明白,但接下來的概念就有點複雜了。

指令snap connections --all查看所有Snap軟體的插座和插槽

使用snap connections firefox指令查看Firefox正在使用的界面。

這裡看到Firefox用firefox:audio-playback插頭連接到:audio-playback的插槽,所以瀏覽器可以播放聲音。又,Firefox有連接:home插槽,所以可以存取使用者家目錄的檔案。

使用snap connect <snap>:<plug interface>指令將二個Snap軟體連在一起,等同額外賦予權限,例如允許Firefox存取系統麥克風

snap connect firefox:audio-record

當然,也可以用snap disconnect <snap>:<plug interface>指令移除Snap軟體的權限,比如禁止Firefox存取系統麥克風:

snap disconnect firefox:audio-record

7. Snap技術細節與爭議
#

參閱 以Snap安裝Linux軟體的優缺點

延伸閱讀
#

相關文章

讓Linux GNOME桌面動起來 ~ 使用Hidamari安裝動態桌布
Linux系統 Linux好用軟體 Dynamic Wallpaper GNOME KDE Plasma Ubuntu
Linux系統安裝Anaconda教學,讓多版本Python共存
Linux系統 Linux好用軟體 Anaconda Python Arch Linux Ubuntu
Ubuntu繁體中文輸入法?改用Fcitx5來輸入中文吧!
Linux系統 Linux好用軟體 Ubuntu

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur連結。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。