我该如何删除snap
?apt
假装它不存在,但我仍然可以用它调用命令。
尝试删除它说read only file system
# apt remove snap
Reading package lists... Done
Building dependency tree
Reading state information... Done
Package 'snap' is not installed, so not removed
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
# snap whoami
email: -
答案1
你会想做
sudo apt autoremove --purge snapd
之后,运行以下命令,以便 Ubuntu 不会自动将 snapd 安装为更新。
sudo apt-mark hold snapd
补充评论:
Ubuntu 22.04 默认安装 Firefox 作为 snap 应用。如果你尝试
sudo apt install firefox
,它会在不询问你的情况下重新安装 snap。关注此答案将 Firefox 作为 apt 包安装。此外,由于删除 snap 也会删除
snap-store
,因此您可能需要将其安装gnome-software
为 GUI 应用商店。sudo apt install gnome-software --no-install-recommends
--no-install-recommends
确保它不会再次拉取 snap 插件。
- 为了防止 Ubuntu 将来自动重新安装 snapd,请参阅这个答案
答案2
总结:
sudo rm -rf /var/cache/snapd/
sudo apt autoremove --purge snapd gnome-software-plugin-snap
rm -fr ~/snap
sudo apt-mark hold snapd
这将彻底删除snap
所有snapd
已安装的 snap 包和他们的数据,并且不再在软件商店中推荐 snap 包。最后,它将阻止snapd
包再次被安装。
您的输出mount
,df
并将cat /proc/partitions
感谢您;)
可选
通过尝试安装来测试该块是否有效chromium-browser
,它(在撰写本文时)突然依赖于snapd
并且会在安装时将刚刚卸载的所有内容拖回系统中:
sudo apt-get install chromium-browser
安装将会失败。
答案3
我不确定你是否特意要求这样做,但如果你只是想删除软件(gnome-software;正如我所想的那样)中显示的 snap 包,你可以使用命令卸载 snap 插件
sudo apt-get remove --purge gnome-software-plugin-snap
我不知道是否--purge
有必要,但它工作正常 - 软件现在不显示来自 Snap Store 的软件包,但我仍然可以通过命令行安装它们snap install [something]
答案4
我有一个简短的脚本,可以删除所有现有的快照,之后可以正常删除 snapd。
#!/bin/bash
set -euo pipefail
# snaps can only be removed if they have no other snaps
# depending on them. We use a brute force approach and
# just try to uninstall them multiple times.
#
# try at most 30 times to uninstall all snaps
MAX_TRIES=30
for try in $(seq 1 $MAX_TRIES); do
INSTALLED_SNAPS=$(snap list 2> /dev/null | grep -c ^Name || true)
if (( $INSTALLED_SNAPS == 0 )); then
echo "all snaps removed"
exit 0
fi
echo "Attempt $try of $MAX_TRIES to remove $INSTALLED_SNAPS snaps."
# we ignore error during uninstall as we are retrying in the loop
snap list 2> /dev/null | grep -v ^Name | awk '{ print $1 }' | xargs -r -n1 snap remove || true
done
echo "ERROR: Unable to uninstall"
exit 1