内容来自于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評論。