机械荟萃山庄

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 17|回复: 0

被全网嫌弃的 Snap其实是 Linux 软件分发的一次自救

[复制链接]

3万

主题

3万

帖子

23万

积分

超级版主

Rank: 8Rank: 8

积分
233428
发表于 1 小时前 | 显示全部楼层 |阅读模式
如果你在 Linux 社区问一句"Ubuntu 最让人讨厌的技术是什么",是Snap。启动慢、强制更新、占用大、污染 df 输出、商店闭源、偷偷替换 deb……更微妙的是,骂得最凶的,往往是 Linux 用了几年的老用户。他们当初逃离 Windows,就是为了摆脱"系统替我做主"的感觉,结果 Snap 把这种感觉又带回来了。
但很少有人认真问过一个问题:Canonical 为什么要顶着十年骂名,硬推一个谁都不喜欢的东西?

传统 Linux 的软件是 .deb(Ubuntu/Debian)或 .rpm(Fedora/RHEL)。这类包不包含依赖,只声明"我需要 libssl 1.0 版本"。你装一个软件,系统得先保证所有依赖库都就位、版本还都对得上。一旦某个库升级了、某个包要求冲突版本,就是著名的报错:
同一个 Firefox,在 Ubuntu 22.04、Ubuntu 24.04、Fedora 40 上,得分别打三个包、分别测试。因为三个系统的库版本都不一样。开发者维护成本极高,用户还常常只能装到"发行版仓库里那个旧版本"。
以 Chromium 为例:如果全靠 APT,Canonical 就得为每个 Ubuntu 版本单独维护一个 Chromium 包——不同版本库文件互不兼容,工作量巨大。这是任何公司都不愿背的包袱。

于是 2014 年,Canonical 推出了 Snap,核心思路一句话:
把一个应用连同它需要的所有依赖,打成一个自包含的压缩包,一次打包,到处运行。
技术上,一个 Snap 就是一个 SquashFS 压缩镜像,里面装齐了二进制、库、运行时。它跑在一个由 AppArmor + seccomp 加固的沙箱里,通过 snapd 守护进程管理安装、更新、回滚。
它确实解决了上述所有问题:依赖自带(告别依赖地狱)、跨发行版通用(一次打包)、沙箱隔离(更安全)、自动更新 + 一键回滚(更新失败能退回)。
平心而论,Snap 的出发点不但不坏,反而切中了 Linux 几十年最大的痛点。

但执行时却出现大问题,Snap 每次启动都要解压并挂载 SquashFS 镜像。像 Firefox 这种大应用,冷启动比原生 deb 慢 23 倍。
默认后台每天检查更新(最多 4 次),而且没有彻底关闭的开关,只能临时 snap refresh --hold 延迟。更糟的是,应用连续运行 14 天不关,snapd 会强制终止进程来完成更新。
每个 Snap 自带一套完整依赖,哪怕系统里已经有同样的库。系统还会默认保留 2 个历史版本用于回滚。
每个 Snap 都挂载成一个 /dev/loop 虚拟设备,新装的 Ubuntu,敲一下 df -h,看到的是一长串 loop0、loop1、loop2。
Snap 应用常常不认你精心配置的系统主题、光标、图标。桌面明明统一了颜值,Firefox 一打开却冒出一个突兀的默认光标。
Snap 客户端代码是开源的,但背后的 Snap Store 服务器是闭源的,且只有 Canonical 一家能运营。你无法自建一个第三方 Snap 仓库(官方不支持)。在崇尚去中心化、自由软件的 Linux 社区看来,这等于一个"围墙花园"。
从 Ubuntu 19.10 起,apt install chromium-browser 装到的其实是 Snap 版;22.04 起 Firefox 也默认走 Snap。用户敲着熟悉的 apt 命令,得到的却不是熟悉的 deb,而是一个 Snap 包装器。

面对 Snap,开源社区集体开发了Flatpak。
它由 Red Hat 和 GNOME 社区主导,目标是沙箱化、跨发行版分发应用,但治理方式截然相反。
Flatpak 全链路开源,Flathub 由社区治理,任何人都能自建仓库、自我托管。这天然契合 Linux 的去中心化精神。
Flatpak 的聪明设计。它不要求每个应用自带所有依赖,而是提供一个公共 runtime(比如 org.gnome.Platform,约 800MB),十个 GNOME 应用共享这一份。
应用访问文件、摄像头、麦克风,得通过系统弹窗按需授权,而不是像 Snap 那样靠一堆要手动"连接"的接口。
2025 年底累计下载突破 5 亿,2026 年应用数超过 3400 个。更重要的是,大量上游开源项目(GIMP、LibreOffice、Inkscape、OBS、Blender)现在都把 Flatpak 当作官方 Linux 分发方式,由开发者本人维护

但Snap 有 Flatpak 替代不了的工作场合,Flatpak 本质是为桌面 GUI 应用设计的,而 Snap 从一开始就瞄准了服务器和 IoT。snap install lxd、snap install microk8s、snap install multipass……这些系统级服务、守护进程,Snap 支持得非常好。Canonical 的 Ubuntu Core(IoT 发行版)完全建立在 Snap 之上。自动更新 + 严格沙箱,恰恰是嵌入式设备最需要的能力。
Flatpak照样有缺点,它需要手动更新,对懒人/新手不够友好,桌面主题集成同样有摩擦,沙箱内某些系统集成场景会报权限问题,而且它基本不管服务器和 CLI 工具。
网上流传"Ubuntu 26.04 要彻底告别 Snap",这是误读。事实上 26.04 LTS 仍然默认用 Snap 分发 Firefox、Thunderbird、Chromium,Snap 并没有被放弃。真正的变化是26.04 的 App Center 开始能管理 deb 包了,这算是 Canonical 对社区诉求的一次让步,但 Snap 依然是 Ubuntu 的核心分发方式。

曾经Firefox、Chromium 只能装 Snap,现在Mozilla 官方提供了 Firefox 的 .deb PPA,Google Chrome 一直是 .deb,Chromium 也有社区 PPA 和 Flathub 版本。老用户可以轻松"钉住"deb 版本,绕开 Snap。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|机械荟萃山庄 ( 辽ICP备16011317号-1 )

GMT+8, 2026-10-12 12:08 , Processed in 0.079887 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表