比较Linux软件箱系统

renyuneyun 2020年06月11日(周四) 1 mins

内容来自于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已安装

Related posts:

您可以在Hypothesis上的該群組內進行評論,或使用下面的Disqus評論。