AppDir 規範
本頁說明 AppDir 格式。AppDir 是 AppImage 的「來源」。在建置 AppImage 時,會由此類目錄建立檔案系統映像,並在前面加上執行階段。
歷史
AppDir 格式最早由 ROX Filer 描述,之後由 AppImage 專案擴充以符合其需求。
一般說明
顧名思義,AppDir 是帶有特定內容的一般目錄。AppDir 格式源自 ROX Filer http://rox.sourceforge.net/desktop/AppDirs.html:
AppRun用來作為特定應用程式「入口點」的檔案(可執行檔、腳本等)或符號連結。它位於構成 AppDir 的根目錄,因此可用來計算相對於(稍後掛載的)AppDir 的路徑。
.DirIcon位於根目錄的 PNG 圖示。可供縮圖工具等使用,以顯示應用程式圖示而非通用檔案類型符號。尺寸應為標準圖像大小之一,例如 128x128 或 256x256 像素。
以上兩個項目沿用自 ROX Filer 的規範。雖然 ROX Filer 另有其他(可選)項目,但 AppImage 未使用它們,而是新增了下列項目:
myapp.desktop位於根目錄的桌面檔,用於描述實際應用程式。由於 AppImage 遵循 one app = one file 原則,一個桌面檔就足以描述整個 AppImage。根目錄中 |不得| 有超過一個桌面檔。檔名不限,只要副檔名為
.desktop即可。可為指向如usr/share/applications/...等子目錄的符號連結。
myapp.<圖示副檔名>``(例如 ``myapp.png、myapp.svg)應用程式圖示的最佳可用品質版本,理想情況為向量圖。可為指向
usr/share/icons/hicolor/...等子目錄的符號連結。多數情況下,.DirIcon 會是此檔案的符號連結。檔名必須與桌面檔中Icon=欄位所設定的值一致。AppImage 以及 XDG 圖示規範建議使用與桌面檔同名的全小寫檔名。
以上四種類型的項目 |必須| 包含於 AppDir 中,才能符合此規範。
慣例
與前一節的規則不同,本節介紹的內容並非基本要求。不過這是建議用於 AppDir 的應用程式結構。它採用了廣為人知的 Linux 標準概念,例如 Filesystem Hierarchy Standard`_(`Linux Standards Base 的一部分)。
也參考
FHS 的良好摘要可參考 Wikipedia。
usr 子目錄
依照 FHS,大多數 AppDir(尤其是由 linuxdeploy 等官方工具建立的)都包含 usr 目錄。
usr 最初是 unix system resources 的縮寫。依 FHS 定義,該目錄包含共享的唯讀資料,這正符合 AppImage 的需求,因為 AppImage 也是唯讀。
此目錄會以不同子目錄分別包含應用程式、(共享)函式庫、桌面檔、圖示等。其中只有少數對 AppDir 有用:
bin可供使用者執行的可執行檔。
libbin中的應用程式使用的(共享)函式庫。share與架構無關的(共享)資料。在此目錄中常見的特殊子目錄包括:
applications包含
bin中應用程式的桌面檔。通常此目錄只有一個桌面檔,並會在根目錄建立符號連結。icons包含所謂的 icon themes 的目錄。至少包含一個,且常包含主應用程式的一組圖示。圖示由根目錄的桌面檔參照,因此同樣適用 相同限制。範例路徑:
<root>/usr/share/icons/<theme>/<resolution>/apps/myapp.<ext>,例如<root>/usr/share/icons/hicolor/256x256/apps/myapp.png。置於此目錄的圖示主題會在所謂 桌面整合 時被複製到系統。
總結
現代打包工具(如 linuxdeploy)預設會建立上述目錄,以標準化並一致化 AppDir 的建立流程。若您打算 手動建立 AppDir,建議遵循這些建議。