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