AppImage 的優勢

本章將 AppImage 與 Linux 上傳統的應用程式打包格式做比較,並說明 AppImage 的優勢。若您已了解 AppImage 的用途,可跳過本章。

傳統上,應用程式會透過 Linux 散布版所附的套件管理器安裝。然而,這種模式不利於長尾應用程式、僅少數使用者使用的應用程式,或使用者希望在開發者發布後立即使用最新版本的情境。對想要快速觸及大量使用者的開發者來說,這也相當繁瑣。

對使用者的優勢

在桌面環境中,使用者習慣安裝作業系統、使用多年,並在需要時執行最新的應用程式。然而,許多 Linux 散布版只提供在該散布版發布時已經存在的應用程式。這代表使用者若要使用穩定的作業系統,就會被綁在系統發布時仍算新的那一套應用程式。這對企業關鍵應用或伺服器端流程或許合理,但並不是桌面作業系統使用者所期待的模式。

所謂的「滾動更新」散布版提供最新版本的軟體,但它們不區分核心作業系統與應用程式。因此在滾動更新的散布版中,使用者不僅獲得最新應用程式,也會面對不斷變動的基礎系統。這或許適合嗜好者與技術愛好者,但對需要可支援基礎系統的生產環境並不適合。

將長期穩定的基礎作業系統與以 AppImage 格式提供的最新應用程式結合,能優雅地解決此困境。基礎作業系統可保持穩定、數年才變更一次,而使用者仍可在最新應用程式出現時立即下載與執行。

AppImage 也讓試用新版本變得容易。由於不同版本可以並存,使用者只需下載新版本並試用即可。若新版本更好,就刪除舊版改用新版;若新版本有錯誤或不可用,也可直接刪除新版並繼續使用舊版。這對測試 nightly 或持續建置,以及回饋給開發團隊也非常有用。

對系統管理員的優勢

在企業、教育或機構環境中,系統管理員通常需要支援大量桌面系統。他們可能需要鎖定系統,避免使用者進行如安裝應用程式等變更,或需要一種方式在維持基礎系統可支援的前提下讓使用者仍可在其上執行應用程式。

AppImage 在此提供了優雅解法:由於安裝應用程式不會改變核心作業系統,無論使用者執行何種應用程式,系統都能保持乾淨且可支援。使用者開心,因為不用請系統管理員安裝也能執行喜愛的應用程式;系統管理員也開心,因為工作量更少。

對應用程式作者的優勢

應用程式作者希望能觸及盡可能多的使用者,不論其使用的作業系統或版本。在傳統模式下,作者必須依各散布版規則製作套件,讓應用程式進入 Linux 散布版,這是一個冗長且耗時的過程;或必須找人代為打包。更麻煩的是,各 Linux 散布版對打包的規則差異極大。作者即使依某個散布版規則成功打包,也可能不適用於另一個散布版。總之,讓新應用程式進入每個 Linux 散布版既不快速也不容易。即便應用程式成功進入某個 Linux 散布版,也通常要等到下一次散布版發布才會出現,這意味著仍在使用舊版散布版的使用者被排除在外。

若由第三方(散布版的「維護者」)為散布版打包,第三方可能會對應用程式做出原作者未授權的更動。因此一些作者曾要求 Linux 散布版停止散布其軟體,因為他們不喜歡這些變更。

有些開發者不希望其應用程式被隨意散布,而是希望完全掌控誰在何時下載了什麼。例如作者可能希望使用者在下載前填寫問卷,也可能希望統計下載次數。甚至可能要求捐款或付款(透過 Gumroad、PayPal、Patreon 等)後才能下載。在傳統 Linux 散布版模式中,這些做法無法實現。

提供 AppImage 可解決這些問題,因為應用程式作者可完全掌控散布與相關的使用者體驗。

有些應用程式需要特定版本的相依項目才能正常運作。例如程式可能只能在某個 Qt 版本上執行,使用其他版本會遇到未預期問題。在傳統 Linux 散布版模式下,應用程式只能使用散布版所提供的函式庫版本;但使用 AppImage 時,作者可以精確決定應用程式要使用哪個版本的相依項目。

對軟體測試人員的優勢

成功的應用程式專案會進行大量測試。即使有些測試可自動化,人工測試仍是確保功能與可用性的重要環節。在回歸測試中,會比較應用程式不同版本的功能與錯誤。AppImage 讓在本機進行測試變得容易,因為它允許多個版本並存執行。透過可移植模式,也能彼此隔離各版本的設定,打造乾淨的測試環境。

例如 LibreOffice 專案就使用 AppImage 來測試新版本。