Ubuntu卸载snap

本文涉及的产品
无影云电脑企业版,8核16GB 120小时 1个月
轻量应用服务器 2vCPU 4GiB,适用于搭建Web应用/小程序
轻量应用服务器 2vCPU 4GiB,适用于网站搭建
简介: 本文介绍了如何彻底卸载 Ubuntu 系统中的 Snap 及其相关服务。由于 Snap 占用资源高且体验不佳,许多用户选择将其移除。文章详细列出了停止服务、卸载软件、清除残留文件、阻止自动安装等步骤,并提供了一键卸载脚本,适用于 Ubuntu 20.04/22.04,帮助用户高效完成卸载操作。

Ubuntu卸载snap

最近由于复现实验新装了Ubuntu20.04,发现后台中snapd进程占用高。snap是Canonical公司推出的一款软件管理工具,在20.04以及之后版本Ubuntu中都有预装,但因其难用,资源占用高被广为诟病,特搜索整理资料将其卸载。

1.打开终端,输入snap list,查看已安装的软件

root@ubuntu2204:~# snap list
Name    Version        Rev    Tracking       Publisher   Notes
core20  20230622       1974   latest/stable  canonical✓  base
lxd     5.0.2-838e1b2  24322  5.0/stable/…   canonical✓  -
snapd   2.59.5         19457  latest/stable  canonical✓  snapd

2.停止snapd服务

root@ubuntu2204:~# systemctl disable snapd.service && systemctl disable snapd.socket && systemctl disable snapd.seeded.service

3.依次移除snap安装的软件

运行 sudo snap remove --purge lxd 等命令依次删除前面列表中的各个软件,需要注意的是在上述列表notes列表明是base的表示是其他软件的依赖项,需要放在最后面删除。比如上图中的core20等等

root@ubuntu2204:~# vi remove_snap_package.sh
#!/bin/bash
sum=$(snap list | awk 'NR>=2{print $1}' | wc -l)
while [ $sum -ne 0 ];do
    for p in $(snap list | awk 'NR>=2{print $1}') ;do
        snap remove --purge $p
    done
    sum=$(snap list | awk 'NR>=2{print $1}' | wc -l)
done

root@ubuntu2204:~# bash remove_snap_package.sh
# 提示如下,表明已经删除干净:
No snaps are installed yet. Try 'snap install hello-world'.

4.完全清除 snapd

root@ubuntu2204:~# apt -y autoremove --purge snapd
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages will be REMOVED:
  snapd* squashfs-tools* ubuntu-server-minimal*
0 upgraded, 0 newly installed, 3 to remove and 33 not upgraded.
After this operation, 103 MB disk space will be freed.
(Reading database ... 74127 files and directories currently installed.)
Removing ubuntu-server-minimal (1.481.1) ...
Removing snapd (2.58+22.04.1) ...
Warning: Stopping snapd.service, but it can still be activated by:
  snapd.socket
Removing squashfs-tools (1:4.5-3build1) ...
Processing triggers for dbus (1.12.20-2ubuntu4.1) ...
Processing triggers for man-db (2.10.2-1) ...
(Reading database ... 74018 files and directories currently installed.)
Purging configuration files for snapd (2.58+22.04.1) ...
rmdir: failed to remove '/etc/systemd/system/snapd.mounts.target.wants': No such file or directory
Discarding preserved snap namespaces
Final directory cleanup
Removing extra snap-confine apparmor rules
Removing snapd cache
Removing snapd state

5.删除缓存目录(如有)

root@ubuntu2204:~# rm -rf ~/snap && sudo rm -rf /snap && rm -rf /var/snap && rm -rf /var/lib/snapd && rm -rf /var/cache/snapd

6.防止apt update自动安装snap

即使使用以上命令移除了 Snap 软件包,但如果没有关闭 apt 触发器,sudo apt update命令会再一次将 Snap 安装回来。

要关闭它,需要在/etc/apt/preferences.d/目录下创建一个 apt 设置文件nosnap.pref来阻止 Snap 服务自动下载

运行命令vi /etc/apt/preferences.d/nosnap.pref,打开编辑器,输入以下内容并保存文件

root@ubuntu2004:~# cat > /etc/apt/preferences.d/no-snapd.pref << EOF
Package: snapd
Pin: release a=*
Pin-Priority: -10
EOF

文件保存后运行sudo apt update 即可。

root@ubuntu2204:~# apt update

7.一键ubuntu卸载snap脚本

Shell脚本源码地址:

Gitee:https://gitee.com/raymond9/shell
Github:https://github.com/raymond999999/shell

可以去上面的Gitee或Github代码仓库拉取脚本。

root@ubuntu2204:~# cat remove_snap.sh 
#!/bin/bash
#
#***************************************************************************************************
#Author:        Raymond
#QQ:            88563128
#Date:          2024-05-06
#FileName:      remove_snap.sh
#MIRROR:        raymond.blog.csdn.net
#Description:   remove_snap for Ubuntu 20.04/22.04
#Copyright (C): 2024 All rights reserved
#***************************************************************************************************
COLOR="echo -e \\033[01;31m"
END='\033[0m'

ubuntu_remove_snap(){
   
    dpkg -s snapd &> /dev/null || {
    ${COLOR}"snap已卸载!"${END};exit; }
    systemctl disable snapd.service && systemctl disable snapd.socket && systemctl disable snapd.seeded.service

    sum=$(snap list | awk 'NR>=2{print $1}' | wc -l)
    while [ $sum -ne 0 ];do
        for p in $(snap list | awk 'NR>=2{print $1}'); do
            snap remove --purge $p
        done
        sum=$(snap list | awk 'NR>=2{print $1}' | wc -l)
    done

    apt -y autoremove --purge snapd

    rm -rf ~/snap && sudo rm -rf /snap && rm -rf /var/snap && rm -rf /var/lib/snapd && rm -rf /var/cache/snapd

    cat > /etc/apt/preferences.d/no-snapd.pref << EOF
Package: snapd
Pin: release a=*
Pin-Priority: -10
EOF
    apt update
}

main(){
   
    ubuntu_remove_snap
}

main
相关文章
|
机器学习/深度学习 存储 Shell
分享使用谷歌Colab 常用小tips, 玩转Google Colab
分享使用谷歌Colab 常用小tips, 玩转Google Colab
分享使用谷歌Colab 常用小tips, 玩转Google Colab
|
存储 编解码 算法
音视频入门基础理论知识
音视频入门基础理论知识
408 0
|
19天前
|
存储 安全 数据管理
基于python的在线考试系统
本系统基于Python开发,旨在通过信息化手段提升各行业数据管理效率。系统具备良好的安全性、稳定性及可扩展性,支持数据高效处理与决策支持,适用于教育、医疗、旅游等多个领域,助力办公自动化与科学化管理,显著提升工作效率并降低错误率。
|
22天前
|
Prometheus 监控 Cloud Native
基于docker搭建监控系统&日志收集
Prometheus 是一款由 SoundCloud 开发的开源监控报警系统及时序数据库(TSDB),支持多维数据模型和灵活查询语言,适用于大规模集群监控。它通过 HTTP 拉取数据,支持服务发现、多种图表展示(如 Grafana),并可结合 Loki 实现日志聚合。本文介绍其架构、部署及与 Docker 集成的监控方案。
231 122
基于docker搭建监控系统&日志收集
|
数据库
jumpserver V2自动同步、更新阿里云资产
jumpserver V2自动同步、更新阿里云资产
|
7月前
|
弹性计算 算法 Linux
使用SM4算法加密LUKS格式磁盘
本文介绍了在Anolis 8操作系统使用cryptsetup对磁盘进行分区、加密和挂载的过程。采用SM4加密算法。具体步骤包括:初始化加密卷、解锁加密分区、格式化并挂载设备。最后,展示了如何取消挂载并关闭加密卷以确保数据安全。整个过程确保了磁盘数据的安全性和隐私保护。
430 2
使用SM4算法加密LUKS格式磁盘
|
1月前
|
监控 算法 C#
C#与Halcon联合编程实现鼠标控制图像缩放、拖动及ROI绘制
C#与Halcon联合编程实现鼠标控制图像缩放、拖动及ROI绘制
263 0
|
机器学习/深度学习 自然语言处理 人机交互
音频基座大模型FunAudioLLM体验评测
一文带你详细了解音频基座大模型FunAudioLLM
2083 5