
自由軟體、航空、20世紀歷史愛好者。 這裡記載的東西究竟會成為未來的碎片,在那最果之處,反射出匯集各處思念的光芒。 My Blog: https://ivonblog.com
Ubuntu Linux的Snap套件管理系統真的有那麼壞嗎?
繃不住了,我決定安裝Snap… 這是在Linux meme界廣泛傳為夢魘的套件管理系統,常常遭人吐槽。
但我還是裝了Snap。起因是二台電腦一邊使用Gentoo,一邊使用Arch Linux,兩邊Hugo版本不一致,我擔心以後生成部落格網頁會出問題,因此採用Snap來統一Hugo版本。

Snap概覽
Snap全名為Snappy,這個套件管理系統是為了解決跨Linux發行版軟體安裝而出現,保證任何發行版都安裝一致的軟體版本。
Snap分成幾個部份組成:
- Snap:套件打包格式,附檔名為,snap。
- SnapCraft:Snap的打包程式,同時也是預覽Snap軟體的網站名稱。
- Snapd:管理Snap套件的常駐程式,需要systemd、AppArmror、cgroups才能運作
- Snap Store:軟體庫,或稱軟體商店,本身也是一個Snap軟體。
Snap會把所有套件依賴都包在一起,增加容量卻沒了依賴問題。Snap軟體預設有沙盒隔離的作用,使用者可以控管軟體存取使用者檔案的權限。
跟Flatpak主打桌面應用程式不同的是,Snap有提供daemon的界面,因此伺服器的系統程式和桌面環境也可以打包成Snap格式,像普通軟體一樣跑系統服務。然而Snapd安裝應用程式還是需要sudo,不像Flatpak可允許一般用戶免root權限安裝軟體。
同樣,Snap Store和Flathub無法保證上架的都是開源軟體,因此或許會吸引開發專有軟體的公司用這些方式打包,卻也增加程式碼不透明導致的潛在風險。
為什麼Snap會惹人嫌?
因為他是Canonical推動的,在嵌入式Ubuntu Core率先應用Snap技術,才拓展到桌面版上,Ubuntu 16.04以後基本上都有預裝Snap了。但裝了沒人用怎辦?Ubuntu在22.04以後,會自動把apt install指令重新導向到Snap版本。比方說安裝Firefox,會自動把apt install firefox轉換成snap install firefox。如果你硬要禁止APT安裝Snapd,套件依賴還會因此崩掉。
此外,網友批評Snap Store後端伺服器並非開源,且完全由Ubuntu掌控,上架軟體還要註冊Ubuntu One帳號,早期資料跟AppStream不互通。這是跟Flatpak的Flathub十分不一樣的地方。還有應用程式啟動速度變慢,會在系統上建立一堆loop device等缺點,有人不喜歡自己的磁碟結構變那麼複雜嘛。
實際用了Snap之後
就Hugo生成網頁的速度來看,原生版(左)與Snap版(右)的速度差距並不大。

八卦是Snap的Hugo版本比Gentoo(!)和Arch Linux(!!)還要新:O。沒關係我們還有Overlay和AUR...
雖然受到批評,但Snap軟體數量確實是有在增加的,常見的Linux辦公軟體都開始有了Snap版本。在架設雲端的時候,我發現Snapd可以大大簡化Nextcloud的安裝程序,且很多非開源的軟體都逐步出現在Snap Store,連foobar2000都在Snap Store上架了(雖然只是跟Wine包在一起)。
所以Snap其實是一個值得考慮的選擇,可以彌補Flatpak的不足,只要Canonical未來保持開放態度就好了。
不過就Gentoo來說,我還是比較偏好用Flatpak安裝桌面應用程式,Snap用來安裝系統應用程式,為的都是求穩定和版本一致。而Arch Linux因為AUR太方便,Snap反而沒那麼必要了。
Like my work?
Don't forget to support or like, so I know you are with me..
Comment…