快轉到主要內容

離線安裝Ubuntu Snap格式的軟體套件,繞過Snap Store

· 民國113年甲辰年
·
切換繁體/簡體
分類 Linux系統 Linux使用技巧
標籤 Snap Ubuntu
目錄

離線安裝Ubuntu的Snap軟體,將之變成可在離線環境部署。

1. Snap的問題
#

SnapCraft/Snap Store為Canonical經營的Linux應用程式商店,收錄了各式各樣的軟體,全部使用Snap格式打包,方便使用者從統一的商店下載更新。

當你執行snap install指令的時候,系統多半都是從Snap Store下載套件的。

不過Snap Store伺服端是閉源軟體,很多Linux用戶會拿這點攻擊,認為Canonical想壟斷市場,透過這招把人跟Ubuntu的生態系綁死,不如Flatpak的Flathub要開放。

但是你知道嗎,Snap其實是可以離線安裝的。根據Snap的官方文件指出,Snap安裝檔並非強制透過Snap Store分發,使用者能夠用指令安裝其他來源的Snap套件。

為了消除大家的疑惑,The Register的記者直接在2023年Ubuntu Summit活動詢問官方開發者關於Snap離線安裝的問題,並獲得了肯定的答案。Canonical shows how to use Snaps without the Snap Store

這代表什麼呢?你能夠下載Snap檔案,拷貝到隨身碟,再放到不能聯網的Ubuntu環境安裝,當作一種可攜式軟體使用。

還有,Snap Store理論上是能夠自架的,不存在被Canonical壟斷的問題。可惜目前幾乎沒有人這樣幹,所以目前收錄最多Snap軟體的網站依然是Snap Store。

2. 準備Snapd
#

Snap套件的副檔名為.snap,使用SquashFS打包,內含程式二進位檔和依賴套件,還有一個. assert檔案,內含數位簽章與權限資訊。

要安裝Snap套件的電腦必須先裝有Snapd。

儘管理論上可以將Snap解壓縮把二進位檔直接拿出來跑,但是這樣會有動態連結檔路徑的問題,故我們這裡不討論這種玩法。

建議還是裝Snapd,負責管理Snap套件。Ubuntu 16.04以上系統應該就有內建Snapd了。

3. 離線安裝Snap套件
#

然後要取得Snap套件。Snap套件要怎麼取得呢?大部分開發者會選擇把Snap套件上傳到Snap Store,比較少會單獨提供snap套件的。

因此這裡就有兩種安裝路徑。

從Snap Store下載套件並安裝
#

你可以從Snap Store下載Snap,但不要安裝到目前的系統。

所有的軟體都依賴Ubuntu Core,所以必須先下載這個Snap套件

snap download ubuntu-core

接著再下載你要的應用程式套件,例如Firefox

snap download firefox

下載會得到若干.snapt副檔名的依賴套件,還有.assert副檔名的數位簽章。

.
├── ubuntu-core_1797.assert
├── ubuntu-core_1797.snap
├── firefox_5361.assert
└── firefox_5361.snap

把這些檔案複製到另一部Ubuntu電腦。

再用以下指令,匯入數位簽章

sudo snap ack ubuntu-core_1797.assert

sudo snap ack firefox_5361.assert

再安裝Snap套件

sudo snap install ubuntu-core_1797.snap

sudo snap install firefox_5361.snap

從其他網站下載Snap套件安裝
#

部分開發者會在GitHub提供.snap安裝檔,而不是叫你到Snap Store下載,例如……額,我還真找不到幾個開發者這樣幹的XD

這種的Snap套件通常沒有數位簽章,所以你在安裝的時候要加上--dangerous參數,強制安裝。

sudo snap install <.snap檔案> --dangerous

4. 更新離線安裝的Snap套件
#

如果是從Snap Store下載的Snap套件,未來會由Snapd自動更新。

使用--dangerous參數安裝的套件不會收到自動更新,必須重新安裝新版本。

另外,Snapd的自動更新可以用這個指令關掉:

sudo snap refresh --hold

5. 自架Snap Store
#

Snap Store理論上是能夠自架的,可以作為企業或組織內部分發軟體的管道,請參考Dedicated Snap Stores

還有比較特殊的用法,你想從Snap Store下載軟體,但是又不想更新太頻繁,那麼你就可以用快取工具Snap Store Proxy自訂更新時間。

相關文章


此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。

(留言板載入中)這是Giscus留言板,需要Github帳號才能留言。支援Markdown語法,若要上傳圖片請善用外部圖床。您的留言會在Github Discussions向所有人公開。

Click here to edit your comments.

(留言板載入中)這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用外部圖床網站。