×

Ubuntu 26.04 彻底告别 Snap!一键迁移 Flatpak + APT 替代全攻略

独孤求败 独孤求败 发表于2026-05-28 16:20:26 浏览14 评论0

抢沙发发表评论

Ubuntu 26.04 彻底告别 Snap!一键迁移 Flatpak + APT 替代全攻略

Ubuntu 26.04 LTS 预装了一堆 Snap 包,Firefox 启动慢、软件商店卡顿、snapd 占后台……今天教你从卸载到替代到防复活,一条龙搞定。阅读约 6 分钟。


为什么要告别 Snap?

Snap 不是不能用,但这些痛点你一定遇到过:

痛点
具体表现
启动慢
Firefox Snap 首次打开比 DEB 版慢 3-5 秒
体积大
每个 Snap 自带运行时,Firefox Snap 包约 200MB,DEB 版仅 70MB
占后台
snapd 进程常驻,系统重启时还会强制等待 snapd 完成
更新受限
Snap 更新由 Canonical 服务器控制,不能选择版本
闭源商店
Snap Store 后端不开源,仅 Canonical 一家运营

最关键的是——Snap 不是一个"你可以不用"的可选项。Ubuntu 26.04 默认用 Snap 安装了 Firefox、软件商店等核心应用,系统里埋了多个钩子让 snapd 自动复活。

Ubuntu 26.04 预装了哪些 Snap?

升级或全新安装后,打开终端执行:

snap list

你会看到类似输出:

包名
说明
占用空间
firefox
浏览器
~200MB
snap-store
软件商店
~90MB
gnome-3-38-2004
GNOME 运行时
~150MB
core20 / core22
Snap 核心运行时
~120MB
gtk-common-themes
主题
~70MB
snapd
Snap 守护进程
~40MB

加起来 600MB+,如果换成 DEB + Flatpak 方案,可以省掉一半以上。


方案一:手动移除 + APT/Flatpak 替代(推荐新手)

第一步:移除所有 Snap 包

# 列出当前 Snap
snap list

# 批量移除(需要执行 2-3 次,因为有依赖关系)

for
 p in $(snap list | awk '!/^Name|^snapd$/{print $1}'); do
  sudo
 snap remove "$p"
done


# 再次执行,移除核心包

sudo
 snap remove core22
sudo
 snap remove snapd

当看到 No snaps are installed yet 就算干净了。

第二步:卸载 snapd + 清理残留

# 停止并禁用 snapd
sudo
 systemctl stop snapd
sudo
 systemctl disable --now snapd.socket

# 卸载 snapd

sudo
 apt autoremove --purge snapd -y

# 清理所有残留目录

rm
 -rf ~/snap
sudo
 rm -rf /snap /var/snap /var/lib/snapd /var/cache/snapd

第三步:安装 APT 替代软件

Firefox(DEB 版)——用 Mozilla 官方 PPA

# 添加 Mozilla PPA
sudo
 add-apt-repository ppa:mozillateam/ppa -y

# 设置 PPA 优先级,防止 Ubuntu 把 Firefox 转回 Snap

sudo
 tee /etc/apt/preferences.d/mozillateam-firefox.pref << 'EOF'
Package: firefox*
Pin: release o=LP-PPA-mozillateam
Pin-Priority: 501
EOF

sudo
 apt update
sudo
 apt install firefox -y

软件商店(DEB 版)

sudo apt install gnome-software -y

第四步:安装 Flatpak 作为补充

APT 仓库覆盖大部分常用软件,但有些新版本或小众应用只在 Flatpak 上有。装一个备用不亏:

# 安装 Flatpak
sudo
 apt install flatpak -y

# 添加 Flathub 仓库

flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

# 重启后生效

常用软件 Flatpak 安装示例:

# Spotify
flatpak install flathub com.spotify.Client -y

# OBS Studio

flatpak install flathub com.obsproject.Studio -y

# Telegram

flatpak install flathub org.telegram.desktop -y

第五步:防止 Snap 死灰复燃

这是最关键的一步!不做这步,系统更新可能悄悄把 Snap 装回来。

封锁 snapd 包

sudo tee /etc/apt/preferences.d/no-snapd.pref << 'EOF'
Package: snapd
Pin: release a=*
Pin-Priority: -10
EOF

封锁 Snap 版 Firefox

sudo tee /etc/apt/preferences.d/no-firefox-snap.pref << 'EOF'
Package: firefox
Pin: release a=*
Pin-Priority: -10
EOF

📌 上面两个文件的意思是:Pin-Priority: -10 会让 APT 拒绝安装这些包。这样 apt install snapd 会直接报错,从根源上断绝 Snap 复活。

验证封锁是否生效:

apt policy snapd
# 应该显示:(none, unable to locate package) 或 Candidate: (none)

方案二:一键迁移工具 unsnap(推荐进阶用户)

Canonical 员工 Alan Pope 开源了一个脚本 unsnap,可以自动完成 Snap → Flatpak 的迁移。

使用方法

# 下载
git clone https://github.com/popey/unsnap
cd
 unsnap

# 自动模式(生成脚本 + 自动执行)

./unsnap auto

# 或者手动模式(先生成脚本,逐一检查后手动执行)

./unsnap

unsnap 会做什么?

脚本
功能
00-backup
备份当前 Snap 应用数据
01-install-flatpak
安装 Flatpak
02-enable-flathub
启用 Flathub 仓库
03-install-flatpaks
安装对应的 Flatpak 应用
04-remove-snaps
移除所有 Snap 包
99-remove-snapd
卸载 snapd

已知限制

  • • 目前映射了 219 款应用,不在列表中的 Snap 不会被自动替换
  • • 不会迁移应用数据——Flatpak 版本相当于全新安装,书签/配置需要手动导入
  • • 没有回滚——操作不可逆,建议提前备份

两种方案怎么选?


手动方案
unsnap 方案
难度
中等,需要逐步操作
简单,一条命令
灵活性
高,可按需选择替代方式
中,自动映射 219 款
数据保留
Firefox 可同步书签
仅备份,不自动导入
适合人群
想精确控制的用户
想快速迁移的用户
推荐
⭐⭐⭐
⭐⭐

💡 我的建议:如果你只关心 Firefox 和软件商店(大多数人的情况),手动方案更可控。如果你装了很多 Snap 应用,unsnap 省时省力。


移除后系统变化一览

项目
移除前 (Snap)
移除后 (APT/Flatpak)
Firefox 启动速度
首次 ~8s
首次 ~3s
磁盘占用
~600MB
~250MB
后台进程
snapd 常驻
无额外进程
更新控制
Canonical 服务器推送
本地 apt/flatpak 管理
软件来源
Snap Store(闭源)
APT 仓库 + Flathub(开源)


常见问题 FAQ

Q:移除 Snap 后系统会不会不稳定?

A:不会。Snap 只是包管理方式,移除后用 APT/Flatpak 安装的软件功能完全一样。Ubuntu Server 更是默认就不装 Snap 桌面应用。

Q:以后还能装回来吗?

A:可以。删掉 /etc/apt/preferences.d/no-snapd.pref,然后 sudo apt install snapd 即可恢复。

Q:Flatpak 和 Snap 有什么区别?

A:两者都是"通用打包"格式,但 Flatpak 开源、去中心化(Flathub 任何人可提交)、启动更快。Snap 后端由 Canonical 独家控制。

Q:为什么 Ubuntu 强推 Snap?

A:Snap 让 Canonical 可以统一管理更新和安全补丁,对企业和物联网场景有价值。但对桌面用户来说,启动慢和闭源商店是真实痛点。

Q:Docker 容器需要 Snap 吗?

A:不需要。Docker 有 DEB 包和官方 APT 仓库,跟 Snap 没有任何关系。

完整操作速查卡

# === 1. 移除所有 Snap ===
for
 p in $(snap list | awk '!/^Name/{print $1}'); do sudo snap remove "$p"; done
sudo
 apt autoremove --purge snapd -y
rm
 -rf ~/snap; sudo rm -rf /snap /var/snap /var/lib/snapd /var/cache/snapd

# === 2. 安装 DEB 替代 ===

sudo
 add-apt-repository ppa:mozillateam/ppa -y
sudo
 tee /etc/apt/preferences.d/mozillateam-firefox.pref << 'EOF'
Package: firefox*
Pin: release o=LP-PPA-mozillateam
Pin-Priority: 501
EOF
sudo
 apt update && sudo apt install firefox gnome-software -y

# === 3. 安装 Flatpak ===

sudo
 apt install flatpak -y
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

# === 4. 封锁 Snap 复活 ===

sudo
 tee /etc/apt/preferences.d/no-snapd.pref << 'EOF'
Package: snapd
Pin: release a=*
Pin-Priority: -10
EOF
sudo
 tee /etc/apt/preferences.d/no-firefox-snap.pref << 'EOF'
Package: firefox
Pin: release a=*
Pin-Priority: -10
EOF

复制这段命令,5 分钟告别 Snap。


群贤毕至

访客