Flatpak Is Not the Future

眾所周知,有別於 Windows 及 macOS 系統,主要是使用個別的安裝程式來執行軟體安裝動作。Linux 作業系統通常是利用發行版所提供的套件管理工具,例如 apt、yum 及 dnf 等等,從設定好的套件庫來源中下載及安裝軟體套件。當然某些情況下也會存在獨立的安裝程式,不過其具體的實作並沒有統一的標準,可能很粗略,也可能做得很精密。除此之外,也是有針對特定領域、並且是使用者層級的管理工具,比方說 Wine 相容層可以用於安裝及管理 Windows 應用程式;以及 Steam 遊戲平台則是用於安裝及管理遊戲程式。

 

不過近年來,也開始出現一種呼聲,是期望將 Linux 桌面應用程式以類似容器化的形式發佈。按理講此舉一方面,能夠免除將應用程式封裝成發行版專用套件的繁雜工程;同時另一方面,使用者在發行版本的採用上也能擁有更多彈性,而不再受制於發行版是否擁有豐富且不致過時的套件庫來源。就在這樣的倡議下,便出現了諸如 AppImageSnapFlatpak 等等這些的解決方案。

 

然而由開發者 Nicholas Fraser 所發佈的文章《Flatpak Is Not the Future》,內容點出了 Flatpak 在現實應用上會遭遇的議題,同時也對合適的容器化實作提供了一些建議。雖然 DR 目前使用到 Flatpak 或者 Snap 的比例都算很少,但也認為這篇文章寫得相當精闢,非常值得一讀。

 

像 Flatpak 這樣的技術,能否得到更廣泛的使用,甚至成為 Linux 桌面應用程式的未來?恐怕目前不得而知。不過以現況來看,它比較偏向於是一種經過取捨的解決方案,適用在特定的考量下,而不是全面性的替代品。與之對照之下,其實傳統的套件管理工具雖看似古板,卻實則存在許多優勢。特別是此舉有效地避免了重複的依賴元件,大幅提昇了軟體下載、安裝及後續更新的效率,同時也確保儲存空間不會被冗餘的內容所佔用。儘管這些優勢似乎對伺服器設備比較重要,但對於著重系統整潔及最佳化的電腦使用者來說,也是很有意義的。

 

除此之外,Flatpak 對於封閉式軟體的供應商可能會有一定的吸引力。首先一方面它能夠藉此應付不同發行版的分歧,不過這也並非是必然的選項。比方說 Linux 遊戲的開發者其實更長年就跟發行版差異打交道了,也早已演變出某種程度的最佳實踐,對於容器化的需求並不高。相關的延伸閱讀可以參考 Ethan Lee 的文章《Hope you like reading ldd output!》。

 

另一方面,考量到 Flatpak 也是一種商店化的實現,這表示它的發展,有機會能夠讓封閉軟體與開源軟體在 Linux 上得到相同的能見度,以及一致的安裝便利性。以往我們大概都感受得到,在 Linux 上安裝開源軟體,比安裝封閉軟體還要容易許多。因為通常主流發行版的套件庫已經收納了大量的開源軟體,只要簡單搜尋一下就可以安裝起來。反之,若要安裝封閉軟體,則通常還要再多做些什麼,例如得找到合適的套件來源,或者從官網下載專屬的安裝程式。

 

這表示在 Linux 系統的生態裡,開源軟體表現得更像是頭等公民(first-class citizen),不僅是得到最多的關注,也擁有最好的維護及便利性。那麼……這是個需要改變的事情嗎?說實在話,DR 認為這是 Linux 系統的一項特色而非缺陷。開放原始碼是它與生俱來的 DNA,也是它的血脈。Linux 並沒有因此排擠封閉軟體的存在,但其生態對開源軟體更加有利也是完全合乎情理的。也是 Android 就某種層面而言,難以被歸類為 Linux 系統的原因之一。它雖同樣從開放原始碼而生,卻缺少了那股擁護開源軟體的精神。

 

分類: