適用于所有發(fā)行版的 Linux 應(yīng)用程序——是否真的有好處呢?
讓我們回顧一下 Linux 社區(qū)***的愿景——推動去中心化的應(yīng)用來解決發(fā)行版的碎片化。
繼上周的文章:“Snap、Flatpak 這種通吃所有發(fā)行版的打包方式真的有用嗎?” 之后,一系列新觀點浮出水面,其中可能包含關(guān)于這樣應(yīng)用是否有用的重要信息。
缺點
就這個話題在這里的評論,一個叫 Till 的 Gentoo 使用者,對于上一次我們未能完全解釋的問題給出了一些新的觀點。
對于上一次我們選擇僅僅稱之為膨脹的的東西,Till 從另一方面做了剖析膨脹將來的發(fā)展,這可以幫助我們更好的理解它的組成和其影響。
這些被稱之為“捆綁應(yīng)用”的應(yīng)用程序能夠工作在所有發(fā)行版上的機制是——將它依賴的庫都包含在它們的應(yīng)用軟件之中,Till 說:
“捆綁應(yīng)用裝載了大量的并不被應(yīng)用開發(fā)者所維護的軟件。如果其中的某個函數(shù)庫被發(fā)現(xiàn)了一個安全問題而需要更新的話,你得為每一個獨立的應(yīng)用程序安裝更新來確保你的系統(tǒng)安全。”本質(zhì)上,Till 提出了一個重要的安全問題。但是它并不僅僅與安全有關(guān)系,它還關(guān)系到許多方面,比如說系統(tǒng)維護、原子更新等等。
此外,如果我們進一步假設(shè):依賴的開發(fā)者們也許會合作,將他們的軟件與使用它的應(yīng)用程序一起發(fā)布(一種理想狀況),但這將導(dǎo)致整個平臺的開發(fā)整體放緩。
另一個將會導(dǎo)致的問題是透明的依賴關(guān)系變得模糊,就是說,如果你想知道一個應(yīng)用程序捆綁了哪些依賴關(guān)系,你必須依靠開發(fā)者發(fā)布這些數(shù)據(jù)。
或者就像 Till 說的:“比如說像某某包是否已經(jīng)包含了更新的某函數(shù)庫這樣的問題將會是你每天需要面對的。”
與之相反,對于 Linux 現(xiàn)行的標(biāo)準(zhǔn)的包管理方法(包括二進制包和源碼包),你能夠很容易的注意到哪些函數(shù)庫已經(jīng)在系統(tǒng)中更新了。
并且,你也可以很輕松的知道其它哪些應(yīng)用使用了這個函數(shù)庫,這就將你從繁瑣的單獨檢查每一個應(yīng)用程序的工作中解救了出來。
其他可能由膨脹導(dǎo)致的缺點包括:更大的包體積(每一個應(yīng)用程序捆綁了依賴),更高的內(nèi)存占用(沒有共享函數(shù)庫),并且,少了一個***濾機制來防止惡意軟件:發(fā)行版的包維護者也充當(dāng)了一個在開發(fā)者和用戶之間的過濾者,他保障了用戶獲得高質(zhì)量的軟件。
而在捆綁應(yīng)用中就不再是這種情況了。
***一點,Till 聲稱,盡管在某些情況下很有用,但是在大多數(shù)情況下,捆綁應(yīng)用程序?qū)⑷趸杂绍浖诎l(fā)行版中的地位(專有軟件供應(yīng)商將被能夠發(fā)布他們的軟件而不用把它放到公共軟件倉庫中)。
除此之外,它引出了許多其他問題。很多問題都可以簡單歸結(jié)到開發(fā)人員身上。
優(yōu)點
相比之下,另一個名叫 Sven 的人的評論試圖反駁目前普遍反對使用捆綁應(yīng)用程序的觀點,從而證明和支持使用它。
“浪費空間?”——Sven 聲稱在當(dāng)今世界我們有很多其他事情在浪費磁盤空間,比如電影存儲在硬盤上、本地安裝等等……
最終,這些事情浪費的空間要遠遠多于僅僅“ 100 MB 而你每天都要使用的程序。……因此浪費空間的說法實在很荒謬。”
“浪費運行內(nèi)存?”——主要的觀點有:
- 共享庫浪費的內(nèi)存要遠遠少于程序的運行時數(shù)據(jù)所占用的。
- 而今運行內(nèi)存已經(jīng)很便宜了。
“安全夢魘”——不是每個應(yīng)用程序的運行真正的要注重安全。
而且,許多應(yīng)用程序甚至從來沒有過任何安全更新,除非在“滾動更新的發(fā)行版”。
除了 Sven 這種從實用出發(fā)的觀點以外,Till 其實也指出了捆綁應(yīng)用在一些情況下也有著其優(yōu)點:
- 專有軟件的供應(yīng)商想要保持他們的代碼游離于公共倉庫之外將更加容易。
- 沒有被你的發(fā)行版打包進去的小眾應(yīng)用程序?qū)⒆兊酶涌尚小?/li>
- 在沒有 Beta 包的二進制發(fā)行版中測試應(yīng)用將變得簡單。
- 將用戶從復(fù)雜的依賴關(guān)系中解放出來。
***的思考
雖然關(guān)于此問題有著不同的想法,但是有一個被大家共同接受的觀點是:捆綁應(yīng)用對于填補 Linux 生態(tài)系統(tǒng)有著其獨到的作用。
雖然如此,它的定位,不論是主流的還是邊緣的,都變得愈發(fā)清晰,至少理論上是這樣。
想要盡可能優(yōu)化其系統(tǒng)的用戶,在大多數(shù)情況下應(yīng)該要避免使用捆綁應(yīng)用。
而講究易用性、盡可能在維護系統(tǒng)上少費勁的用戶,可能應(yīng)該會感覺這種新應(yīng)用十分舒爽。