快轉到主要內容

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

分類   Linux系統 Linux使用技巧
標籤   Snap Ubuntu
🗓️ 民國113年 甲辰年
✍ 切換正體/簡體字
目錄

離線安裝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自訂更新時間。

相關文章

Linux如何解除安裝軟體並刪除乾淨
分類   Linux系統 Linux使用技巧
標籤   Ubuntu Flatpak Snap AppImage
新增第二個硬碟,擴充Ubuntu LVM的根目錄空間
分類   Linux系統 Linux使用技巧
標籤   Logical Volume Management Ubuntu
Ubuntu LTS如何安裝Nvidia顯示卡驅動、CUDA、NVIDIA Container Toolkit套件
分類   Linux系統 Linux使用技巧
標籤   Ubuntu Nvidia

留言板

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

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

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