
从 Ubuntu Snap 争议到实用主义
省流
本文想澄清或表达的观点:
事实: Ubuntu 六年来通过
apt后安装脚本转到 Snap 的包只有 Firefox、Chromium、Thunderbird 三类,不是把全部软件包都变成 Snap。Firefox 和 Thunderbird 由 Mozilla 官方维护,是 Mozilla 和 Canonical 的合作结果,不是 Canonical 私自替换。工程原因: Ubuntu(无论是否 LTS )锁定软件大版本以保证服务器稳定性和仓库维护统一性,但浏览器需要持续滚动更新。Debian/RHEL 选择 Firefox ESR,Ubuntu 和 Mozilla 合作选择用 Snap 解耦——具体分析见全文。
Snap 与 Flatpak 各有用武之地: Flatpak 专注桌面 GUI,Wayland、主题、Portal 适配更好,桌面生态更广。Snap 覆盖 CLI(
--classic模式免沙箱)、后台服务(Docker、LXD)、系统组件(Ubuntu Core 不可变基础设施),并在 Nvidia 驱动直通和浏览器沙箱兼容性上有实际优势。两者不是替代关系,是不同场景的不同选择。需要批评:
apt install firefox静默重定向打破了用户对包管理器的预期,apt remove无法真正卸载 Snap 的 Firefox;Snap Store 后端闭源、国内无镜像、桌面端部分体验短板——这些都是真实问题,应该批评和改善。实用主义: 操作系统是拿来干活的。新手需要开箱即用,不是毫无基础先折腾三天。
Linux is free if your time is free——发行版的一些决策本质上是在帮用户节省时间成本。开箱即用和折腾不矛盾:低门槛吸引新人 → 友好社区中学习 → 成长为能帮别人的大佬,才是良性循环。社区层面: Linux 桌面份额不到 5%,不能用纯桌面视角去审判全场景发行版的决策。站队拉踩只会让社区乌烟瘴气,新人望而却步。批评对准具体问题,不喜欢就换——这是 Linux 的自由和核心价值。
一、事实澄清
在 Ubuntu 中运行 apt list | grep snap1 你会发现整个 Ubuntu 只有三类包是默认会重定向到 Snap 的(马上分析原因),即Firefox、Chromium、Thunderbird。其他七万个包,包括各种开发工具,gcc/python3/nginx/rustc 都是 deb 包。社区里争相跟风所谓的"整个 Ubuntu 都是 Snap"是一个不断情绪化放大的标签而不是事实。
时间线
第一个过渡包 Chromium(2019年10月)
Snap 本身的概念最早于 2014 年提出,2016 年随 Ubuntu 16.04 LTS 正式引入系统。但"通过 apt install 静默安装 Snap 版本"的这个过渡包机制,是从更晚的时间点才开始的。
第一个被改动的不是 Firefox,而是 Chromium。2019 年 10 月 10 日,Canonical 正式宣布 Ubuntu 19.10 中的 chromium-browser deb 包变为过渡包,安装时实际拉取 Snap 版本。直接原因非常具体:Chromium 算是一个常用软件,更新频繁、依赖关系复杂、安全补丁密度高的项目。在 Ubuntu 每个稳定版里对 Chromium 做向后移植,几乎要耗尽一个全职维护者的精力。Canonical 选择自己编译 Chromium 来制作 Snap 包(Chromium 不像 Firefox 有 Mozilla 这样的上游主动维护跨发行版的包),这样只需要维护一个通用版本,就可以同时推送到所有支持 Snap 的 Ubuntu 系统。
顺便看看 Debian Stable 是怎么做的:Chromium 的安全更新横跨 oldoldstable(120.x)、oldstable(143.x → 148.x)、stable(145.x → 148.x)到 unstable(148.x),四个分支的大版本更新移植全部由同一位维护者 Andres Salomon 承担。从用户的角度来看,现在这两种打包方式最后的实际体验未必有很大的体验区别,不过 Canonical 可以把更多精力放在基础设施等更重要的事情上。
最受关注的过渡包:Firefox(2022 年 4 月)
Firefox 的转换比 Chromium 晚了两年多。2021 年,Canonical 与 Mozilla 达成正式合作协议——这一转换实际上是由 Mozilla 主动推动的,不是 Canonical 的私自决策。Mozilla 希望绕过为每个 Ubuntu 版本单独维护 .deb 的延迟,直接向所有支持 snapd 的发行版推送安全补丁和新功能。在 Snap Store 中,Firefox snap 带有 Verified 标识,确认它由原始开发者(Mozilla)而非第三方直接发布和维护;Canonical 工程师的角色是与 Mozilla 协作优化 snap 在 Ubuntu 上的性能表现和沙箱隔离策略(这与 Flatpak 有所不同,下面分析)。从 Ubuntu 22.04 LTS 开始,新安装系统的用户默认获得 Snap 版 Firefox。也就是说,当用户在终端输入 apt install firefox 时,系统执行的不是安装 deb 包,而是安装由 Mozilla 官方维护的 Firefox Snap。这正是用户开始产生困惑和社区争议的节点,Ubuntu 上的 apt 预期行为被打破了。
Thunderbird 和 Firefox 的逻辑是一样的
再次强调事实
你用 apt install build-essential podman vim 等安装的包都是 deb,Ubuntu 仓库中依然是数万个传统 deb 包,并没有计划全面 Snap 化(另外说 Ubuntu Core)
二、工程原因
服务器的理念
Ubuntu LTS(也包括current release)/Debian/Opensuse Leap/RHEL在服务器和关键基础设施上占据主导地位,本质上是锁定了每个软件稳定发行后的大版本,在发行版中这些软件的大版本是冻结的,以后的更新几乎都是回溯安全补丁或者小版本的更新,不引入行为变更,不破坏兼容性。企业可以把系统部署到生产环境,五到十年都不用操心系统安全更新会不会把服务搞崩。这是服务器的硬性要求,同样不是什么 Canonical 故意不更新版本强推 Snap Firefox。
这个可以提前说,Ubuntu 的目标是既作为服务器可以稳定部署的系统,又可以给新人降低门槛开箱即用,并体验到相对新软件的系统。Canonical 显然没有精力既维护服务器锁版本分支,又维护什么 Rolling 分支给桌面(而且对于普通或新人用户而言,稳定性也必须要保证,Rolling 也不太适合)。同一个 base 可以服务与大多数实用情况,如果真的有用户需要追新,也确实有 Arch 和 Fedora 可以选择。这差不多是 Canonical 要做到既要有要的最好结果了。
具体分析浏览器
浏览器是很常用的软件(有些不太常用的 GUI 软件确实也可能没精力维护而在 deb 仓库锁版本了,后面会再分析),Firefox 几乎每四周发行一个大版本,每个版本除了新特性外还有大量安全修复,而且 Mozilla 官方也不一定会支持旧版本(除ESR外)的错误修复,Chromium 差不多是一样的。开源社区精力有限。
Ubuntu 也面向桌面用户,Canonical 考虑用户可以用到最新版本的浏览器,那这就有一个矛盾,如果 Ubuntu 把这么常用的软件锁一个大版本,那 Canonical 就要自己回溯新浏览器的成千上万的补丁。要是不回溯,不说缺特性了,浏览器遇到安全问题找谁呢?Canonical 的人力也有限,看看 Debian 的情况,活跃贡献者从 2012 年的约 3270 人下降到 2025 年的约 1473 人,核心上传者不足千人,维护着超过七万个软件包。而且让 Canonical 把大量精力花在为占比不到 5% 的桌面用户回溯浏览器补丁上,直接意味着服务器领域的维护会受影响。
Arch 和 Fedora 的维护压力小得多
要是不断在仓库推送最新浏览器呢,那会破坏 Ubuntu 的理念。浏览器的依赖也必须同步滚动,一些共享库同步更新,很可能会破坏其他软件包的 ABI 兼容性,生产环境不可接受。要是问为什么不两种依赖都保留,那这也是徒增维护压力。
RHEL 和Debian Stable 选择的是 Firefox ESR,ESR 一年只发布一次大版本,中间只做安全修复,不引入新功能或行为变更。这对服务器来说是完美方案:维护负担小,系统稳定。
ESR 本身是合理的选择,只是目标用户不同。对桌面用户而言,代价是功能特性长期落后。Debian 上的 Firefox ESR 可能落后十个大版本,我体验到的就是 WebGPU 和编码器支持缺失。早在 2012 年,Ubuntu 开发者就指出过:如果因为浏览器版本太旧导致常用网站的新功能在 Ubuntu 上跑不了,对桌面用户来说是灾难性的体验。
大多数用户手机或者 Windows 上的浏览器都是自动更新的,用户几乎体验不到新旧这个过程,大部分用户并不会自己故意不更新浏览器。Canonical 和 Mozilla 能让用户用上最新浏览器而且也是自动更新,这个选择我觉得没有什么问题。
可能会有用户说"我用 ESR 落后十个大版本照样看 Bilibili 啊"——落后十个版本也许确实还能用,但二十个呢?新的实用功能特性呢?新的 Web 标准带来的改进呢?发行版的决策不能只考虑某一个用户当下的感受,而是要为大多数用户在未来一段时间内的整体体验负责。你不需要某个新特性,不代表其他用户不需要;你现在感觉不到安全风险,不代表开发者不应该替你防住。
Canonical 最终选择的是和 Mozilla 合作,直接用 Snap 解耦了。Mozilla 官方维护Snap Store 的浏览器,打包和推送更新,Canonical 工程师优化 Snap 本身的性能和沙箱问题。Mozilla 省去了为每个 Ubuntu 版本单独维护 deb 的压力,一次打包就能推送到所有支持 snapd 的发行版。Canonical 不需要为每个 LTS 分支回溯浏览器补丁,可以把精力集中在更关键的基础设施——内核维护、安全更新、Ubuntu Pro 长期支持、云镜像优化等——这些才是 Ubuntu 真正的基本盘。
有人会问:Mozilla 明明有官方 apt 源,直接加源装 deb 不就行了,就像 Fedora 那样会询问开不开 rpm fusion 源?而Ubuntu 不默认开启任何第三方软件源,包括 Mozilla 的 apt 源在内,原因还是稳定性承诺。任何非 Canonical 维护的外部源都可能引入不在发行版测试范围内的组件,增加依赖冲突和系统不稳定的风险。Mozilla 的核心精力在浏览器开发上,不会也无力保证其 apt 源在任何 Ubuntu 版本上不破坏系统。一旦用户因为第三方源导致系统崩溃,最终承担骂名的不是 Mozilla 而是 Ubuntu 自己。
Snap 在这种局面下是对双方都更安全的选择:Mozilla 只需维护一个沙箱隔离的 Snap 包,Canonical 不用担心第三方源引入系统级依赖冲突破坏稳定性,用户也拿到了不断更新的浏览器。
为什么不用 Flatpak?(详细分析见下一章)
除了 Canonical 不必要再增实体,还有一个技术层面的原因:Flatpak 的安全模型与浏览器的内置沙箱机制存在冲突,没有优雅的解法。具体分析放在下一章"为什么是 Snap 而不是 Flatpak"中展开。
浏览器之外
锁版本策略的影响不止于浏览器。对桌面用户常用的开发工具和效率软件,Ubuntu 官方源的版本经常落后上游。Neovim 在 Ubuntu 24.04 LTS 的官方源停留在 0.9.x,而最新稳定版已是 0.12.x 以上;PrismLauncher 在 Ubuntu 26.04 LTS 官方源锁在 10.0.5,Snap 版已更新到 11.x。类似情况也出现在 fish、fastfetch、ripgrep 等工具上。
这不能说明 Snap 是唯一出路。解决方案很多:PPA 能拿最新版但可能引入依赖冲突,Flatpak 和 Snap 沙箱隔离不破坏系统,Homebrew on Linux 专门适合命令行工具。用户应该根据自己的场景做选择——想要每个包都是最新版,滚动发行版本身就是合理选择。Ubuntu 做不到在所有维度上满足所有人,这也是多元生态存在的意义。
三、对比 Snap 与 Flatpak
社区对 Snap 的另一大批评是"重复造轮子"——Flatpak 已经存在且做得不错,Canonical 为什么还要另搞一套?这一章从技术细节出发,分析两者的实际差异。
针对浏览器,Flatpak 未必适合
现代浏览器内部有自己的一套安全沙箱机制,将不同标签页、渲染进程、插件互相隔离,防止恶意网页突破浏览器访问系统。这套沙箱依赖 Linux 的非特权 User Namespace——允许普通用户无需 root 就能创建临时的隔离环境来运行渲染器等子进程。这是浏览器安全模型的基础。
Flatpak 的安全模型(基于 Bubblewrap)默认禁用非特权 User Namespace,目的是限制容器内应用逃逸沙箱的能力,本身是合理的安全考量。但这和浏览器的内置沙箱机制产生了直接的、无法调和的冲突。
浏览器在 Flatpak 里只剩下两个选择:要么关掉自己的内置沙箱(削弱对网页攻击的防护,将安全完全外包给 Flatpak 的外层沙箱),要么依赖 zypak 这类非官方的 hack 手段绕过 Flatpak 的限制。两者都不优雅,且安全影响不明确。Flatpak 社区对这个问题是知情的,但目前为止没有公认的解决方案。2025 年 Linux Application Summit 上,Flatpak 核心开发者 Sebastian Wick 也坦言嵌套沙箱在 Flatpak 中"不工作",相关 issue 存在已久但"没人知道怎么解决",同时指出 Flatpak 项目的核心开发已处于停滞状态,大量 MR 长期无人 review。
Snap 在这条技术路径上做出了不同的取舍:它不是用一个统一的沙箱去管所有东西,而是通过 AppArmor 为每个 Snap 应用提供外层安全边界,同时允许浏览器在内部自由使用 User Namespace 来运行自己的成熟沙箱隔离。浏览器自身的多进程隔离、站点隔离等安全机制完全保留。这是 Canonical 和 Mozilla 在工程上专门协作的结果,也是 Canonical 选择 Snap 而非 Flatpak 来分发 Firefox 和 Chromium 的核心技术原因,和所谓"造轮子情结"或者"商业绑架"无关。
有人可能会说"我也体会不到有什么沙盒区别"——只能说浏览器和发行版的开发者在这件事上考虑得比你周到。另见上面的注释
下面分析各种情况下二者的对比
Nvidia 闭源驱动的处理差异
对于使用 Nvidia 显卡的桌面用户,图形驱动的处理方式是两者另一个明显的差异点。
Flatpak 的做法是:用户需要额外安装与宿主机版本严格匹配的 org.freedesktop.Platform.GL.nvidia runtime。这带来两个实际问题:系统上会存在两份 500MB 以上的 Nvidia 用户空间驱动(一份宿主系统的、一份 Flatpak runtime 里的);宿主机驱动更新后,如果 Flatpak runtime 没有及时跟着更新,驱动版本不匹配就会导致软件黑屏或崩溃。
Snap 的做法不同:通过 gpu-2404 content interface,snapd 直接把宿主机的 Nvidia 用户态驱动库直通给 Snap 容器。可以实际验证这一点——lsof 命令能看到 Snap 应用在运行时直接读取了 /var/lib/snapd/hostfs/.../libnvidia-glcore.so.595.71.05,路径中的版本号就是宿主当前安装的驱动版本。实际测试中,宿主机驱动从 595.58 更新到 595.71,Snap 应用不需要做任何 refresh 操作就直接用上了新版驱动。
两种做法的取舍不同——Flatpak 的完全解耦模型在某些场景下更干净,但也引入了版本同步的维护心智成本;Snap 选择直通宿主驱动的方式更省心,更符合"开箱即用"的定位。
Flatpak 的强项:桌面 GUI 生态更好
Flatpak 是专门为桌面 GUI 应用设计的,在这个领域它比 Snap 做得更成熟:
- 桌面 GUI 应用生态更广:Flathub 上桌面应用的数量和更新活跃度远超 Snap Store 的桌面应用。对于纯 GUI 用户来说,Flatpak 往往是更好的选择
- Wayland 原生支持更完善:Flatpak 应用通常能直接以原生 Wayland 运行;Snap 的 VSCode 至今仍只支持 XWayland
- 主题自动适配更流畅:Flatpak 对不同桌面环境的主题适配做得更好,gtk/qt 主题会自动识别并安装,Snap 除了gtk-common-themes 做的还不够好外还有网络问题可能连主题都下不动。
- Portal 集成更成熟:文件选择器、屏幕截图、打印等桌面 Portal 功能,Flatpak 的支持更加完善
- 权限管理更直观:有 Flatseal 这样的图形化工具可以精细调整每个 Flatpak 应用的沙箱权限。Snap 的
snap connections虽然也能做到,但操作不如 Flatseal 方便
Snap 的强项:CLI、后台服务、不可变基础设施
Snap 的定位比 Flatpak 更广,从一开始就不是只做桌面 GUI 打包:
--classic模式对 CLI 和 IDE 友好:Classic snap 不设沙箱隔离,可以直接访问宿主机的 home、usr、编译器、Git、SSH Agent 等。JetBrains 全系 IDE 和 VSCode 都有厂商官方维护的 Snap 包,安装后体验等同于原生 deb。Flatpak 要做到同样的事,需要手动配置flatpak-spawn --host、安装额外的 SDK Extension、逐个设置环境变量。连 Universal Blue(Bazzite 背后的团队)都明确不建议用户通过 Flatpak 安装 JetBrains IDE 和 VSCode——这些工具天生不适合沙箱
Snapcraft 上甚至有 Opencode 和 Claude Code,当然,也是经典模式发布的
- Flatpak 对 CLI 的天然短板:Flatpak 的 CLI 应用启动命令长(
flatpak run io.github.sxyazi.yazi),日常频繁调用不友好;沙箱限制导致访问宿主文件系统、系统调用都需要额外配置。这不是 Flatpak 做得不好——而是它自己的文档也明确写明了定位:"总的来说 Flatpak 最适合桌面应用。CLI 应用虽然也能跑,但在某些情况下可能并不合适",并列举了无法运行 SUID 二进制(如su、sudo)、不能访问宿主/proc、seccomp 会拦截子命名空间的创建、不支持内核模块和驱动、无法导出 udev 规则和 systemd 服务等限制 - 后台服务和系统组件:Docker、LXD、MicroK8s 等后台服务都可以通过 Snap 打包和部署。Flatpak 不支持这类场景——它无法管理守护进程、不能定义 systemd 服务、不适合运行系统级组件
不可变基础设施与统一分发
跳出桌面看,Snap 在 Ubuntu 生态中的角色远不止"另一种桌面包管理器"。
全行业的基础设施领域正在汇聚到同一个方向:不可变系统、原子更新、自动回滚。Red Hat 推出了基于 OCI 容器镜像的 bootc(Image Mode),Fedora 有基于 rpm-ostree 的 Silverblue/Kinoite,SUSE 有 MicroOS(事务性更新)。Ubuntu 的对应方案是 Ubuntu Core——整个操作系统由独立的 Snap 组件构建,每个部分原子更新、出问题一键回滚。
这解释了为什么 Snap 要做沙箱隔离、只读挂载、独立依赖——这些被桌面用户吐槽"启动慢了点"的设计,在服务器和 IoT 场景里是实在的优势。snap install lxd 或者 snap install microk8s,依赖全打包、版本统一、回滚原子化,apt install 做不到这些。Snap 在 Ubuntu 生态里是一条全场景基础设施方案的载体。
Ubuntu LTS 的 Livepatch 服务是这套统一交付体系下的一个具体应用。RHEL 的 kpatch 和 SUSE 的 kGraft 功能上虽然一样能做内核热补丁——差异不在能否热更新,而在于 Snap 的组件化交付让 Canonical 可以用同一套机制同时覆盖服务器集群的管理(配合 Landscape 做灰度推送、隔离环境、统一分发)和个人用户的免费使用(Ubuntu Pro 提供免费 5 台设备)。
当然,Livepatch 只修内核高危漏洞,不能替代常规重启。如果你的机房混跑着多种发行版,还是需要 KernelCare Enterprise 这类跨发行版的第三方方案。
一览对比
| Snap | Flatpak | |
|---|---|---|
| 设计定位 | 全场景(GUI / CLI / 服务 / 系统组件) | 桌面 GUI 应用 |
| 沙箱机制 | AppArmor + 允许内部 User Namespace | Bubblewrap + 禁用嵌套 User Namespace |
| 浏览器沙箱兼容 | ✅ 浏览器内置沙箱完整保留 | ❌ 内置沙箱削弱,依赖 zypak 等 hack |
| Nvidia 驱动 | 直通宿主用户态驱动,自动跟随更新 | 需额外安装匹配版 runtime,不同步会黑屏 |
| CLI 支持 | ✅ 原生支持,--classic 模式免沙箱 | ❌ 启动命令长,沙箱阻力大,社区不鼓励 CLI 提交 |
| IDE 支持 | ✅ 厂商官方维护,--classic 直接访问宿主编译器/Git/SSH | ❌ 需手动配 flatpak-spawn --host、SDK Extension |
| 后台服务 | ✅ LXD、Docker、MicroK8s 等 | ❌ 不支持守护进程和 systemd 服务 |
| 不可变基础设施 | ✅ Ubuntu Core | ❌ 不在设计范围内 |
| 桌面 GUI 生态 | ❌ 较弱,桌面应用少于 Flathub | ✅ 更强,Flathub 应用数量和活跃度领先 |
| Wayland 支持 | ❌ 较弱,VSCode 仍走 XWayland | ✅ 更完善 |
| 主题/Portal 适配 | ❌ 较弱 | ✅ 更流畅 |
| 权限管理 | snap connections 命令行为主 | ✅ Flatseal 图形化工具,更直观 |
| Store 后端 | ❌ 闭源,Canonical 控制 | 开源,Flathub 社区维护 |
| 国内网络 | ❌ 无镜像,靠 Cloudflare CDN 看运气 | ✅ 有中科大等镜像站可换源 |
总结:各有用武之地
Flatpak 和 Snap 不是互相替代的关系。Flatpak 专注桌面 GUI,在这个领域更成熟、生态更广。Snap 的覆盖面更全,从 CLI 到后台服务到系统组件再到不可变基础设施,并在 Nvidia 驱动直通和浏览器沙箱兼容性上解决了 Flatpak 模型中难以优雅处理的问题。
用户完全可以根据自己的需求混用:GUI 应用优先 Flatpak,IDE 和 CLI 工具可以选 Snap,后端服务用 Snap 部署——两者都有各自适合的场景。把任何一个贬为"垃圾"或者"多余的轮子",都忽略了真实的工程差异和背后的场景多样性。
四、不足之处
前面分析了 Snap 的工程逻辑和技术定位,但这不代表 Snap 或 Canonical 的做法没有问题。以下问题是真实存在的,应该被批评和改善。
apt 静默重定向:破坏了用户对包管理器的预期
这是 Snap 争议中最核心、也最正当的批评。
apt 是 Debian/Ubuntu 生态的基石。用户在终端输入 apt install firefox,心理预期是安装一个 deb 包——这是十几年来的默认行为。但实际发生的事情是:系统静默地安装了 Snap 版本的 Firefox,整个过程没有任何提示告知用户"这不是 deb"。
更糟的是卸载行为的不一致。用户有需求,执行 apt remove firefox 想要卸载,但这个命令并不会真正移除 Firefox 的 Snap——因为 Snap 装在 snap 下而不是 apt 的追踪范围里。用户只会看到浏览器还好好地待在系统里,然后感到困惑,伤害了用户对系统的信任。
需要补充的是:Ubuntu 桌面版在安装完成后就已经自带了 Firefox 浏览器。对绝大多数新手用户来说,他们开机就能用,不需要碰命令行,底层是 deb 还是 snap 根本不重要——Firefox 图标在 Dock 上,点击就开。问题不是出在"新手找不到浏览器",而是出在当用户主动想管理自己的软件时,apt 的行为和预期完全脱节。
Canonical 在这件事上的实现方式和沟通都做得不好。更合理的做法是在 postinst 脚本中给出明确的 echo 提示,告诉用户"此命令实际安装的是 Mozilla 官方维护的 Snap 版本,如需传统 deb 包请使用其他方法"。技术上完全可行,但 Canonical 没有这么做。
我能想到的可能理由是要真正的开箱即用,以至于用户不需要再次输入第二条命令
Snap Store 后端闭源与中心化
另一个绕不开的争议是 Snap Store 本身。
snapd 客户端是开源的,但 Snap Store 的后端服务完全由 Canonical 控制,代码也不开放。对于习惯了传统 Linux 包管理去中心化模型的用户来说,这和一个由单一商业公司控制的 App Store 没有本质区别。用户无法自己搭建 Snap Store 的镜像服务器,无法审计后端做了什么,无法脱离 Canonical 的基础设施独立使用 Snap 生态。
有些用户认为中心化也许能让软件来源更加信任,某种程度上可能确实比 AUR 安全,但不展开分析了
这种控制权集中引发的担忧是完全合理的。这是 Canonical 作为商业公司的决策,此处不替它辩护。需要指出的是 snapd 本身是开源的,社区在客户端层面仍有贡献和改进的空间——但 Store 后端的闭源确实是一个客观存在的限制。
桌面端体验短板
与专注于桌面 GUI 的 Flatpak 相比,Snap 在桌面端确实有实实在在的不足:
- VSCode Snap 版至今只支持 XWayland,无法原生运行在 Wayland 下,输入法体验很糟糕。
- 非 Yaru 主题的适配不完善。虽然
gtk-common-themes让大多数应用能自动适配,但第三方主题的支持仍不如 Flatpak 流畅。加上网络问题,有时候主题 snap 都下载不下来 - 部分 Intel Xe 核显的 VA-API 硬件解码存在问题
- Firefox Snap 过去确实有很多问题:插件兼容性、中文输入法无法调用、冷启动速度让人焦虑。其中启动速度经过多轮优化后已经大幅改善,但早期体验给用户留下的负面印象是真实的
国内用户的实际困难
对国内用户来说,Snap 还有一个无法回避的痛点:网络。
Snap 的后端走 Cloudflare CDN,但 Canonical 没有启用中国大陆的节点。下载速度完全看运气——IPv6 偶尔能跑满千兆,更多时候龟速到令人崩溃。Flatpak 好歹可以通过中科大等镜像站换源,Snap 换不了源,只能硬扛。移动宽带用户尤其难受,开透明代理能缓解,但这就已经是门槛了。
如果 Canonical 能启用 Cloudflare CDN 的国内节点,这个问题就能大幅改善。但目前来看,这是一个长期存在的体验障碍。
五、实用主义——工具是拿来解决问题的
主要分析 Ubuntu系发行版的实用性
任何操作系统、任何软件,最终目的是帮人完成工作。这话说出来像是废话,但在 Linux 社区的很多争论里,这个基本前提经常被忘掉。
服务器的地位毋庸置疑
Ubuntu 在云和服务器领域的市场份额不需要多说。直接查 AWS、Azure、GCP 上跑着的 Ubuntu 实例数量,没人会因为服务器用 Ubuntu 而质疑什么。服务器的需求很明确:稳定、安全、可预测、长期支持。Ubuntu LTS 在这个领域做得足够好,争议很少。
但 Ubuntu 不止做服务器。Canonical 的目标是用同一套 base 同时覆盖两类用户——这也是前面工程原因部分反复提到的"既要又要"。服务器端已经证明了这套逻辑可行,这里想多说桌面端。
桌面端的新手需要什么
一个刚从 Windows 或 macOS(?) 转过来的用户,第一次面对 Linux 时,他需要的到底是什么?
是开机就能用,装软件不报错,浏览器能打开网页,Steam 里的游戏能跑起来,系统小更新几乎不需要操心公告,是遇到问题去论坛问不会被嘲讽。
他不需要知道 deb 和 snap 的区别。不需要理解 User Namespace 是什么。不需要在装 Nvidia 驱动之前先去 Wiki 查清楚自己的显卡用哪个版本、要不要手动签 MOK。他甚至不需要知道什么是包管理器——应用商店里搜一下,点安装,就完事了。
这些听起来很基础,但 Linux 桌面这么多年没做好的恰恰就是这些基础的事。
Ubuntu 做了什么
Ubuntu 在这些基础的事上做了不少务实的工作:
- 桌面体验。Ubuntu 的 Gnome 是自定义了许多,除了优化性能,还预装了一些常用插件(且不会随着版本更新而失效,因为是统一开发的),预装了输入法(而且Ubuntu 的 Gnome桌面不需要 Kimpanel 插件就能用 fcitx5 输入法)等等。虽然我不在这里提 Gnome 和 KDE 开箱即用的区别,但针对 Ubuntu 的做法是可以说的
- 预编译 Nvidia 驱动模块。不用手动装,不用配 DKMS,直接在安装界面选中"安装第三方驱动"即可。命令行的话,虽然并不能保证新人查得到文档,但我这里也给出来,也是非常简单的,
sudo ubuntu-drivers install,如果具体点就是类似于sudo apt install linux-modules-nvidia-595-open-generic nvidia-driver-595-open,大部分用户不需要考虑用自定义内核,这种方法就够了。 - Secure Boot 开箱即用。微软信任 Canonical 的签名,从 UEFI 到桌面一路顺畅,不需要手动注册 MOK 密钥。同样有预编译驱动的 Arch 和 openSUSE,用户还得自己签
- 从 26.04 开始新打包了 CUDA Toolkit。做 AI/ML 的用户装完系统就能开始干活
- 闭源编解码器。同样在安装过程可以选,命令行的话就是
ubuntu-restricted-addons包 - 元包丰富。Ubuntu 相比于 Debian 打包了更多的元包,在桌面或各种环境下遇到依赖或功能缺失问题好解决,基本不需要背大量包名,如
kubuntu-desktop、ubuntu-standard等等 - 其他开箱体验的方方面面。可以自己体验一下,如预装的各种软件,稳定的自动更新,便捷的应用商店(通过自带的 snap 安装telegram-desktop、Steam)等等
很多极客鄙视应用商店,喜欢敲命令行。但对普通用户而言,一个干净、隔离、体验一致的发行版软件源(比如 Snap Store 或 Flatpak/Flathub)是巨大加分项。
正如 Elijah 在 LTT 播客中所感叹的,当他使用 Bazzite 内置的软件商店时,体验远超 Windows:没有烦人的 Edge 弹窗,没有强制的 OneDrive 订阅推销,也不需要每打开一个新应用就重新验证一次 2FA。不需要关心底层是不是沙盒,只要能安静、无感地获取软件并自动更新,这就是普通用户最想要的。这也侧面证明了,发行版如果能把软件分发(甚至是跨发型版的包管理)做到开箱即用,用户是绝对是买单的。
这些不是什么高深的技术创新。它们就是把别人需要折腾的事情提前做掉了,让用户不用操心。你说它替你做了选择,就是产品化的意义。下载 Ubuntu ISO、走完安装向导、重启,就能看到一个能用的桌面。听起来简单,但在 Linux 世界做到这一点并不容易(但是,见附录一)。
这是 Ubuntu Server 的文档,质量挺高,包括上面的 Nvidia 驱动安装指南 https://ubuntu.com/server/docs/
可惜到了 26.04 还有人跟着 CSDN 的过时教程手动装 CUDA,然后说"Linux 用 Nvidia 好麻烦"。
Fedora 需要额外的源才能装闭源编解码器和树外驱动,之后说的 Universal Blue更省心
LTT 视频里的反面教材
尽管大部分情况下这些发行版开箱即用,但并不能保证所有硬件都能很好工作,更全面的兼容性也是 Linux 桌面领域需要解决的问题
Linus Tech Tips 的 2026 Linux 挑战视频是一个很好的观察窗口。Linus 只是想剪视频、打游戏、看网页——这是普通用户的日常需求。他们在挑战中遇到的具体问题包括:
- Pop OS 的 Cosmic 桌面:Pop OS 下载页面标着 LTS,但 Cosmic 桌面环境实际上处于公开 beta 阶段。一个新手根本不可能知道要先问"这个桌面环境是不是 beta"。装完之后各种不稳定。
- Bazzite 上的 DaVinci Resolve:Bazzite 是不可变系统(基于 Fedora Atomic,和 Universal Blue 同族),核心系统文件只读。Linus 像装 Windows 软件一样下载 Resolve 直接运行,结果当然不行——不可变系统不允许安装程序随意修改系统文件。最终靠一个 6 分钟的视频教程才找到正确的安装命令。装上之后又遇到 H.264/H.265 视频编解码器缺失的问题,部分文件无法播放或导出。(事实上 ublue 应该是自带这些编解码器的,这里就不知道为什么了)
- Kubuntu 安装后黑屏:装完 Kubuntu 第一天就黑屏了几个小时,第二天早上才莫名恢复正常。(特定硬件问题)
- NTFS 游戏盘配合 Proton:把 Windows 下用的 NTFS 格式游戏盘直接挂到 Linux 的 Steam 库里用,部分游戏 glitches 或打不开。Proton 对 NTFS 的兼容性仍然不够好。(Linux 原生 NTFS 驱动在 7.1 版本可用)
- OBS 屏幕捕获:在 Kubuntu 上装 OBS 录屏,发现 deb 版本无法选择要录制的显示器。解决方案是换 Flatpak 版,但 KWin 的隐私设置又阻止了屏幕捕获,论坛里有五种不同的解决方法,不知道哪个才有效。(可能是特定硬件或桌面,我这里的 Ubuntu 26.04 LTS 是正常的)
除此之外,他们在日常交互中也频频遇到“非标准逻辑”的摩擦。例如 Linus 提到,Linux 的搜索逻辑有时“为了和 Windows 不同而不同”:当他在搜索框输入“sleep”想要调整睡眠设置并习惯性按下回车时,系统却直接休眠了。
Luke 则点出了 Linux 桌面排错的终极困境:身份边界的模糊。当他在 Windows 上游戏崩溃时,他知道这是游戏的问题;但在 Linux 的 Proton 兼容层上遇到报错时,他往往陷入迷茫:“我根本不知道这个错误是因为我在用 Linux,还是游戏本身就有 Bug?”这种不确定性,极大地增加了普通用户的心理负担。
Linus 在视频里说了一句很实在的话:"普通人不想把修操作系统当爱好。"
遇到问题,极客会觉得有意思、有挑战、能学到东西。但普通用户只会觉得挫败——"我明明什么都没干,为什么就是不行?"然后回到 Windows,然后告诉其他朋友"Linux 太难用了别试"。
这是 Linux 桌面一直走不出小众圈子的核心原因之一。
"Linux is free if your time has no value/if your time is free"
这句话在技术社区里流传已久,最早可以追溯到 Jamie Zawinski。字面意思是"Linux 是免费的——如果你的时间也是免费的话"。
开源软件不收钱,但配置、维护、排错需要投入实实在在的时间。对于喜欢折腾的人,这种投入是乐趣——他们享受理解系统、定制环境、解决问题的过程。这完全没有问题,这也是 Linux 社区活力的重要来源。但对于只想用电脑干活的人,这种投入就是门槛。如果装个浏览器都要先学会配源、解依赖、查 Wiki、在论坛里翻五条不同的答案然后逐个试,那这个"免费"的代价就是劝退。
商业发行版那些决策,有些甚至引起(精英主义社区)争议的,可用说本质上就是在帮用户节省这部分时间成本。
这不是"背叛开源精神"。这是让更多人用上 Linux 的务实方式。
开箱即用和折腾不矛盾
这里必须说清楚:我从来没有否定折腾的价值。我自己也折腾过 Gentoo、配过 Hyprland、编译过内核。折腾本身是好玩的,是学习 Linux 的最佳途径之一。
关键在于——折腾应该是可选的,不是必须的。
一个健康的 Linux 桌面生态应该是这样的:新人被低门槛吸引进来 → 系统开箱就能用 → 在友好的社区氛围里慢慢了解 Linux 的工作方式 → 有兴趣有时间就去深入折腾 → 变成能帮别人的老手。这才是良性循环。
反过来,新人一来就被依赖冲突、驱动黑屏、论坛嘲讽这"三板斧"打中,直接回到 Windows——除了应有的门槛外,这种氛围也是让新人望而却步。
推荐 Arch 给想深入学习的人完全没问题,Arch 是好发行版。但如果新人只是问怎么装浏览器,你回一句"Ubuntu 垃圾,来装 Arch"——这就不是在帮人了。关于社区里这种站队拉踩的风气,下一章会展开说。
目前开箱即用做得最好的发行版系列,我个人体感是 Universal Blue 系和 Ubuntu 系。但放到"同一套工具链同时覆盖服务器和桌面"的维度上,只有 Ubuntu 系列能做到。Ubuntu Pro 个人免费 5 台设备,服务器和桌面用同一套 base,Current Release 最旧的包也落后不到半年(真这么旧差不多也可以更新到新 release 了)——这是 Canonical"既要又要"策略的切实成果。
虽然看起来刚才的例子确实是这两类发行版出了点问题,不过LTT 遇到的问题有一部分和特定的硬件组合有关(比如某些 Nvidia 配置下的黑屏),也有一部分是 Linux 桌面生态长期存在的真实短板(比如视频编解码器授权、NTFS 兼容性、软件分发方式混乱)。开箱即用不是"100% 不出问题",而是"大多数情况下不需要折腾"。LTT 的遭遇恰恰说明 Linux 桌面在兼容性和用户体验一致性上还有很长的路要走——但这不妨碍一些发行版在"降低折腾概率"这件事上已经比大多数发行版做得好。承认问题的存在,和认可已有的进步,两者不矛盾。
六、社区氛围——多元共存,不拉踩
不针对整个社区
不能用桌面视角审判一切
Linux 桌面市场份额长期不到 5%。这个数字本身不是问题——小众不代表不好。问题在于,这 5% 的用户发出了社区里最大的声音,而很多人只用过桌面、只关注桌面,却用这唯一的经验去审判面向完全不同场景的工程决策。
前面提到过,Ubuntu 的大部分实例跑在云服务器、边缘设备、IoT 环境里。对服务器管理员来说,浏览器版本新不新不重要,系统能不能原子更新、能不能在生产环境里稳定跑五年才是关键。对物联网工程师来说,沙箱隔离、依赖自包含、失败可回滚这些设计是安全底线,不是"启动慢了点"的体验问题。
桌面体验很重要——日益完善的桌面体验正是吸引新用户的关键。前面一整章都在说这个。但不能只从桌面出发,把所有不符合自己使用习惯的东西都定性为"愚蠢"或者"邪恶"。理解不了发行版维护者面对的约束条件没关系——不是每个人都有义务去研究这些。但如果不了解这些约束,还要坚持用"我就是用户"的身份去否定每一个自己没见过的决策,这种批评本身就失去了基础。
批评要对准具体问题
社区里经常(?)能看到这样的毫无上下文的发言:"xx 就是垃圾"。
这类发言的背后除了站队心态,还有一种自利归因的心理倾向——系统出了问题,还没排查出来,先找个最显眼的靶子(又如Microsoft)来承担全部责任比承认"可能是我自己的环境有问题"要舒服得多。但这不是正常的讨论,对解决问题没有任何帮助。什么硬件或者硬件加速存在问题?什么软件的 Wayland 和输入法配置不好?把问题说清楚,该提 issue 提 issue,该在论坛里讨论就讨论。具体的问题可以定位、可以修复、可以改善。但"xx 是垃圾"这种话除了制造对立之外没有任何作用。
反过来也一样。如果有人对某个技术有具体的批评,不应该用"你不懂架构"或者"你行你上"去堵嘴。普通用户有批评和表达不满的权利,没有写代码的义务。用户不喜欢一个东西,直接换掉,本身就是对生态的反馈。把用户的合理不满归结为"你不愿意学习",既傲慢也无助于改进。
Canonical 犯过错,也认过错
社区对 Canonical 的不信任不是完全没有来由。回顾历史,Mir 显示服务器在 Wayland 成为行业共识后退场,Upstart 初始化系统在 systemd 胜出后放弃,Unity 桌面环境最终让位于 GNOME。这些尝试在当时确实造成了分裂和困惑,社区的不信任由此积累。
但这恰恰说明 Canonical 不是那种一条路走到黑的公司。它试过、争过、输了之后也认了。Mir 的技术积累后来转向了为 Wayland 合成器提供底层支持,Unity 的设计遗产在 Ubuntu 的 GNOME 定制中延续。Google 关掉的产品不比谁少,Microsoft 推过的 Windows Phone、Zune、WSA 也早就进了历史,RedHat 对 CentOS 的决策也引起不小争议。拿十几年前的 Mir 和 Unity 来否定今天 Canonical 做的每一件事,对推动改进没有任何帮助。
批评应该对准今天的具体问题和具体做法,不是对着公司名字做条件反射。
别把 Linux 当社交货币
"我用的是 Arch btw"——这句话本身没什么。喜欢自己的发行版、为自己折腾出来的系统感到骄傲,都是正常的。讨厌的是那种"你用的不是 Arch 所以你不行"、"想不到 Snap 这种破玩意有什么用"的居高临下。
前面 LTT 的视频提到过,新人去论坛求助,收到的不是解决方案而是对他选择的发行版的嘲讽。这种敌意是 Linux 社区最不该有的东西。一个人在别人的平台上来这么一句,后面可能就有一群人跟风复读同样的话。新人看到这种氛围不会觉得"我要努力学",只会觉得自己进错了地方,然后默默回到 Win/MacOS。
在 LTT 2026 年的 Linux 挑战总结视频中,Elijah 提到了一个非常典型的案例:他抱怨由于内核级反作弊,新游戏 Marathon 无法在 Linux 上运行。结果他收到的不仅不是同情或解决方案,而是社区的指责——许多人告诉他“你本来就不该玩这个游戏”,甚至私信攻击他是为了“故意抹黑 Linux”。
更讽刺的是,由于每次去 Reddit 求助看到的都是“400多条互相攻击、争论哪个发行版更好的跟帖”(正如 Linus 所说,无论遇到什么问题,总有半打人跑出来自信地宣称“用我的这个发行版就不会有这问题”),Elijah 最终被逼得完全放弃了在社区论坛求助,转而全程使用 LLM(大语言模型)来解决问题。(这不是欢迎新人的正确方式)
这种以“保卫 Linux”为名攻击用户的部落主义(Tribalism),恰恰是把新人推走的罪魁祸首。如果连想玩一个小众游戏都会被扣上“仇恨 Linux”的帽子,那普通人为什么要留在这里?
不喜欢就换,换了也没必要踩
Linux 最核心的价值之一是选择权,无论是发行版还是包管理器之间,用脚投票本身就是对生态最直接的反馈。
但换了之后,没有必要在毫无上下文的场合丢一句"xxx 太烂了"或者"xxx 太难用了"。你遇到的问题可能是特定的硬件组合、特定的配置冲突,换一个发行版可能也会遇到。把具体的问题描述出来,别人能参考、能帮上忙,社区能变好。一句没头没尾的差评,除了让讨论区变得更乌烟瘴气之外没有其他效果。
一个健康的社区,应该能同时容纳批评和理解——批评具体实现中的不足,理解工程约束下的取舍,尊重不同人、不同场景的不同选择。没人会因为站队拉踩而留下来,但很多人会因为善意的帮助和开放的氛围而留下。
总结
文章的核心观点已在开篇的省流部分列出,此处不再重复。
附录一:Arch 系与 Ubuntu 的"开箱即用"有何不同
我们都知道 EndeavourOS、CachyOS 这些 Arch 系的发行版也有 GUI 安装器,也预装了桌面环境。那它们和 Ubuntu 的"开箱即用"区别在哪?
两者的"开箱即用"不在一个层面。
EndeavourOS / CachyOS 降低了安装门槛。你不用对着 Wiki 敲 pacstrap,装完就能看到桌面,常用工具也预配好了,CachyOS 甚至带了优化过的内核。它们把 Arch 的入口变得友好。
Ubuntu 降低的是长期维护的心理负担。不只安装那半小时的事,还有接下来用一年、用三年的体验差异。
Arch 的设计哲学本身就不是面向新手的。Arch 的 KISS(Keep It Simple, Stupid)原则指的是对懂系统的人简单,不是对所有人简单:
- 滚动更新需要你关注 Arch News。上游某个包改了配置格式、换了依赖、需要手动干预,你没看到公告直接
yay -Syu,炸了是你自己的事。Ubuntu 在一个 release 周期内基本只推送安全补丁,不需要你操心上游今天改了哪个 API。而半年一次的do-release-upgrade,可能这个时候才会更关注一下新闻,做好充分准备,也不会遇到大问题,这个命令的行为考虑非常周到。 - 不支持部分升级。装一个新包之前必须先全系统更新,不能只
pacman -Sy,Arch 打包软件习惯不写最低版本依赖,如果你不更新而直接刷新软件源安装了新软件,旧依赖不会自动升级,和新软件就可能造成 ABI 不兼容等问题。而不止 Ubuntu,deb和rpm 的打包,包括 Gentoo 都指定了依赖最低版本,不会有部分升级的风险,依赖会自动随着更新。 - AUR 是社区上传的 PKGBUILD,不是官方打包,没有统一的质量审查,参差不齐甚至还会有恶意软件包。用 AUR 默认你自己会看 PKGBUILD 内容、排查依赖、承担风险——这是 Arch Wiki 自己写的。Ubuntu 的策略是不默认开启任何第三方源(哪怕是 Mozilla 的 apt 源),因为发行版要为自己仓库的稳定性负责。当然如果你自己开 PPA 或第三方仓库,或者使用 Snap Store/Flathub 上未经验证开发者的包,也要承担一定风险。而我认为 AUR 方差更大。
- 你自己是管理员。系统出问题 Wiki 是第一站而社区默认你已经查过了。这不是 Arch "没做完"——这是它的设计意图:用户应该理解自己的系统,自己做决定。
Arch 的 KISS 意味着很多东西需要用户(以 root 身份)手动干预执行,如上面说过的安全启动,MOK 配置;以及安装内核不会自动发生
update-grub之类的事情;Arch Wiki 上很多类似的像是临时/永久一次性运行的命令,自己没有意识记录的话容易导致配置漂移(附录二声明式配置!),用久了也会让系统变成黑箱。Ubuntu 的策略也是尽量减少这种手动配置,大部分情况下给了你最优的默认选项,也就是不会有那么多的配置漂移。
Debian 系这种决策甚至减少了些自由度,读者去配配 systemd-boot/refind 或 UKI 或去折腾 xbootldr 就知道了
不可变发行版(减少了一些自由度,但也不像安卓那种程度的限制)和声明式配置(用于构建底层镜像),我觉得更像是 Linux Desktop 的未来(包括吸引新人)
谈笑间2026年6月12日 AUR 孤儿包被投毒了
Ubuntu "替你做了选择",因为目标用户群不同。Ubuntu 面向的是需要干活的人,不是想学习修复 Bootloader 原理的人。
这不是谁更好的问题。Arch 哲学不推崇开箱即用,这是设计意图,不是缺陷。EndeavourOS 和 CachyOS 把 Arch 的安装门槛降低了,但它们没有改变 Arch 的哲学——你仍然需要关注新闻、管理 AUR、对自己的系统负责。Ubuntu 的哲学是让你不需要懂这些就能干活。"不用操心"本身就是它的产品定位。
两者是为不同人群设计的不同工具,这也是正文的核心观点:技术选择背后是场景的差异,多元共存才是 Linux 生态的价值。
附录二:Universal Blue 是什么
正文在实用主义部分提到,目前开箱即用做得最好的发行版系列,个人体感是 Universal Blue 系和 Ubuntu 系。这里简单介绍 Universal Blue。
Universal Blue 是一组基于 Fedora Atomic Desktops 构建的社区维护系统镜像。它在 Fedora Silverblue/Kinoite 的基础上,用 OCI 容器镜像的方式把驱动、编解码器、Flatpak、常用软件全部预配好,构建过程在 GitHub 上完全公开。
和传统发行版的根本区别
传统发行版(Ubuntu、Fedora Workstation、Arch)是包管理器叠加式的:在基础系统上用 apt/dnf/pacman 一层层装软件,系统状态随时间变化,每台机器经过不同的操作历史最终变得各不相同。
Universal Blue(以及它所基于的 Silverblue)是基于镜像的不可变系统:
- 基础系统是只读的 OCI 容器镜像,用
Containerfile管理,不是在宿主上随时dnf install装出来的 - 更新是原子操作:下载新镜像 → 重启 → 切到新版本 → 出问题一键回滚
- 更新是自动而无感的
- 桌面应用几乎全靠 Flatpak,不碰系统层(代理工具可能需要直接解压二进制)
- CLI 工具和环境使用
homebrew前缀包管理器,或者用 Distrobox/Toolbx 容器跑(容器里可以是 Arch、Ubuntu 等任意发行版的用户空间,不破坏宿主)
bootc:操作系统的声明式交付
从 Silverblue 到 Universal Blue 的一个关键演进是 bootc(bootable container,可启动容器)。简单说就是把整个操作系统打包成一个 OCI 容器镜像,像部署容器应用一样部署操作系统。
和传统包管理器的区别在于:传统方式是你告诉系统"装这个包、改那个配置、启用那个服务",每一步都是命令式的操作,时间长了每台机器都不一样。bootc 的做法是你声明这个镜像里应该有什么——驱动版本、预装的包、系统配置、Flathub 源——全部写在 Containerfile 里,通过 GitHub Actions 自动构建成完整镜像。用户侧接收到的就是一个已经配好的、可直接部署的系统镜像,不需要自己一步步配置。
这和 Ubuntu Core 用 Snap 构建不可变系统的思路是同一个方向:让系统状态可预测、可重现、可回滚。只是技术路线不同——Universal Blue 走的是 OCI 容器镜像 + ostree,Ubuntu Core 走的是全 Snap 组件化。
使用 Bootc 的发行版更新机制非常类似于安卓的 A/B 分区
主要变体
- Aurora(KDE Plasma)和 Bluefin(GNOME):面向通用桌面的增强版,预配好主题、常用 Flatpak、Nvidia 驱动、视频编解码器、字体
- Bazzite:面向游戏和 HTPC,预装 Steam、Lutris、各种模拟器,Nvidia 驱动内置在镜像里而不是走 Flatpak runtime。LTT 2026 挑战视频里 Linus 用的就是它
- uCore:面向服务器的极简版
为什么说它"开箱即用"做得好
- Nvidia 驱动直接内置在镜像里,不需要手动配源安装
- 视频编解码器、字体、Flathub 源全部预配,开机就能干活
- Secure Boot 相对开箱即用,开机直接启动 mok,虽然不是预制的,但也比手动
mokutils方便了 - 系统通过 GitHub Actions 自动构建和更新,用户侧收到的是完整镜像,系统是几乎完全无感的自动更新,自动在后台部署新的稳定镜像,某一次的重启就可以进入到新系统
和 Ubuntu 的主要区别
| Universal Blue | Ubuntu | |
|---|---|---|
| 基础系统 | Fedora Atomic(rpm-ostree) | 传统 deb 包管理 |
| 不可变性 | 强制不可变,系统只读 | 桌面版非强制(Ubuntu Core 面向 IoT) |
| 系统交付方式 | OCI 容器镜像,声明式构建 | ISO 安装 + apt upgrade |
| 桌面应用 | 以 Flatpak 为主 | 你可以deb + Snap + Flatpak 混用 |
| CLI 工具 | 通过 Distrobox 容器 | 直接 apt/snap install |
| 更新方式 | 镜像原子更新 + 回滚 | apt upgrade(非原子) |
| 目标场景 | 桌面 / 游戏 | 服务器到桌面的全场景 |
| 维护方 | 社区维护 | Canonical 商业公司支持 |
局限
- 基础系统只读,不能直接
dnf install,如果是习惯了 Fedora 的用户可能一时转不过来。不过就像安卓一样,这是整体的安全稳定考虑 - 大量依赖 Flatpak,除了 Flatpak 固有的局限性外,如果某个应用只有 Snap 或 deb 就没办法直接装(Distrobox 可以跑但体验打折扣),可能要自己解压、拆包什么的
- 镜像构建依赖 GitHub(ghcr.io),GitHub 宕机将影响系统更新
- 社区维护,没有商业公司的长期支持保障
Universal Blue 是在不可变系统路线上做"开箱即用"的代表。它和 Ubuntu 的路线不同:Universal Blue 严格走"不可变镜像 + Flatpak",基本只做桌面;Ubuntu 用同一套 deb + Snap 工具链覆盖从服务器到桌面的全场景。两条路线各有取舍,正是正文的核心观点:没有完美方案,只有适合不同场景的选择。
附录三:Linux Mint 与 Ubuntu 的选择——不是谁更好,是哪个更适合你
正文多次提到"用脚投票",Mint 常被作为 Ubuntu 替代方案的首选。这里简单对比两者的实际差异,帮助新手根据自己的情况做判断。
基础周期差异
Linux Mint 只基于 Ubuntu LTS 发布,且通常在 Ubuntu LTS 第一个点版本之后若干月才推出。这意味着一个时间差问题:例如 Ubuntu 26.04 在 2026 年 4 月发布后,Mint 可能要等到 2026 年底甚至 2027 年初。在此之前,Mint 仍然基于 Ubuntu 24.04——软件包、驱动、内核都是两年前的。
Ubuntu 24.04 本身有 Hardware Enablement(HWE)和 backports 内核/驱动来改善新硬件支持,但其他软件包冻结两年半,体验算不上好。如果你刚买了最新一代 CPU/GPU 的笔记本,Mint 不一定能开箱即用。最新 release 的 Ubuntu 也许可以解决大部分硬件问题。
桌面环境的实用性差异
Linux Mint 默认使用 Cinnamon 桌面,操作逻辑更接近 Windows,且默认使用 Xorg 会话。Ubuntu 默认使用 Wayland。
Wayland 有更好的分数缩放、HDR 支持、多屏管理等新特性,是 Linux 桌面的长期方向。但 Xorg 在某些实际场景下仍有不可替代的实用性:国内部分闭源软件(如某些聊天软件、企业办公软件)在 Wayland 下存在兼容问题,屏幕共享在 Wayland 下也更容易出问题。从"装上就能干活"的角度,Mint + Xorg 在这种特定场景下可能更省心。
一个有些讽刺的细节
Ubuntu 用户如果不想用 Snap 版 Firefox,除了直接安装 Flatpak 的,卸载 snapd、加 Mozilla 的 apt 源换成 deb 版,操作是直接可行,更容易的。但 Linux Mint 默认屏蔽(通过优先级配置文件)了 snapd——如果 Mint 用户某天想用 Snap 版软件(比如某些只有 Snap 的软件),反而需要手动解除屏蔽、安装 snapd。Mint 在 Snap 这件事上相当于替用户少了一种选择。
这不是说 Mint 不好。Cinnamon 桌面的易用性、Mint 社区的质量、开箱即用的多媒体支持都是实实在在的优点。只是说"哪个更自由"的判断要看具体场景。
选发行版之前需要考虑的
- 硬件新旧:新硬件优先选 Ubuntu 最新 release;旧硬件两个都行
- 时间因素:如果你在 Ubuntu 新 LTS 发布后不久装系统,Mint 可能还在用旧 base
- 桌面偏好:习惯 Windows 操作逻辑、或需要 Xorg 兼容性的场景,Mint 的 Cinnamon 可能更顺手
- 软件需求:如果你需要某些只有 Snap 的软件,Ubuntu 开箱就支持;如果你偏好 Flatpak,两个都可以
没有理由上来就无脑推荐或xx任何一个。先看清楚自己的硬件、使用场景和时间节点,哪个更适合就用哪个,或者花一个下午两个都体验一下。这和正文的核心观点一致:选择权在用户手里。