如何从 Ubuntu 中删除 snap?

如何从 Ubuntu 中删除 snap?

我该如何删除snapapt假装它不存在,但我仍然可以用它调用命令。

尝试删除它说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

未调用该包snap,而是snapd

你会想做

sudo apt autoremove --purge snapd

之后,运行以下命令,以便 Ubuntu 不会自动将 snapd 安装为更新。

sudo apt-mark hold snapd

补充评论

  1. Ubuntu 22.04 默认安装 Firefox 作为 snap 应用。如果你尝试sudo apt install firefox,它会在不询问你的情况下重新安装 snap。关注此答案将 Firefox 作为 apt 包安装。

  2. 此外,由于删除 snap 也会删除snap-store,因此您可能需要将其安装gnome-software为 GUI 应用商店。

    sudo apt install gnome-software --no-install-recommends
    

--no-install-recommends确保它不会再次拉取 snap 插件。

  1. 为了防止 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包再次被安装。

您的输出mountdf并将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

相关内容