內容來自於AppImage的wiki頁。僅截取其中個人最看重的部分;譯爲中文;進行少量調整;進行少量額外註釋。
基礎
特性 | AppImage | Snap | Flatpak |
---|---|---|---|
桌面GUI程序 | ✅ 支持 | ✅ 支持 | ✅ 支持 |
命令行CLI工具 | ✅ 支持 | ✅ 支持 | ✅ 支持 (with App ID aliases if you edit PATH)[1] |
服務器進程 | ✅ 支持 | ✅ 支持 | ⚠️ 可行,但非主要目的 [1] |
正確應用主題 | ✅ 支持 (需要正確實現) | :x: 不支持 (snapd不支持完整的主題整合) [1] [2] | ✅ 支持 (若當前系統主題已被Flatpak化/包含Flatpak支持) [1] [2] [3] |
庫/依賴 | 基系統或捆綁在appimage內 | 基發行版snap或通過部件/插件 | Freedesktop, GNOME, KDE 主運行時或捆綁在內 |
企業背景/支持 | 社區項目,無企業背景,但被許多企業使用 | Canonical(Ubuntu的東家) | 多個公司:Endless, Red Hat, Codethink, Igalia |
沙箱/限制
特性 | AppImage | Snap | Flatpak |
---|---|---|---|
可否不在沙箱內運行 | ✅ 可以 | ✅ 可以 (若snap構建時使用且允許使用'classic'限制模式) [1] [2] | :x: 不可以 |
可以使用其他沙箱 | ✅ 可以 (如Firejail [1], AppArmor [2], Bubblewrap) | :x: 不可以 (與AppArmor緊密耦合/集成) | :x: 不可以 (與Bubblewrap緊密耦合/集成) |
安裝與運行
特性 | AppImage | Snap | Flatpak |
---|---|---|---|
可否不安裝就執行 | ✅ 可以 (設置「可執行」位即可) | :x: 不可以 (需要通過snapd安裝) | :x: 不可以 (需要通過Flatpak的用戶側工具) |
可否不要求root權限 | ✅ 可以 | ⚠️ 僅在安裝後可以 | ⚠️ 僅在安裝後可以 |
可否從壓縮的源(文件)執行且不需要解包 | ✅ 可以 | ✅ 可以 | :x: 不可以 |
作者可以直接放置離線安裝文件的下載 | ✅ 是 (.appimage - 包含離線執行程序的所有內容) | :x: 不可 (.snap - 須裝有snapd,且若需要額外安裝其他snap則系統須在線) | :x: No (.flatpakref文件需要聯網;.flatpak捆束需要安裝一個運行時) |
應用程序作者可否自行伺服程序且無功能損失 | ✅ 可以 | :x: 不可以 | ✅ 可以 [1] |
適用於/被優化適合air-gapped(離線)機器 | ✅ 是 | :x: 並不 | ✅ 是 (P2P支持允許離線安裝和升級) |
可否在非標準位置(如網絡共享、CD-ROM等)存儲和運行程序 | ✅ 可以 | 尚未確定 | ✅ 可以 (需要配置) [1] |
應用分發
特性 | AppImage | Snap | Flatpak |
---|---|---|---|
核心倉庫/目錄 | AppImageHub | Snap Store | FlatHub |
完全去中心化,無中心gatekeeper | ✅ 是 | :x: 不是 (唯一支配性軟件商城) [1] | ✅ 是 |
多版本共存 (及歷史版本) | ✅ 是 (無任何限制) | ✅ 是 (每channel一個) | ✅ 是 (OSTree上的任意版本可共存) |
安裝後可分享給他處 | ✅ 是 (文件即應用,不存在「安裝」前後) | ✅ 是 (但仍需要複製其依賴) | ✅ 是 (可以使用flatpak create-usb 複製到USB存儲器) |
更新
特性 | AppImage | Snap | Flatpak |
---|---|---|---|
更新機制 | AppImageUpdate | 從倉庫 | 從倉庫 |
二進制差異更新 | ✅ 支持 (使用zsync故不需要預先生成差異) | ✅ 支持 (僅在使用私有服務端且服務要求生成差異時) | ✅ 支持 (使用OStree來提供原子更新) |
應用程序可以自行升級 | ✅ 支持 (使用內嵌信息) | ⚠️ 若snapd已安裝 | ⚠️ 若FlatPak已安裝 |
您可以在Hypothesis上的該群組內進行評論,或使用下面的Disqus評論。