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