去除 Ubuntu 的 snap



起因

我使用的 Ubuntu 18.04 上,如果键入 lsblkfdisk -l ,会看到很多的 loop 设备。snap 是 Ubuntu 在强推的一个软件安装工具,这些 loop 则是 snap 管理它安装的软件版本的方式 。为了让我的设备列表能干净些,需要彻底去除 snap 。

操作步骤

snap 安装的软件,可以通过 snap list 列出来。通常应该会有一些 gnome 的组件,其他的都是可以无忧删除的,完全可以通过 apt 或 deb 的方式再安装。

首先,先通过 snap 卸载掉那些本就已经不再使用的软件。执行 bash 脚本:


#!/bin/bash
set -eu
snap list --all | grep -vE "^Name" | awk '/disabled/{print $1,$3}' |
    while read snapname revision; do
        sudo snap remove "$snapname" --revision="$revision"
    done

接着,彻底卸载 snapd (这个过程会自动删除掉 /var/cache/snapd):


sudo apt autoremove --purge snapd gnome-software-plugin-snap
sudo apt-mark hold snapd

重新安装 gnome 相关包,但不要通过 snap 的方式:


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

即使卸载了 snapd ,在更新系统及软件时,Ubuntu 还是有可能会再安装上 snap 。这需要修改 preferences 。编辑 /etc/apt/preferences.d/nosnap.pref :

1
2
3
Package: snapd
Pin: release a=*
Pin-Priority: -10

ᕙ(•̤᷆ ॒ ູ•̤᷇)ᕘ₊˚ 收工。

本文链接: https://paxinla.github.io/posts/2023/06/qu-chu-ubuntu-de-snap.html

知识共享许可协议 本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议进行许可,欢迎转载、演绎,
但是必须保留本文的署名 Charles(包含链接),且不得用于商业目的。