Snap 是 Ubuntu 官方力推的软件包管理格式,虽然它解决了依赖地狱问题,但其带来的“副作用”也劝退了不少用户:启动慢、强制更新、以及 lsblk 时看到那一长串烦人的 loop 设备。
如果你希望回归传统的 APT 管理方式,或者想转投 Flatpak 的怀抱,那么彻底移除 Snap 是一项必修课。
本文将手把手教你如何从 Ubuntu(20.04/22.04/24.04 等版本)中彻底清除 Snap,并设置“防御工事”防止它自动重装。
在开始之前,请知晓:
.deb 包重新安装它们。直接卸载守护进程可能会报错,最稳妥的方法是先“清空”应用。
snap list
# 示例
sudo snap remove firefox
sudo snap remove gnome-3-38-2004
# ... 重复直到清空所有应用 ...
sudo snap remove core20
sudo snap remove bare
小技巧:如果报错提示正在被使用,可能需要先重启一下系统或手动 unmount。
当应用清空后,就可以处理 Snap 的核心守护进程了。
sudo systemctl stop snapd
sudo systemctl disable snapd
sudo systemctl mask snapd
sudo apt purge snapd -y
sudo apt autoremove --purge -y
仅仅 apt purge 是不够的,Snap 在你的系统中留下了很多“垃圾”目录。我们需要手动将它们铲除。
执行以下命令删除相关的目录:
# 删除根目录下的残留
sudo rm -rf /snap
sudo rm -rf /var/snap
sudo rm -rf /var/lib/snapd
sudo rm -rf /var/cache/snapd
# 删除用户主目录下的残留(这一步很重要,否则你的 Home 目录下永远有个叫 snap 的文件夹)
rm -rf ~/snap
这是最关键的一步。Ubuntu 有时会在你尝试安装某些软件(如 sudo apt install chromium-browser)时,偷偷地把 Snap 重新装回来。我们需要配置 APT 优先级来禁止这种情况。
sudo nano /etc/apt/preferences.d/nosnap.pref
snapd 包的优先级设为 -10,告诉系统“无论如何不要安装它”。Package: snapd
Pin: release a=*
Pin-Priority: -10
sudo apt update
此时你应该看不到任何关于 snap 的更新提示了。
现在你的系统已经完全没有 Snap 了。但是你可能丢了 Firefox。
如何安装非 Snap 版的 Firefox?
推荐使用 Mozilla 官方的 PPA:
# 1. 添加 PPA
sudo add-apt-repository ppa:mozillateam/ppa
# 2. 设置 PPA 优先级(确保系统优先使用 PPA 而不是 Ubuntu 的 Snap 引导包)
echo '
Package: *
Pin: release o=LP-PPA-mozillateam
Pin-Priority: 1001
' | sudo tee /etc/apt/preferences.d/mozilla-firefox
# 3. 安装 Firefox
sudo apt update
sudo apt install firefox