Snaps 是 Ubuntu 的母公司 Canonical 于 2016 年 4 月发布 Ubuntu 16.04 LTS(Long Term Support,长期支持版)时引入的一种容器化的软件包格式。自 Ubuntu 16.04 LTS 起,Ubuntu 操作系统可以同时支持 Snap 及 Debian 这两种格式的安装包。
Snap 虽然有一定的优点(请自行搜索),但是不足之处更多。Snap 软件包体积庞大,snapd 进程会导致系统重启等待,并且可能导致卡顿,禁用为佳。
特别是服务器版用不上这种软件包,默认是安装的,必须彻底删除。
Ubuntu 22.04 桌面版中两个关键的程序:软件商店和 Firefox 使用了 Snap 软件包,卡顿明显。
禁用服务无效示例:
1 | sudo systemctl disable --now snapd |
图:Ubuntu 22.04 中的 Firefox(deb)
现在 Ubuntu OVF 中已经更新 apt_preferences 彻底排除了 Snap。
- Ubuntu 20.04.5 LTS x86_64 OVF (sysin) optional kernel 5.15 - VMware 虚拟机模板
- Ubuntu 22.04 LTS x86_64 OVF (sysin) - VMware 虚拟机模板
删除 Snap 的方法
已经确认 snapd 是无法禁用的,只能强制删除。以下操作无需停止 snapd 服务。
(1)删掉所有的已经安装的 Snap 软件。
snap list
用于查看已经安装的 Snap 软件,通过脚本全部删除:
1 | for p in $(snap list | awk '{print $1}'); do |
一般需要执行两次(桌面版三次),提示如下则正确执行:
1 | snap "Name" is not installed |
再次执行,提示如下,表明已经删除干净:
1 | No snaps are installed yet. Try 'snap install hello-world'. |
(2)删除 Snap 的 Core 文件。
1 | sudo systemctl stop snapd |
(3)删除 Snap 的管理工具。
1 | sudo apt autoremove --purge snapd |
(4)删除 Snap 的目录。
1 | rm -rf ~/snap |
(5)配置 APT 参数:禁止 apt 安装 snapd。
正确配置(参看 apt_preferences):
1 | sudo sh -c "cat > /etc/apt/preferences.d/no-snapd.pref" << EOL |
1 | a -> Archive |
验证效果:可以查询到该包,但是无法安装。
1 | sysin @ u22 in ~ [13:59:22] |
同时禁用 snap Firefox 的更新(Server 版也可以配置):
1 | sudo sh -c "cat > /etc/apt/preferences.d/no-firefox.pref" << EOL |
现在服务器版安装桌面环境也没有 Snap!
1 | sudo apt update |
该方法也适用于 Ubuntu 20.04,只是 20.04 中 Firefox 不使用 Snap 软件包,不用额外屏蔽,也不用额外安装 deb 格式替代。
安装软件商店和 Firefox
上述操作后,可以安装 deb 格式的软件商店和 Firefox。
安装 Gnome 软件商店
1 | sudo apt install gnome-software |
安装 DEB 格式的 Firefox
添加 Firefox 官方 PPA(Personal Package Archives)仓库:
1 | sudo add-apt-repository ppa:mozillateam/ppa |
将 Firefox 官方 PPA 仓库中的 firefox 设为高优先级:
1 | sudo sh -c "cat > /etc/apt/preferences.d/mozillateam-firefox.pref" << EOL |
现在可以安装最新版的 deb 版 Firefox:
1 | sudo apt update |
附录:恢复 Snap 的方法
只需要删除配置文件,即可重新使用 Snap 软件包。
1 | sudo rm /etc/apt/preferences.d/no-snap.pref |
下载仅供下载体验和测试学习,不得商用和正当使用。
下载体验