Snap、Flatpak 這種通吃所有發行版的打包方式真的有用嗎?
對新一代的打包格式開始滲透到 Linux 生態系統中的深入觀察
最近我們聽到越來越多的有關於 Ubuntu 的 Snap 包和由 Red Hat 員工 Alexander Larsson 創造的 Flatpak (曾經叫做 xdg-app)的消息。
這兩種下一代打包方法在本質上擁有相同的目標和特點:即不依賴於第三方系統功能庫的獨立包裝。
這種 Linux 新技術方向似乎自然會讓人腦海中浮現這樣的問題:獨立包的優點/缺點是什麼?這是否讓我們擁有更好的 Linux 系統?其背後的動機是什麼?
為了回答這些問題,讓我們先深入了解一下 Snap 和 Flatpak。
動機
根據 Flatpak 和 Snap 的聲明,背後的主要動機是使同一版本的應用程序能夠運行在多個 Linux 發行版。
「從一開始它的主要目標是允許相同的應用程序運行在各種 Linux 發行版和操作系統上。」 —— Flatpak
「……『snap』 通用 Linux 包格式,使簡單的二進位包能夠完美的、安全的運行在任何 Linux 桌面、伺服器、雲和設備上。」 —— Snap
說得更具體一點,站在 Snap 和 Flatpak (以下稱之為 S&F)背後的人認為,Linux 平台存在碎片化的問題。
這個問題導致了開發者們需要做許多不必要的工作來使他的軟體能夠運行在各種不同的發行版上,這影響了整個平台的前進。
所以,作為 Linux 發行版(Ubuntu 和 Red Hat)的領導者,他們希望消除這個障礙,推動平台發展。
但是,是否是更多的個人收益刺激了 S&F 的開發?
個人收益?
雖然沒有任何官方聲明,但是試想一下,如果能夠創造這種可能會被大多數發行版(即便不是全部)所採用的打包方式,那麼這個項目的領導者將可能成為一個能夠決定 Linux 大船航向的重要人物。
優勢
這種獨立包的好處多多,並且取決於不同的因素。
這些因素基本上可以歸為兩類:
用戶角度
+ 從 Liunx 用戶的觀點來看:Snap 和 Flatpak 帶來了將任何軟體包(軟體或應用)安裝在用戶使用的任何發行版上的可能性。
例如你在使用一個不是很流行的發行版,由於開發工作的缺乏,它的軟體倉庫只有很稀少的包。現在,通過 S&F 你就可以顯著的增加包的數量,這是一個多麼美好的事情。
+ 同樣,對於使用流行的發行版的用戶,即使該發行版的軟體倉庫上有很多的包,他也可以在不改變它現有的功能庫的同時安裝一個新的包。
比方說, 一個 Debian 的用戶想要安裝一個 「測試分支」 的包,但是他又不想將他的整個系統變成測試版(來讓該包運行在更新的功能庫上)。現在,他就可以簡單的想安裝哪個版本就安裝哪個版本,而不需要考慮庫的問題。
對於持後者觀點的人,可能基本上都是使用源文件編譯他們的包的人,然而,除非你使用類似 Gentoo 這樣基於源代碼的發行版,否則大多數用戶將從頭編譯視為是一個噁心到吐的事情。
+ 高級用戶,或者稱之為 「擁有安全意識的用戶」 可能會覺得更容易接受這種類型的包,只要它們來自可靠來源,這種包傾向於提供另一層隔離,因為它們通常是與系統包想隔離的。
- 不論是 Snap 還是 Flatpak 都在不斷努力增強它們的安全性,通常他們都使用 「沙盒化」 來隔離,以防止它們可能攜帶病毒感染整個系統,就像微軟 Windows 系統中的 .exe 程序一樣。(關於微軟和 S&F 後面還會談到)
開發者角度
與普通用戶相比,對於開發者來說,開發 S&F 包的優點可能更加清楚。這一點已經在上一節有所提示。
儘管如此,這些優點有:
+ S&F 通過統一開發的過程,將多發行版的開發變得簡單了起來。對於需要將他的應用運行在多個發行版的開發者來說,這大大的減少了他們的工作量。
++ 因此,開發者能夠更容易的使他的應用運行在更多的發行版上。
+ S&F 允許開發者私自發布他的包,不需要依靠發行版維護者在每一個/每一次發行版中發布他的包。
++ 通過上述方法,開發者可以不依賴發行版而直接獲取到用戶安裝和卸載其軟體的統計數據。
++ 同樣是通過上述方法,開發者可以更好的直接與用戶互動,而不需要通過中間媒介,比如發行版這種中間媒介。
缺點
– 膨脹。就是這麼簡單。Flatpak 和 Snap 並不是憑空變出來它的依賴關係。相反,它是通過將依賴關係預構建在其中來代替使用系統中的依賴關係。
就像諺語說的:「山不來就我,我就去就山」。
– 之前提到安全意識強的用戶會喜歡 S&F 提供的額外的一層隔離,只要該應用來自一個受信任的來源。但是從另外一個角度看,對這方面了解較少的用戶,可能會從一個不靠譜的地方弄來一個包含惡意軟體的包從而導致危害。
上面提到的觀點可以說是有很有意義的,雖說今天的流行方法,像 PPA、overlay 等也可能是來自不受信任的來源。
但是,S&F 包更加增加這個風險,因為惡意軟體開發者只需要開發一個版本就可以感染各種發行版。相反,如果沒有 S&F,惡意軟體的開發者就需要創建不同的版本以適應不同的發行版。
原來微軟一直是正確的嗎?
考慮到上面提到的,很顯然,在大多數情況下,使用 S&F 包的優點超過缺點。
至少對於二進位發行版的用戶,或者重點不是輕量級的發行版的用戶來說是這樣的。
這促使我問出這個問題,可能微軟一直是正確的嗎?如果是的,那麼當 S&F 變成 Linux 的標準後,你還會一如既往的使用 Linux 或者類 Unix 系統嗎?
很顯然,時間會是這個問題的最好答案。
不過,我認為,即使不完全正確,但是微軟有些地方也是值得讚揚的,並且以我的觀點來看,所有這些方式在 Linux 上都立馬能用也確實是一個亮點。
via: http://www.iwillfolo.com/ubuntus-snap-red-hats-flatpack-and-is-one-fits-all-linux-packages-useful/
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive