創用 CC 授權條款
除非另有註明,本網站的著作Fygul Hether製作,以創用CC 姓名標示-非商業性-禁止改作 4.0 國際 授權條款釋出。

2020年1月11日 星期六

淺談AppImage與Flatpak

前言

在使用qTox期間,原採用AppImage格式,但無法用小小輸入法在該軟體上打中文,於是改試Flatpak格式,因此引發了對這兩種軟體包裝格式的探索。

AppImage的形式較像是單一包裝檔的可攜式軟體;Flatpak的使用較像APT,但它可通用於各種Linux發行版,這點會與Snap較類似。

本文將以一般使用者而非開發者的角度來簡單談一下AppImage與Flatpak的使用,這兩者都是Linux上包裝軟體的形式,其目的都是可通用在各種Linux發行版。

以下就做一下Flatpak與AppImage使用方面的介紹,附帶談一下對中文輸入法的影響。使用環境是Ubuntu MATE 18.04。

(本文是去年10月寫的,一直沒發佈,內容也許會與現況稍有不同。)

※2023-5-15:本文某些描述已與現況相當不同。

AppImage

簡介

簡單的說,可以把AppImage想像成像Windows上PortableApps這類可攜式軟體,只不過它把軟體包裝成一個單一的執行檔,也沒有提供軟體啟動選單介面。下載了打包成AppImage的檔案後,只要將其調整成可執行,就可以執行了。完全不必動用到管理員權限,這在多用戶使用的環境,如電腦教室,可方便一般使用者自行在家目錄中放系統中所沒有的軟體。

當然也可以由管理員統一安裝這類軟體,提供給所有使用者使用。

優點

  • 簡單、方便。使用者也不用擔心還要安裝什麼系統依賴,或是不同Linux發行版之間,有什麼不同安裝法;只下載存好,調整成可執行,即可使用。
  • 一般使用者即可自行下載安裝在家目錄。

缺點

  • 使用者需自行管理這類軟體檔案,如組織存放、建立啟動選單、更新版本(有的可用AppImageUpdate)。不過這工作還算簡單。
  • (可能)無法在這類軟體上使用中文輸入法,只能先在別處打好中文字,複製好再貼上來。這可能比較麻煩。

使用建議

  1. 如果想用的軟體會頻繁用到中文輸入法,卻無法用,建議先考慮使用別種軟體安裝方式。
  2. 若要找這類包裝的軟體,AppImageHub[2]上有個列表。或是在想用的軟體官網的下載頁,也可注意一下是否有提供。
  3. 強烈建議配合AppImageLauncher使用,若如此就可忽略以下第4點建議。
  4. 在家目錄建立個專放這類可攜式軟體的目錄,為每個軟體建立個目錄,把AppImage檔存放其中,並到該軟體的官網找軟體的圖片或圖示也下載存放其中。在系統的軟體選單上建立該軟體的項目以方便啟動。
  5. 這類軟體的更新方式,就只是下載新版,更換掉舊版。軟體的設置檔一般還是會存放在使用者目錄下而不是與軟體放一起。

 Flatpak

簡介

Linux上的軟體部署與包裝管理工具。它提供沙盒環境,讓軟體在其中執行,而能與系統隔開。

設定Flatpak

Flatpak官網上提供在各種Linux發行版上的設定方法,必須用到管理員權限。

以Ubuntu為例,還會裝Software(“軟體”,Ubuntu的圖形介面軟體管理程式)的Flatpak的外掛,這樣就可在圖形介面安裝Flatpak包裝的軟體[5]。裝好Flatpak後,系統必須重新開機。

以Flatpak安裝軟體

除了可用前述圖形介面安裝Flakpak以外,也可以CLI命令行介面來安裝Flatpak包裝的軟體。Flathub上提供了軟體列表,找到所要的軟體後,該軟體介紹頁面的下方會有安裝的指令,若以GRadio為例是:

flatpak install flathub de.haeckerfelix.gradio
也有提供執行的指令,不過安裝好後,選單中影音類就會出現該軟體的啟動選單,用這個來執行較方便。

以Flatpak安裝/移除軟體,無須管理員權限。安裝軟體時若加上 --user 選項,只裝給該使用者用,否則則是所有使用者可用。

使用心得

第一次安裝QT/GTK程式時,會分別裝KDE/Gnome平台(runtime)的東西:

圖一:以Flatpak安裝QT軟體qTox

以qTox為例,本身不大,但額外的東西不少,下載的流量也小,裝了快一小時才完成,顯示的進度與時間不很正確。

(往後做安裝動作時若發現有較新版的runtime時,會自動下載新版,同樣會花不少時間。)

安裝過程的每個階段都會停頓一段時間後再開始,裝到最後還出現奇怪字串,也不知裝成功或失敗:

圖二:不明的訊息字串

雖然最後還是裝好了,軟體選單上也設好,但給我的第一印象並不怎麼好。這點應屬個案,只是製作包裝時的缺失,以後應該會修正。

裝好了qTox,接著試著裝GTK軟體Inkscape,這回發現下載流量比較大,雖然也花了些時間,但較快裝好:

圖三:以Flatpak安裝GTK軟體Inkscape

再試裝同屬GTK的GRadio,下載的東西就少很多了,因為已裝過的就不需要再裝了:

圖四:以Flatpak安裝GTK軟體GRadio

優點

  • Flatpak的安裝工作簡單。
  • 軟體包裝格式可通用於各種Linux發行版。

缺點

  • 提供軟體下載的服務器頻寬不夠大。第一次安裝QT/GTK軟體時,或更新runtime時會花較久時間。
  • 相較於APT、Snap,安裝軟體會花較久時間。

其他問題

  • 如何刪除軟體?
    • 圖形界面中即可刪除Flatpak的軟體,無須管理員權限。若想用命令行,可見Using Flatpak[7]。
  • Flatpak軟體的安裝位置?
    • 全系統:/var/lib/flatpak
    • 個人:$HOME/.local/share/flatpak/
  • QT程式中文輸入法無法用的問題如何解決?
    • 目前尚不清。
  • 執行軟體時,有些程式(Inkscape, qTox)的標題列會顯示(以超級使用者)?
    • 原因不明。

對中文輸入法的影響

為了解這兩種軟體格式對於中文輸入法(這裡用小小輸入法平台)的使用是否有影響,故做了以下幾個試驗。

原本就猜想以AppImage格式包裝的軟體無法使用中文輸入法,不論是QT或GTK軟體。QT軟體因原本已用過qTox就知道了。為驗證GTK軟體,取得Inkscape的AppImage版來試,果然如此。

再來試Flatpak,同樣用qTox與InkScape。

以Flatpak安裝的Inskcape/GTK ,可用中文輸入法;qTox則不行,也就是Flatpak的QT軟體無法使用中文輸入法。

幾點修正:
  • 2019-10-31:有新發現,fcitx可在Telegram上使用,不論單一包裝檔、Snap版;Flatpak版則可能是字型問題,不能正常顯示中文,雖然可輸入。
  • 2020-1-11:以JavaScript/Electron開發的Motrix採AppImage格式,可正常使用小小輸入法。
  • 2023-5-15:簡單說這其實與軟體打包工作有關,若打包者沒有考慮到中文輸入,沒把相關軟體加入就無法正常輸入中文。

結語

在Linux上,隨著不同的發行版,會有不同的軟體安裝管理工具,這也導致使用者與開發者的一些不方便。於是就有了可攜式軟體或是可通用於這些發行版的軟體套件管理的構想,AppImage, Flatpak與Snap都是為解決這類問題而產生的方案,這三者各有不同做法與優劣,使用者依實際需要做選擇。本文只探討了前二者:
  • AppImage:適用於無管理員權限的使用者把軟體裝在自己家目錄。使用者只要把軟體下載下來存好,設成可執行即可使用,可說是最簡單方便。
  • Flatpak:安裝Flatpak需要管理員權限;以Flatpak安裝軟體則不需要。與APT與Snap相較,安裝軟體會花較長時間,尤其第一次或是更新runtime時。
Snap安裝軟體需要管理員權限,這點與前兩者不同。使用者不妨將它們視為既有取得軟體管道之外的額外選擇,有需要時才採用。個人偏好的順序會是Snap > AppImage > Flatpak。

題外話:FreeFileSync的Linux版也採可攜式軟體的形式,但與AppImage不同,並不是包裝成單一檔案,設置檔會與主程式放一起。

參考

  1. AppImage官方網站
  2. AppImageHub:AppImage的軟體中心
  3. Wikipedia AppImage條目
  4. Flatpak官方網站
  5. Ubuntu Quick Setup
  6. Flathub:Fatpak的軟體中心
  7. Getting Started — Flatpak documentation
  8. Wikipedia Flatpak英文條目
  9. Wikipedia Flatpak中文條目

沒有留言:

張貼留言