最近一直在 VirtualBox 里测试 Ubuntu 26.04、Xubuntu 26.04,也顺便认真研究了一下 Ubuntu 默认使用的Snap。
我并不特别反感 Snap。
从技术上讲,Snap 解决了跨版本依赖、应用隔离、自动更新等问题,在 Ubuntu Core、IoT 等场景下也有它自己的价值。
但放到普通 Linux Desktop 上,我始终觉得:
如果平时根本不用几个 Snap 应用,却要为此保留 snapd、Runtime、SquashFS 挂载以及另一整套软件分发体系,架构上多少有点复杂。
于是我分别在:
Ubuntu 26.04 Desktop Default
Xubuntu 26.04 Minimal
两台虚拟机中测试了完整删除 Snap。
确认没有问题以后,我最后也把自己的 Ubuntu 26.04 Host 上的 Snap 删除了。
实际体验比我预想的还不错。
一、Ubuntu 26.04 默认其实装了不少 Snap
先看我的Ubuntu 26.04 Desktop Default虚拟机。
这是之前为了测试发行版安装的一台比较纯净的 Ubuntu VM,没有额外折腾太多软件。
执行:
snap list可以看到:
bare core24 desktop-security-center firefox firmware-updater gnome-46-2404 gtk-common-themes mesa-2404 prompting-client snap-store snapd snapd-desktop-integration这里既有真正的桌面应用:
Firefox Firmware Updater Snap Store Desktop Security Center也有 Snap 自己需要的 Runtime 和 Base:
core24 gnome-46-2404 gtk-common-themes mesa-2404 bare也就是说,一台刚装好的 Ubuntu Desktop,Snap 已经是一套比较完整的运行体系了。
二、Xubuntu 26.04 Minimal 情况完全不同
我的另一台测试机是:
Xubuntu 26.04 Minimal
它明显精简很多。
安装完成后运行:
snap list一开始就是空的,没有 Firefox Snap,也没有 Snap Store、GNOME Runtime 之类的东西。
实际上主要只是系统安装了snapd这个 DEB 包,Snap 应用本身并没有装。
这就形成了一个很有意思的对比:
Ubuntu Desktop ↓ 默认已经使用大量 Snap Xubuntu Minimal ↓ 基本只有 snapd Snap 应用为空因此后面实际测试出来的资源变化也完全不同。
三、实测:Ubuntu Desktop 去 Snap 后变化比较明显
我分别记录了删除 Snap 前后的资源占用。
这里特别说明一下测试方法:
删除 Snap 后,我不是立即记录数据,而是重新安装了实际需要的 Firefox DEB 等替代软件,重启系统以后再做对比。
所以后面的数据不是一个“删除 Snap 后什么软件都没有”的空系统。
Ubuntu 26.04 Desktop Default
实测结果:
| 项目 | 去 Snap 前 | 去 Snap 并安装需要的软件后 |
|---|---|---|
| Memory Used | 约 1.1G | 约 1.0G |
| Disk Used | 约 11G | 约 9.9G |
也就是:
Memory Used 1.1G → 1.0G Disk Used 11G → 9.9G内存大约减少:
100MB磁盘占用大约减少:
1.1GB而且除了数字之外,我还有一个比较明显的主观感受:
Ubuntu Desktop 原本偶尔出现的一点小卡顿减少了,桌面操作感觉更轻快了一些。
当然,这不是严格 Benchmark。
Linux 内存会受到 Cache、后台任务等因素影响,虚拟机本身也存在一定波动,所以不能简单得出:
“删除 Snap 一定能提升多少百分比性能。”
但至少在我的这台 Ubuntu 26.04 VM 上:
资源占用和实际体验都确实有所改善。
四、Xubuntu Minimal:内存基本没变,只省了一些磁盘
Xubuntu 26.04 Minimal 的结果就没有这么明显了。
因为它一开始:
snap list就是空的。
没有 Firefox Snap,也没有 Snap Store,更没有一堆 GNOME / Mesa Runtime。
所以我删除 snapd 后,内存仍然保持在:
700 多 MB前后基本没有明显变化。
磁盘占用则是:
8.3G → 7.9G大约减少:
400MBXubuntu 26.04 Minimal
| 项目 | 去 Snap 前 | 去 Snap 后 |
|---|---|---|
| Memory Used | 700 多 MB | 700 多 MB |
| Disk Used | 约 8.3G | 约 7.9G |
这个结果我觉得反而很有意义。
因为它说明:
Snap 本身并不是装着 snapd 就一定会吃掉大量内存。
真正影响资源占用的,是系统到底安装、运行了多少 Snap 应用和 Runtime。
因此:
Ubuntu Desktop Snap 比较多 → 去掉以后变化比较明显 Xubuntu Minimal 本来就没有 Snap 应用 → 去掉以后变化很小这比简单说“删除 Snap 可以大幅提速”更加符合实际。
五、为什么我最后还是选择删除 Snap?
传统 Ubuntu 软件栈大致是:
Application ↓ APT / dpkg ↓ DEB ↓ LinuxSnap 又增加了一套:
Application ↓ Snap ↓ snapd ↓ Runtime / Base ↓ Linux如果平时再使用 Flatpak 和 AppImage,那么桌面 Linux 上可能同时存在:
APT / DEB Snap Flatpak AppImage这些当然可以和平共处。
我自己的 Host 上其实一直有 Flatpak,因为之前安装 Damask 就已经在用了。
所以这次删除 Snap,并不是为了追求所谓:
“系统只能有 DEB 才算纯洁。”
我的原则其实非常简单:
需要的就留,不需要的就尽量减少。
Flatpak 我确实有软件在使用,所以保留。
Snap 里面如果没有自己不可替代的软件,那么少维护一套 Runtime 和后台基础设施,对我来说反而更加简单。
六、删除之前,先看看自己到底装了什么
不要直接照抄网上教程里的软件名。
先执行:
snap list不同 Ubuntu 版本、不同安装方式,结果可能完全不同。
例如很多旧教程还会让你删除:
core22 gnome-42-2204但 Ubuntu 26.04 上未必是这些。
所以:
永远以自己机器上的
snap list为准。
另外,如果系统使用了 TPM-backed Full Disk Encryption 等特殊的新架构,也应该先确认 snapd 是否属于系统基础依赖。
本文主要针对普通 Ubuntu / Xubuntu Classic Desktop。
七、先删除应用 Snap
以我的 Ubuntu 26.04 Desktop 为例,先删除真正的应用:
sudo snap remove --purge firefox sudo snap remove --purge snap-store sudo snap remove --purge firmware-updater sudo snap remove --purge desktop-security-center sudo snap remove --purge prompting-client sudo snap remove --purge snapd-desktop-integration然后:
snap list看看还剩什么。
这里没有必要完全照抄我的列表。
例如 Xubuntu Minimal 本来就是空的,这一步自然可以直接跳过。
八、再删除 Runtime 和 Base
我的 Ubuntu Desktop 随后主要剩下:
gnome-46-2404 gtk-common-themes mesa-2404 core24 bare snapd继续:
sudo snap remove --purge gnome-46-2404 sudo snap remove --purge gtk-common-themes sudo snap remove --purge mesa-2404 sudo snap remove --purge core24 sudo snap remove --purge bare如果提示:
snap xxx is being used by ...不要强制删除。
重新:
snap list检查还有哪个上层 Snap 没有清掉即可。
所有其他 Snap 都删除以后,最后:
sudo snap remove --purge snapd九、防止 snapd 以后又被 APT 拉回来
Ubuntu 中有些 DEB 实际上只是 Snap 的过渡包。
既然已经确定这台机器不再使用 Snap,可以增加一个 APT Pin。
创建:
sudo nano /etc/apt/preferences.d/nosnap.pref写入:
Package: snapd Pin: release a=* Pin-Priority: -10这样普通 APT 操作就不会再自动把snapd安装回来。
以后如果又想恢复 Snap,删除这个文件即可。
十、删除 snapd DEB
接下来:
sudo apt purge snapd我不建议直接写:
-y让 APT 先把准备删除的软件列出来。
确认没有异常,再继续。
然后:
sudo apt autoremove同样先看一下删除列表。
我也不建议照一些教程再执行:
sudo rm -rf /var/lib/snapd sudo rm -f /usr/lib/snapd/snapd能交给 APT / dpkg 管理的系统文件,就尽量交给包管理器自己处理。
十一、最后处理用户目录
检查:
ls -la ~/snap如果已经是空目录:
rmdir ~/snap如果里面还有 Firefox 等应用留下的数据,则先确认是否还需要。
十二、可选:重新安装 Firefox DEB
如果本来就不用 Firefox,这一步可以完全跳过。
例如我的 Xubuntu Minimal 测试机之前就没有安装 Firefox,因此删除 Snap 后也没有特意再安装。
如果像 Ubuntu Desktop 或 Host 一样,希望留一个 Firefox,可以使用 Mozilla 官方 APT Repository 安装 DEB 版。
Mozilla 官方安装说明:
https://support.mozilla.org/en-US/kb/install-firefox-linux https://support.mozilla.org/zh-CN/kb/install-firefox-linux首先:
sudo install -d -m 0755 /etc/apt/keyrings导入 Mozilla Key:
wget -q https://packages.mozilla.org/apt/repo-signing-key.gpg \ -O- | sudo tee /etc/apt/keyrings/packages.mozilla.org.asc > /dev/null官方指纹:
35BAA0B33E9EB396F59CA838C0BA5CE6DC6315A3可以验证:
gpg -n -q --import --import-options import-show \ /etc/apt/keyrings/packages.mozilla.org.asc如果第一次使用 GPG,遇到~/.gnupg相关问题,可以先:
mkdir -m 700 ~/.gnupg gpg --list-keysUbuntu 26.04 Resolute 使用:
sudo tee /etc/apt/sources.list.d/mozilla.sources > /dev/null << EOF Types: deb URIs: https://packages.mozilla.org/apt Suites: mozilla Components: main Signed-By: /etc/apt/keyrings/packages.mozilla.org.asc EOF设置优先级:
sudo tee /etc/apt/preferences.d/mozilla > /dev/null << EOF Package: * Pin: origin packages.mozilla.org Pin-Priority: 1000 EOF最后:
sudo apt update sudo apt install firefox检查:
apt policy firefox command -v firefox应该可以看到 Firefox 来自:
packages.mozilla.org程序路径则是:
/usr/bin/firefox这样 Firefox 就重新回到了传统 DEB 体系。
十三、可选:实体机需要固件更新怎么办?
这个问题对 VirtualBox VM 其实没什么实际意义。
我的 VM 中安装gnome-firmware,主要只是为了验证:
Host 真正去 Snap 后,固件更新功能有没有替代方案。
答案是有。
真正负责 Linux 固件更新的是:
fwupd如果希望有 GUI:
sudo apt install fwupd gnome-firmware结构是:
GNOME Firmware ↓ fwupd ↓ Firmware / LVFS命令行也可以直接:
fwupdmgr get-devices fwupdmgr refresh fwupdmgr get-updates sudo fwupdmgr update所以删除 Snapfirmware-updater后,并不会失去 Linux 的底层固件更新能力。
对于虚拟机,这一项通常不需要。
对于 ThinkPad、台式机等实体 Host,如果有 BIOS、Thunderbolt、SSD 等固件更新需求,可以按需安装。
十四、可选:Snap Store 没了怎么办?
如果平时习惯命令行:
apt或者直接去软件官网下载 DEB,那么甚至什么都不用安装。
如果仍然想保留一个图形化软件中心,可以安装 GNOME Software:
sudo apt install gnome-software如果希望它同时显示固件更新:
sudo apt install gnome-software-plugin-fwupd于是可以得到:
GNOME Software │ ├── DEB 软件 └── Firmware / fwupd我自己的 Host 上实际使用下来感觉不错。
但它只是一个:
可选的 GUI 软件中心。
不是去 Snap 后必须安装的东西。
十五、Flatpak 也完全按需使用
删除 Snap 并不意味着一定要安装 Flatpak。
如果所有需要的软件都有不错的 DEB:
APT / DEB完全够用。
如果以后碰到某个软件在 Flathub 上维护得更好,再安装:
sudo apt install flatpak需要 GNOME Software 集成的话:
sudo apt install gnome-software-plugin-flatpak再添加 Flathub 即可。
我的情况是:
Host:本来就有 Flatpak,因为 Damask 正在使用,所以继续保留;
Ubuntu / Xubuntu VM:没有实际 Flatpak 需求,所以没有特意安装。
因此我的观点不是:
Snap → Flatpak而是:
Snap、Flatpak、AppImage 都只是工具,需要哪个就用哪个。
十六、这两个 snapd 相关库不要为了“干净”强行删
删除完成以后:
dpkg -l | grep snapd我的 Ubuntu Desktop 仍然能看到:
gir1.2-snapd-2 libsnapd-glib-2-1第一眼很容易觉得:
怎么 Snap 还没删干净?
但是检查:
apt-cache rdepends --installed libsnapd-glib-2-1会发现它还被:
PipeWire WirePlumber CUPS等组件依赖。
而:
apt-cache rdepends --installed gir1.2-snapd-2还会看到:
Update Manager GNOME Shell Ubuntu Extensions我实际测试过,如果强行执行:
sudo apt purge libsnapd-glib-2-1 gir1.2-snapd-2APT 会准备一起删除:
gnome-shell gdm3 ubuntu-session pipewire cups gnome-control-center update-manager ...这种时候一定要取消。
这两个只是:
Snap API 客户端兼容库。
它们不是snapd daemon,不会:
启动 Snap;
自动更新 Snap;
创建 loop mount;
运行 Snap 后台服务。
所以留着完全没有问题。
十七、怎么确认 Snap 真正删除完成?
检查:
apt policy snapd我的最终状态是:
Installed: (none) Candidate: (none)仓库里的版本因为 APT Pin 已经变成:
-10再检查:
command -v snap没有输出。
检查服务:
systemctl list-unit-files | grep -i snap没有输出。
检查挂载:
mount | grep snap同样没有输出。
最后:
ls -ld /snap /var/snap /var/lib/snapd 2>/dev/null也没有相关目录。
做到这里:
Snap 的实际运行体系已经不存在了。
没有必要继续为了追求:
dpkg -l | grep snapd必须零输出而破坏其他 Ubuntu Desktop 组件。
十八、两台 VM 的结果放在一起看
最后把这次两个测试环境放到一起:
| 系统 | 去 Snap 前 | 去 Snap 后 | 磁盘变化 |
|---|---|---|---|
| Ubuntu 26.04 Desktop | Memory 约 1.1G / Disk 约 11G | Memory 约 1.0G / Disk 约 9.9G | -1.1G |
| Xubuntu 26.04 Minimal | Memory 700 多 MB / Disk 约 8.3G | Memory 仍为 700 多 MB / Disk 约 7.9G | -0.4G |
这个结果其实很好理解。
Ubuntu Desktop 原本:
Firefox Snap Store Firmware Updater Security Center GNOME Runtime Mesa Runtime Core ...确实有一整套 Snap 环境。
Xubuntu Minimal 则:
snap list → 本来就是空的主要只是把snapdDEB 去掉。
所以:
系统原本使用 Snap 越多,完整移除后的变化自然越明显。
这也是为什么我不太赞成简单宣传:
“删除 Snap 就能明显提升 Ubuntu 性能。”
更加准确的说法应该是:
删除自己不用的 Snap,可以减少一些磁盘、后台组件和软件栈复杂度;实际收益有多大,要看原本装了多少 Snap。
十九、那么到底值得删除 Snap 吗?
我觉得应该分情况。
如果你:
Firefox Snap 用得很好;
经常使用 Ubuntu App Center;
自己安装了很多 Snap 应用;
喜欢它的自动更新机制;
不在意这点磁盘和后台组件;
那么完全没必要折腾。
但如果你:
软件主要来自 DEB;
Snap 中没有不可替代的软件;
更喜欢简单的软件栈;
或者正在使用资源有限的虚拟机;
那么:
删除 Snap 是一个完全合理的选择。
至少我的实际结果是:
Ubuntu Desktop
Memory 1.1G → 1.0G Disk 11G → 9.9G并且桌面偶发小卡顿有所减少。
Xubuntu Minimal
Memory 700 多 MB → 基本不变 Disk 8.3G → 7.9G因为它本来就没装真正的 Snap 应用,所以变化自然小很多。
二十、最后
折腾完以后,我依然不认为 Snap 是一个“坏技术”。
它解决的问题是真实存在的:
跨版本发布 依赖管理 沙箱隔离 自动更新 IoT / Embedded只是技术架构永远存在取舍。
对于我的 Ubuntu Desktop,大部分软件已经可以通过:
APT / DEB解决。
Firefox 有 Mozilla 官方 DEB;
固件可以使用fwupd;
想要软件商店可以安装 GNOME Software;
Flatpak、Flathub、AppImage 也都可以根据具体软件按需使用。
所以我的结论并不是:
Ubuntu 用户都应该删除 Snap。
而是:
需要 Snap,就继续用;不需要,也完全可以删。
而这次 Ubuntu 和 Xubuntu 两台 VM 的实际测试也说明:
去 Snap 的收益并不是固定的。Ubuntu Desktop 原本使用得多,变化就明显;Xubuntu Minimal 原本几乎没使用,变化就很小。
至少对我自己的 Ubuntu 26.04 Desktop 来说:
删除之后,系统确实更轻、更简单,偶发卡顿也有所减少。