Linux AppImage:單一檔案就能搞定桌面應用程式部署方式

在 Windows 系統中安裝程式,通常會想到這些步驟:

  1. 下載 .exe.msi 安裝檔
  2. 點擊「下一步、下一步、完成」
  3. 實際上不太清楚程式安裝在哪裡(登錄檔 + 四散的檔案)

然而,在 Linux 中,有一種與之截然不同、在 Windows 上幾乎看不到的應用程式部署方式,那就是 AppImage (AppImage)

就像在行動裝置上,只需下載一個 APK 檔案即可執行應用程式一樣,在 Linux 中,您也能僅憑一個檔案就執行完整的桌面應用程式。這種方式無需安裝過程,也無需套件管理器,只需管理「一個可執行檔案」即可。

本文將一次性為您整理:

  • AppImage 是什麼
  • 為何對 Windows 使用者來說既陌生又具吸引力
  • 以及 如何在 Linux 中管理 AppImage(特別是利用 /opt

AppImage 是什麼?

簡而言之:

AppImage = 將應用程式 + 所需函式庫捆綁成一個「可執行單一檔案」

換句話說,它是一種將執行某個應用程式所需的一切盡可能地打包進去,並將整個集合製作成一個可執行檔進行分發的格式。

使用方法也極為簡單。

# 1. 下載 AppImage 檔案
$ ls
MyApp-1.0-x86_64.AppImage

# 2. 授予執行權限
$ chmod +x MyApp-1.0-x86_64.AppImage

# 3. 執行
$ ./MyApp-1.0-x86_64.AppImage

就這麼簡單。「安裝」這個概念幾乎不存在,如果想刪除,直接刪除該檔案即可。

如果與 Windows 相比,它類似於免安裝(Portable)應用程式,但 AppImage 更像是將其打造成Linux 桌面生態系統的標準格式


AppImage 概念圖

為何對 Windows 使用者來說很陌生?

Windows 的傳統方式是:

  • 安裝程式會

  • 將檔案複製到系統資料夾

  • 在登錄檔中新增鍵值
  • 註冊開始功能表、服務、驅動程式等各種項目

從使用者的角度來看,就是「明明只是安裝了程式,作業系統某處卻多了一堆東西」的狀態。

然而,AppImage 則是:

  • 沒有登錄檔
  • 不碰觸系統目錄
  • 未在套件管理器中註冊

它以一個完全獨立的檔案存在。無論放在哪裡,只要有這個檔案就能執行。

如果說 Windows 是「我最不清楚自己電腦裡安裝了什麼的作業系統」, 那麼 AppImage 則是在檔案層面呈現「我的應用程式就在這裡」的方式。

這一點也與 Linux 的哲學不謀而合。

  • 「一切皆檔案」
  • 「比起自動化魔術,更偏好使用者能理解的結構」

AppImage 提供了一個非常簡單的模型:「應用程式 = 一個檔案」。


AppImage 的優點:為何如此方便?

整理一下會喜歡 AppImage 的原因:

1. 沒有安裝過程

  • 未在套件管理器中註冊
  • 不會偷偷複製任何東西到 /usr/bin/usr/lib 等位置
  • 沒有登錄檔之類的東西

它就只是一個「可執行檔案」而已。

2. 刪除/整理極為容易

  • 用一用不喜歡? → 直接刪除檔案
  • 無需擔心「這個應用程式在我的系統裡留下了什麼?」

當然,設定檔可能會在 ~/.config 等位置產生,但至少執行檔本身是完全可見的

3. 易於避免依賴地獄 (Dependency Hell)

AppImage 通常會自行包含執行所需的函式庫。因此:

  • 不同發行版 glibc 版本不同
  • libXxx.so 版本不匹配

這些問題通常在 AppImage 內部已得到一定程度的解決後才發布。從使用者的角度來看,可以稍微減少「這個應用程式在我的發行版上也能執行嗎?」的擔憂。

4. 無需 Root 權限

大多數情況下:

  • 使用者下載
  • 授予權限 (chmod +x)
  • 直接執行

就完成了。由於不會將任何東西複製到系統目錄,因此無需 sudo 也能充分使用


缺點也存在:與套件管理器的權衡

當然,AppImage 並非萬能。其主要缺點是:

  • 難以集中管理

  • 無法在套件管理器 (apt, pacman, dnf 等) 中一覽版本/更新狀況

  • 更新方式各異

  • 有些 AppImage 具有自帶更新功能,但許多則沒有

  • 磁碟使用量增加

  • 每個 AppImage 都包含函式庫,因此重複的部分可能會增多

因此,比起「所有應用程式都使用 AppImage」,更實際的做法是選擇性地使用 AppImage,例如針對:

  • 安裝過程繁瑣的應用程式
  • 希望在多個發行版上都能使用的應用程式
  • 不常用工具、實驗性應用程式

AppImage 應該放在哪裡?管理策略

現在,讓我們來談談實際問題。AppImage 檔案應該放在哪裡,又該如何管理?

每個 Linux 使用者有不同的風格,但大致上有兩種主要方式。

1. 直接放在家目錄中 (~/Apps~/bin 等)

我剛開始使用 Linux 時也是如此。

  • ~/apps/MyApp/MyApp.AppImage
  • 直接放在 ~/Downloads 中執行
  • 隨時創建資料夾進行整理

優點

  • 無需 root 權限
  • 如果是「個人專用機器」,這樣做其實也沒什麼大問題

缺點

  • 如果有多個使用者帳戶,則無法共享
  • 日後整理時,可能會混淆「這是 AppImage 嗎?這個資料夾是什麼?」
  • 從 Linux 檔案系統的角度來看,「系統共用應用程式」與「我的個人資料」會混雜在一起

對於個人筆記型電腦來說,這不是個壞方法,但如果想以更Linux 風格」的方式管理,那麼以下方法會更適合。

2. 在 /opt 下以應用程式專屬目錄進行管理

這也是我偏好的方式。

  1. 為每個應用程式在 /opt 下創建一個獨立的目錄
  2. 將 AppImage 檔案放入該目錄中
  3. 適當設定權限和群組,以便多個使用者帳戶共享

例如,如果要管理 MyApp.AppImage

# 1. 創建應用程式專屬目錄
sudo mkdir -p /opt/myapp

# 2. 移動 AppImage
sudo mv ~/Downloads/MyApp-1.0-x86_64.AppImage /opt/myapp/myapp.AppImage

# 3. 授予執行權限
sudo chmod 755 /opt/myapp/myapp.AppImage

如果希望在系統任何地方都能透過 myapp 命令執行:

sudo ln -s /opt/myapp/myapp.AppImage /usr/local/bin/myapp

這樣一來:

  • 實際執行檔位置: /opt/myapp/myapp.AppImage
  • PATH 中可用的命令: /usr/local/bin/myapp

就整理好了。

如果想更嚴格地管理權限

例如,如果只想授予特定群組執行權限:

# 創建 myapps 群組
sudo groupadd myapps

# 變更目錄和檔案的群組為 myapps
sudo chown -R root:myapps /opt/myapp

# 僅限擁有者/群組可執行 (阻止其他人)
sudo chmod 750 /opt/myapp/myapp.AppImage
sudo chmod 750 /opt/myapp

現在,只有屬於 myapps 群組的使用者才能執行此 AppImage。

sudo usermod -aG myapps alice
sudo usermod -aG myapps bob

這種方式的優點是:

  • Linux 檔案系統的設計理念高度契合

  • /opt 用於放置「不包含在發行版套件中的應用程式」

  • 多個使用者帳戶可以共享同一個應用程式
  • 可以利用權限/群組,在檔案系統層級控制「誰可以使用哪個應用程式」

與桌面環境整合 (.desktop 檔案)

如果不想僅將 AppImage 作為檔案使用,而希望它也能顯示在 GNOME/KDE 等桌面環境的選單中,只需創建一個 .desktop 檔案即可。

例如:

~/.local/share/applications/myapp.desktop:

[Desktop Entry]
Type=Application
Name=My App
Exec=/opt/myapp/myapp.AppImage
Icon=/opt/myapp/icon.png
Terminal=false
Categories=Utility;

這樣設定後:

  • 「My App」將會顯示在應用程式選單中
  • 點擊後會執行 /opt/myapp/myapp.AppImage

如果希望在整個系統中可見,則可將其放置在 /usr/share/applications/ 下。這也與套件管理器無關,只需新增/刪除檔案即可,因此管理非常簡單。


總結:「單一檔案」中蘊含的 Linux 哲學

AppImage 本身就是一種充分體現 Linux 哲學的部署方式。

  • 透明性

  • 應用程式在哪裡、執行了什麼,都能以檔案為單位清晰可見。

  • 使用者主導

  • 安裝程式不會任意更改系統,而是由使用者自行決定檔案存放位置。

  • 簡潔性

  • 安裝/移除不再是複雜的魔法,而是回歸到「複製/刪除檔案」的層次。

這是在 Windows 中不常見的模型。對於厭倦了「一安裝就感覺作業系統某處堆積了東西」的人來說,AppImage 可能會帶來耳目一新的感受。

如果您開始使用 AppImage:

  • 最初可以將其直接放在家目錄下使用
  • 稍微熟悉後,建議整理到 /opt/應用程式名稱
  • 並嘗試整合群組權限、符號連結和 .desktop 檔案。

僅僅做到這些,您就能非常清楚地理解並掌控:

  • 您的系統中部署了哪些應用程式,以及是如何部署的
  • 誰可以存取哪些應用程式

我個人認為,這正是使用 Linux 的其中一個原因。

延伸閱讀

  • Linux /usr 目錄:是 'User' 還是 'Unix System Resources' 的縮寫?](/ko/whitedec/2025/12/5/linux-usr-directory-identity/)