Ubuntu22.04(禁用)彻底删除Snap以及出现“rm: 无法删除"XXX":只读文件系统”的解决方案
Ubuntu22.04(禁用)彻底删除Snap以及出现”rm: 无法删除"XXX":只读文件系统“的解决方案
导语
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 软件包,卡顿明显。
删除Snap的方法
方法一、方法二删除结果相同。
但是方法二更为彻底,删掉了缓存下的snapd包文件等。
方法一:
在你的系统中打开一个终端,使用以下命令查看已经安装的 Snap 软件包的列表。它显示了 Snap 软件包,比如 Firefox,软件商店,主题以及其它默认已经安装的核心软件包。
snap list
按照以下的顺序移除 Snap 软件包。首先移除 Firefox。然后是软件商店,和用以上命令看到的你的系统中的其它软件包。
sudo snap remove --purge firefox sudo snap remove --purge snap-store sudo snap remove --purge gnome-3-38-2004 sudo snap remove --purge gtk-common-themes sudo snap remove --purge snapd-desktop-integration sudo snap remove --purge bare sudo snap remove --purge core20 sudo snap remove --purge snapd
最后,通过 apt
命令移除 Snap 服务。
sudo apt remove --autoremove snapd
方法二:
删掉所有的已经安装的 Snap 软件
for p in $(snap list | awk '{print $1}'); do sudo snap remove $p done
一般需要执行两次(桌面版三次),提示如下则正确执行:
snap "Name" is not installed core20 removed snapd removed
再次执行,提示如下,表明已经删除干净:
No snaps are installed yet. Try 'snap install hello-world'.
删除 Snap 的 Core 文件
sudo systemctl stop snapd sudo systemctl disable --now snapd.socket for m in /snap/core/*; do sudo umount $m done
删除 Snap 的管理工具
sudo apt autoremove --purge snapd
删除 Snap 的目录
rm -rf ~/snap sudo rm -rf /snap sudo rm -rf /var/snap sudo rm -rf /var/lib/snapd sudo rm -rf /var/cache/snapd
禁止apt安装snapd
即使你用以上命令移除了 Snap 软件包,但是如果你没有关闭 apt 触发器,sudo apt update
命令会再一次将 Snap 安装回来。要关闭它,我们需要在 /etc/apt/preferences.d/
目录下创建一个 apt 设置文件 nosnap.pref
来关闭 Snap 服务。
sudo gedit /etc/apt/preferences.d/nosnap.pref
添加以下的命令行,并保存该文件。
Package: snapd Pin: release a=* Pin-Priority: -10
最终效果如下图:
出现“ rm: 无法删除"XXX":只读文件系统 ”的解决方案
对于那些在Ubuntu 22.04中出现错误的情况:
$ sudo snap remove --purge firefox error: cannot perform the following tasks: - Remove data for snap "firefox" (1943) (unlinkat /var/snap/firefox/common/host-hunspell/en_ZA.dic: read-only file system)
首先验证使用以下命令验证/var/snap/firefox/common/host hunspell是否确实挂载在ext4文件系统。
lsblk-fe7-o+ro
如果情况属实,可使用如下命令停用Firefox服务。
$ sudo systemctl stop var-snap-firefox-common-host\\x2dhunspell.mount $ sudo systemctl disable var-snap-firefox-common-host\\x2dhunspell.mount Removed /etc/systemd/system/default.target.wants/var-snap-firefox-common-host\x2dhunspell.mount. Removed /etc/systemd/system/multi-user.target.wants/var-snap-firefox-common-host\x2dhunspell.mount.
不会再出现“ rm: 无法删除"XXX":只读文件系统 ”的问题,可将对应文件删除。