快轉到主要內容

Linux AppImage格式安裝方法,新增桌面捷徑

· 民國115年丙午年
·
切換正體/简体 ·
分類 Linux系統 Linux好用軟體
標籤 AppImage
目錄

這篇文章將講解Linux上以.AppImage檔名結尾的應用程式安裝方法,並介紹輔助工具「AppImageD」。

AppImage是Linux的一種軟體打包格式,用於解決不同Linux發行版安裝應用程式依賴的問題而生。由probonopd (Simon Peter) 等人在2013年發起。

以AppImage打包的應用程式,需要的依賴套件都包在一起。下載就是單一檔案,點二下就可以執行,不需要安裝,也無需考量不同Linux發行版的差異。概念上AppImage類似於Windows的可攜式exe、macOS的dmg。然後AppImage又比用tar打包的軟體更容易分發。

AppImage主要依賴FUSE掛載檔案系統運作,最舊支援到Ubuntu 16.04系統(glibc 2.23)。現在大部份64位元Linux發行版應該都支援AppImage格式,無需額外安裝套件就可以執行。

1. 如何安裝AppImage格式的程式?
#

嚴格來說,AppImage應用程式不需要「安裝」,因為下載後直接點選執行就可以了。如果你還是想要「安裝」到固定目錄,後面我們會再介紹用AppImageD工具管理。

網站Appimagehub有收錄許多AppImage格式的軟體,例如Firefox、GIMP、Kdenlive、Blender、LibreOffice。Github上有些軟體開發者也會以AppImage格式分發他們的軟體。

  1. 以GIMP為例,他們有提供官方AppImage,到GIMP官網點選Download,下載.AppImage的檔案

  2. AppImage需要賦予執行權限。如果你用的是KDE Plasma桌面的檔案管理員的話可以右鍵 → 屬性 → 權限,勾選其為可執行檔。GNOME亦同。

  3. 如果沒辦法用檔案管理員賦予權限,那就用chmod指令賦予執行權限

chmod +x ./gimp.AppImage
  1. 在那之後對AppImage圖示按二下,應用程式即會啟動。AppImage檔案可放在任意目錄,都是點二下就能執行。

  2. 如果AppImage點了沒反應,試著用終端機執行,並看看有無輸出錯誤訊息。

./gimp.AppImage
  1. (此狀況很少見)如果你的系統不支援FUSE,導致沒辦法執行AppImage,或出現Cannot mount AppImage, please check your fuse setup.錯誤,那麼試試將AppImage解壓縮,執行裡面的二進位檔:
./gimp.AppImage --appimage-extract

cd squashfs-root

./AppRun

2. 使用AppImageD管理程式
#

AppImage雖然有可攜、免安裝的特性,但是要管理和刪除仍是不方便。譬如,上面我們安裝了AppImage版的GIMP,但每次開啟都要進去檔案管理員點選,無法從應用程式列表啟動,也就是缺乏Desktop Entry,是否太麻煩了些?

那就來安裝「AppImageD」吧!由AppImage作者開發。將AppImage與桌面環境完美整合。它會自動偵測AppImage路徑然後建立桌面捷徑。這個方案比AppImage Launcher更常更新,也更智慧。

  1. AppImageD會偵測的「安裝路徑」包含PATH環境變數的所有目錄。爲了方便管理,推薦放在~/Applications,因此在你的家目錄新增這個目錄:
mkdir ~/Applications
  1. Github下載AppImageD的檔案,選取x86_64架構。下載後移動檔案到~/Applications目錄

  2. ~/Applications目錄開啟終端機,執行,安裝爲Systemd服務。

cd ~/Applications

chmod +x ~/Applications/appimaged-*.AppImage

~/Applications/appimaged-*.AppImage
  1. 查看服務狀態
systemctl --user status appimaged
  1. 在那之後,將其他.AppImage移動到~/Applications的時候,AppImageD就會自動偵測位置並動態建立Desktop Entry圖示。這樣就能從應用程式列表啓動AppImage程式了。

  2. 如果要「解除安裝」AppImage,於應用程式列表對圖示按下右鍵,選取Move to trash,圖示和AppImage檔就會刪除。

3. 透過命令行執行AppImage程式
#

如果用AppImage安裝vim,如何在命令行直接呼叫vim使用呢?

AppImage本身就像一個二進位執行檔,因此確認AppImage路徑後,再把檔案所在路徑加入到PATH環境變數就行了。

譬如,使用AppImage Launcher所安裝的vim.AppImage會跑到~/Applications,那麼就把該路徑加入到~/.bashrc

echo "PATH=$PATH:~/Applications" >> ~/.bashrc

source ~/.bashrc

或者,按照AppImage的絕對路徑建立alias,指向AppImage所在位置:

echo "alias vim='~/Applications/vim.AppImage'" >> ~/.bashrc

source ~/.bashrc

解開後的AppImage可以自行修改內容,再用appimagetool打包回去。

4. 如何更新AppImage程式
#

看開發者怎麼設計。

有的AppImage在透過AppImageD安裝之後,在應用程式列表按下右鍵選單就會出現Update按鈕。

如果沒有,就手動下載新版AppImage,放到~/Applications,然後移除舊版AppImage。

5. 關於AppImage的技術細節
#

設定檔位置
#

AppImage程式設定檔的位置跟一般套件管理器安裝的相似,遵守FreeDesktop的XDG標準。比如AppImage版Firefox仍會優先讀取位於~/.mozilla的資料,不會另外建立新的目錄。所以如果deb版Firefox跟AppImage版Firefox一起用的話資料可能會互相干擾。

如果想將AppImage的應用程式設定檔一併帶著走,請參閱:將Linux AppImage變成可攜式軟體!Portable mode使用方式

AppImage沒有沙盒隔離的效果,應用程式執行時仍可以存取使用者所有目錄。想要沙盒隔離請搭配FireJail或者上述的Portable mode來隔離設定檔。

不包含驅動程式
#

AppImage包的runtime其實沒有你想像的多,使用musl函式庫的Linux發行版可能無法執行以glibc打包的AppImage。

如果系統底層函式庫出問題,那AppImage也會受影響。比方說開發者用舊版Ubuntu系統打包,那麼Arch Linux不見得100%能執行。

如果應用程式需要用到Nvidia圖形驅動程式,AppImage也不會提供,使用者需要在系統事先安裝。

所以跟Snap和Flatpak比起來,AppImage程式還是得很大程度依賴系統的runtime才能跑起來。

跨架構需另外打包
#

AppImage沒有跨架構模擬的效果,ARM和x86平台需要下載對應其架構的AppImage檔案。

延伸閱讀
#

如果你想把軟體打包成AppImage,請參考 AppImage Documentation

像AppImage意圖解決跨發行版問題的打包格式還有FlatpakSnap。相較前二者,AppImage的優點是免安裝直接用,不需要額外套件管理器;但缺點是AppImage不能用套件管理員指令更新,也沒有應用程式商店前端能用。

相關文章


感謝您的閱讀。我寫作是為了誠實表達想法,而不是追逐社群互動與流量。我很樂意傾聽你在仔細閱讀我文章之後的心得。若有內容勘誤 or 技術問題 or 回饋想法,歡迎透過本站「關於」頁面的Email與我聯絡。