当前位置: 首页 > news >正文

Ubuntu卸载snap

文章目录

  • Ubuntu卸载snap
  • 1.打开终端,输入`snap list`,查看已安装的软件
  • 2.停止snapd服务
  • 3.依次移除snap安装的软件
  • 4.完全清除 snapd
  • 5.删除缓存目录(如有)
  • 6.防止apt update自动安装snap
  • 7.一键ubuntu卸载snap脚本

Ubuntu卸载snap

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

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

root@ubuntu2204:~# snap list
Name    Version        Rev    Tracking       Publisher   Notes
core20  20240416       2318   latest/stable  canonical✓  base
lxd     5.0.3-80aeff7  29351  5.0/stable/…   canonical✓  -
snapd   2.63           21759  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:~# snap remove --purge core20
error: cannot remove "core20": snap "core20" is not removable: snap is being used by snap lxd. # 提示要先移除lxdroot@ubuntu2204:~# snap remove --purge lxd
lxd removedroot@ubuntu2204:~# snap remove --purge core20
core20 removedroot@ubuntu2204:~# snap remove --purge snapd
snapd removedroot@ubuntu2204:~# cat remove_snap_package.sh
#!/bin/bash
snap remove --purge lxd
sum=$(snap list | awk 'NR>=2{print $1}' | wc -l)
while [ $sum -ne 0 ];dofor p in $(snap list | awk 'NR>=2{print $1}') ;dosnap remove --purge $pdonesum=$(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'.

出现“Waiting for conflicting change in progress…”报错提示处理:

root@ubuntu2204:~# snap remove --purge lxd
...
2025-10-20T03:35:59Z INFO Waiting for conflicting change in progress...
2025-10-20T03:36:04Z INFO Waiting for conflicting change in progress... # 如果出现这个提示,“ctrl+c”结束
Disconnect interfaces of snap "lxd"                                                                              |
error: change finished in status "Undone" with no error message# "snap changes"查看snap变化
root@ubuntu2204:~# snap changes
ID   Status  Spawn               Ready               Summary
1    Done    2024-09-11          2024-10-20          Initialize system state
2    Done    2024-10-20          2024-10-20          Initialize device
3    Undone  today at 03:35 UTC  today at 03:36 UTC  Remove "lxd" snap
4    Doing   today at 03:35 UTC  -                   Auto-refresh snaps "core20", "snapd"# "snap abort ID"结束操作中的变化
root@ubuntu2204:~# snap abort 4

出现“error: snap “core20” has “auto-refresh” change in progress”报错提示处理:

root@ubuntu2204:~# snap remove --purge core20
error: snap "core20" has "auto-refresh" change in progress  # 出现这个提示# "snap changes"查看snap变化
root@ubuntu2204:~# snap changes
ID   Status  Spawn               Ready               Summary
1    Done    2024-09-11          2024-10-20          Initialize system state
2    Done    2024-10-20          2024-10-20          Initialize device
3    Undone  today at 04:34 UTC  today at 04:35 UTC  Remove "lxd" snap
4    Doing   today at 04:34 UTC  -                   Auto-refresh snaps "core20", "snapd"
5    Done    today at 04:35 UTC  today at 04:36 UTC  Remove "lxd" snap# "snap abort ID"结束操作中的变化
root@ubuntu2204:~# snap abort 4

出现“error: daemon is restarting”报错提示处理:

root@ubuntu2204:~# snap changes
error: daemon is restarting # 出现这个提示# 重启snapd服务
root@ubuntu2204:~# systemctl restart snapd

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 0 not upgraded.
After this operation, 104 MB disk space will be freed.
(Reading database ... 74666 files and directories currently installed.)
Removing ubuntu-server-minimal (1.481.3) ...
Removing snapd (2.63+22.04ubuntu0.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 ... 74561 files and directories currently installed.)
Purging configuration files for snapd (2.63+22.04ubuntu0.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
#MP:            Raymond运维
#Date:          2025-10-19
#FileName:      remove_snap.sh
#URL:           https://wx.zsxq.com/group/15555885545422
#Description:   The remove snap script supports 
#               "Ubuntu Server 20.04, 22.04 and 24.04 LTS" operating systems.
#Copyright (C): 2025 All rights reserved
#**********************************************************************************
COLOR="echo -e \\033[01;31m"
END='\033[0m'
LOGIN_USER=`whoami`os(){. /etc/os-releaseMAIN_NAME=`sed -rn '/^NAME=/s@.*="([[:alpha:]]+).*"$@\1@p' /etc/os-release`if [ ${MAIN_NAME} == "Kylin" ];thenMAIN_VERSION_ID=`sed -rn '/^VERSION_ID=/s@.*="([[:alpha:]]+)(.*)"$@\2@p' /etc/os-release`elseMAIN_VERSION_ID=`sed -rn '/^VERSION_ID=/s@.*="?([0-9]+)\.?.*"?@\1@p' /etc/os-release`fi
}ubuntu_remove_snap(){dpkg -s snapd &> /dev/null || { ${COLOR}"snap已卸载!"${END};exit; }systemctl disable snapd.service && systemctl disable snapd.socket && systemctl disable snapd.seeded.serviceif [ ${MAIN_NAME} == "Ubuntu" ];thenif [ ${MAIN_VERSION_ID} == 20 -o ${MAIN_VERSION_ID} == 22 ];thensnap remove --purge lxdsum=$(snap list | awk 'NR>=2{print $1}' | wc -l)while [ $sum -ne 0 ];dofor p in $(snap list | awk 'NR>=2{print $1}'); dosnap remove --purge $pdonesum=$(snap list | awk 'NR>=2{print $1}' | wc -l)donefifiapt -y autoremove --purge snapdrm -rf ~/snap && sudo rm -rf /snap && rm -rf /var/snap && rm -rf /var/lib/snapd && rm -rf /var/cache/snapdcat > /etc/apt/preferences.d/no-snapd.pref << EOF
Package: snapd
Pin: release a=*
Pin-Priority: -10
EOFapt update${COLOR}"${PRETTY_NAME}操作系统,snap卸载完成!"${END}
}main(){if [ ${LOGIN_USER} == "root" ];thenubuntu_remove_snapelse${COLOR}"当然登录用户是${LOGIN_USER},请使用root用户登录或设置root用户登录后再执行此脚本!"${END}fi
}os
if [ ${MAIN_NAME} == "Ubuntu" ];thenif [ ${MAIN_VERSION_ID} == 20 -o ${MAIN_VERSION_ID} == 22 -o ${MAIN_VERSION_ID} == 24 ];thenmainfi
else${COLOR}"此脚本不支持${PRETTY_NAME}操作系统!"${END}
fi
http://www.dtcms.com/a/523568.html

相关文章:

  • STP(生成树协议)与 RSTP(快速生成树协议)核心知识
  • 数据结构:顺序表讲解(2)
  • 建设一个网站需要考虑什么海口h5公司
  • 高端广告公司网站建设wordpress插件 stock
  • 第二章、全局配置项目主题色(主题切换+跟随系统)
  • 彻底清理:Vue项目中移除static文件夹的完整指南
  • 【Linux网络】套接字Socket编程预备
  • day18_菜单查询 合并servlet
  • 算法总结篇(枚举-分治)
  • TCP pure ACK 的不可扩展性问题
  • Android16 Wifi打开到自动连接的主要日志过程分析介绍
  • 背包dp——动态规划
  • 找做柜子的网站中国芯片制造最新消息
  • 甘肃省临夏州建设局网站wordpress 未分类
  • 用 Excalidraw+cpolar 做会议协作,像素级还原实体白板体验
  • 使用C++开发Android .so库的优势与实践指南
  • Spring AOP:注解配置与XML配置双实战
  • 基于YOLO11深度学习的半导体晶圆外观缺陷检测系统【Python源码+Pyqt5界面+数据集+安装使用教程+训练代码】【附下载链接】
  • 笔记本电脑待机、睡眠与休眠模式的技术差异解析
  • 2025丨时间很快,又来到1024
  • 基于python人脸识别系统 人脸检测 实时检测 深度学习 Dlib库 ResNet深度卷积神经网络 pyqt设计 大数据(源码)✅
  • 【C + +】unordered_set 和 unordered_map 的用法、区别、性能全解析
  • 《刚刚问世》系列初窥篇-Java+Playwright自动化测试-31- 操作日历时间控件-上篇(详细教程)
  • 电子商城网站建设与维护怎么建设淘客自己的网站_
  • 基于 Vue3 + WebSocket 实现的平板控制端与大屏展示端联动方案
  • 提高自己的网站网站 利润
  • 外贸seo软文发布平台上海百度推广优化排名
  • Qt 图像与定时器实战:实现动态图片轮播效果
  • C++ 模板初阶:从函数重载到泛型编程的优雅过渡
  • 第 01 天:Linux 是什么?内核、发行版及其生态系统