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

Debian系发行版通用软件彻底卸载指南

1. 确定软件包名称

# 查看已安装软件列表
dpkg -l | grep 关键词
或
apt list --installed | grep 关键词# 查找二进制文件路径(用于推测包名)
which 程序名  # 查找可执行文件路径
whereis 程序名  # 查找相关文件

2. 服务检查和停止

# 检查是否有相关服务正在运行
systemctl list-unit-files | grep 软件名
ps aux | grep 软件名# 停止并禁用服务
sudo systemctl stop 软件名.service
sudo systemctl disable 软件名.service

3. 备份重要数据

# 创建备份目录
mkdir -p ~/backup/软件名_$(date +%Y%m%d)# 备份常见配置文件
cp -r ~/.config/软件名* ~/backup/软件名_$(date +%Y%m%d)/ 2>/dev/null
cp -r ~/.local/share/软件名* ~/backup/软件名_$(date +%Y%m%d)/ 2>/dev/null
cp -r /etc/软件名* ~/backup/软件名_$(date +%Y%m%d)/ 2>/dev/null# 备份特殊数据(如数据库软件)
# 例如MySQL: mysqldump -u 用户名 -p 数据库名 > ~/backup/数据库名_$(date +%Y%m%d).sql

4. 主程序卸载

# 使用APT卸载并保留配置文件
sudo apt remove 软件包名# 完全卸载并清除配置文件(推荐)
sudo apt purge 软件包名
# 或同时删除依赖
sudo apt purge --auto-remove 软件包名# 如果通过dpkg直接安装的包
sudo dpkg -r 软件包名  # 仅卸载
sudo dpkg --purge 软件包名  # 卸载并清除配置

5. 删除用户配置文件

# 常见用户配置文件位置
rm -rf ~/.config/软件名*
rm -rf ~/.cache/软件名*
rm -rf ~/.local/share/软件名*
rm -rf ~/软件名# 使用find命令查找潜在配置(先查看再删除)
find ~ -name "*软件名*" -type f -o -type d
# 确认无误后再删除(请谨慎操作)
find ~ -name "*软件名*" -type f -o -type d -exec rm -rf {} \; 2>/dev/null

6. 清理系统残留文件

# 常见系统级残留位置
sudo rm -rf /usr/share/软件名*
sudo rm -rf /opt/软件名*
sudo rm -rf /etc/软件名*
sudo rm -rf /var/lib/软件名*
sudo rm -rf /var/log/软件名*# 清理桌面菜单项
sudo rm -rf /usr/share/applications/软件名*.desktop

7. 清理依赖和残留配置

# 自动移除不再需要的依赖
sudo apt autoremove# 查找并清理遗留的配置文件
dpkg -l | grep '^rc' | awk '{print $2}'
# 确认后清理
sudo dpkg --purge $(dpkg -l | grep '^rc' | awk '{print $2}')# 谨慎操作:移除相关依赖库(需确认是否被其他程序使用)
# 可使用 apt rdepends --installed 库名 检查反向依赖
sudo apt remove 相关库名

8. 其他安装方式的处理

# 如果通过Snap安装
snap list | grep 软件名
sudo snap remove 软件名# 如果通过Flatpak安装
flatpak list | grep 软件名
flatpak uninstall 软件名# 如果通过PPA安装,需要移除PPA
sudo add-apt-repository --remove ppa:ppa名称# 如果通过源码安装
# 通常需要到源码目录执行:
cd 源码目录
sudo make uninstall
# 或检查有无卸载脚本
./uninstall.sh# 如果通过AppImage运行
rm ~/Applications/软件名.AppImage
rm ~/.local/share/applications/appimagekit-软件名.desktop

9. 系统维护和更新

# 更新桌面数据库
sudo update-desktop-database# 重建图标缓存(GNOME桌面)
sudo gtk-update-icon-cache -f /usr/share/icons/hicolor# 更新软件源缓存
sudo apt update

10. 验证卸载

# 检查软件包是否完全移除
dpkg -l | grep 软件名
apt list --installed | grep 软件名# 检查二进制文件是否存在
which 程序名
whereis 程序名# 全盘搜索残留(先查看结果,再决定是否删除)
sudo find / -name "*软件名*" 2>/dev/null

注意事项

  1. 安全操作原则

    • 在执行任何删除命令前,先使用不带删除参数的命令查看将被操作的文件
    • 对于重要数据,始终先备份再操作
    • 使用通配符(*)时要特别小心,确保匹配的是目标文件
  2. 特殊软件处理

    • 数据库软件:先导出数据,关闭服务,再卸载
    • Web服务器:备份网站文件、配置和数据库
    • 开发环境:确保不会影响其他项目
    • 浏览器:导出书签、密码等个人数据
  3. 依赖处理

    • 使用 apt-cache rdepends --installed 包名 检查是否有其他软件依赖该包
    • 先使用 apt-mark auto 包名 将自动安装的依赖标记为自动,再用 apt autoremove
  4. 服务管理

    • 使用 systemctl list-dependencies 服务名 检查服务依赖
    • 确保重启后服务不会自动启动
    • 检查 /etc/init.d//etc/systemd/system/ 中的启动脚本
  5. 特殊目录清理

    • /tmp/ 可能有临时文件
    • /usr/local/ 可能有手动安装的组件
    • /var/tmp/ 可能有缓存文件

示例工作流

以卸载Google Chrome为例:

  1. 确认包名:

    dpkg -l | grep chrome
    
  2. 检查并停止相关服务:

    ps aux | grep chrome
    
  3. 备份用户数据:

    mkdir -p ~/backup/chrome_$(date +%Y%m%d)
    cp -r ~/.config/google-chrome ~/backup/chrome_$(date +%Y%m%d)/
    
  4. 卸载软件:

    sudo apt purge google-chrome-stable
    
  5. 清理配置文件:

    rm -rf ~/.config/google-chrome
    rm -rf ~/.cache/google-chrome
    
  6. 清理系统文件:

    sudo rm -rf /usr/share/applications/google-chrome.desktop
    
  7. 清理依赖:

    sudo apt autoremove
    
  8. 验证卸载:

    which google-chrome
    dpkg -l | grep chrome
    

通过遵循这个完整流程,您可以安全、彻底地卸载大多数Linux软件,同时保持系统整洁。对于特殊软件,建议在操作前查阅其官方文档或相关社区指南获取具体卸载步骤。

相关文章:

Debian系发行版通用软件彻底卸载指南

1. 确定软件包名称 # 查看已安装软件列表 dpkg -l | grep 关键词 或 apt list --installed | grep 关键词# 查找二进制文件路径(用于推测包名) which 程序名 # 查找可执行文件路径 whereis 程序名 # 查找相关文件2. 服务检查和停止 # 检查是否有相关…...

微信小程序地图标记点,安卓手机一次性渲染不出来的问题

问题描述: 如果微信小程序端,渲染的标记物太多,安卓手机存在标记物不显示的问题,原因初步判断是地图还没有渲染完,标记物数据已经加载完了,导致没有在地图上显示。 解决办法: 使用map组件的b…...

LabVIEW软件需求开发文档参考

在项目开发的工作历程中,精准把握项目需求无疑是成功打造整个项目的首要关键步骤,同时也是一个至关重要且不可忽视的核心环节。明确且详尽的项目需求就如同建筑的基石,为后续的设计、开发、测试等一系列工作提供了坚实的支撑和清晰的指引。倘…...

MYSQL批量UPDATE的两种方式

工作中遇到批量更新的场景其实是比较常见的。 但是该如何正确的进行批量UPDATE,很多时候往往有点头大。 这里列2种可用的方式,供选择(请选择方式一,手动狗头。)。 如果使用了MyBatis增强组件MyBatisPlus 如果使用了MyBatisPlus,…...

【Viper】配置格式与支持的数据源与go案例

Viper 是一个用于 Go 应用程序的配置管理库,支持多种配置格式和数据源。 安装依赖 go get github.com/spf13/viper go get github.com/spf13/viper/remote go get go.etcd.io/etcd/client/v3"github.com/spf13/viper/remote"要写在etcd客户端import里 1…...

C++17 中的 std::reduce:详细教程

文章目录 1. 简介2. 函数签名3. 使用场景3.1 简单的累加操作3.2 自定义归并操作3.3 并行计算的性能优势 4. 注意事项4.1 归并操作的结合律和交换律4.2 默认值的使用 5. 总结 1. 简介 std::reduce 是 C17 标准库中引入的一个算法,用于对范围内的元素进行归并操作。它…...

解决 paddle ocr 遇到 CXXABI_1.3.13 not found 的问题

ImportError: /lib/x86_64-linux-gnu/libstdc.so.6: version CXXABI_1.3.13 not found (required by /home/hum/anaconda3/envs/ipc/lib/python3.11/site-packages/paddle/base/libpaddle.so) 通过命令检查 strings /lib/x86_64-linux-gnu/libstdc.so.6|grep CXXABI 而实际上我…...

探索 Text-to-SQL 技术:从自然语言到数据库查询的桥梁

亲爱的小伙伴们😘,在求知的漫漫旅途中,若你对深度学习的奥秘、Java 与 Python 的奇妙世界,亦或是读研论文的撰写攻略有所探寻🧐,那不妨给我一个小小的关注吧🥰。我会精心筹备,在未来…...

mac搭建环境

从0-1搭建mac环境 先查看自己的芯片信息 bash uname -mbash-3.2$ uname -m arm64这里是自己的型号安装brew xcode-select --install xcode-select -p /bin/zsh -c “$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)” source /Users/lanren/.…...

算法学习笔记之贪心算法

导引(硕鼠的交易) 硕鼠准备了M磅猫粮与看守仓库的猫交易奶酪。 仓库有N个房间,第i个房间有 J[i] 磅奶酪并需要 F[i] 磅猫粮交换,硕鼠可以按比例来交换,不必交换所有的奶酪 计算硕鼠最多能得到多少磅奶酪。 输入M和…...

Docker 镜像标签使用

写在前面 当使用命令 docker pull mysql 拉取镜像时,其实等价于如下命令 docker pull mysql:latest latest 是默认的标签,字面上理解为最新版本的镜像,实质上 latest 只是镜像的标签名称,跟具体某个版本号地位一样,…...

STM32之SG90舵机控制

目录 前言: 一、硬件准备与接线 1.1 硬件清单 1.2 接线 二、 SG90舵机简介 1.1 外观 1.2 基本参数 1.3 引脚说明 1.4 控制原理 1.5 特点 1.6 常见问题 三、 单片机简介 四、 程序设计 4.1 定时器配置 4.2 角度控制函数 4.3 主函数调用 五、 总结 …...

VSCode Error Lens插件介绍(代码静态检查与提示工具)(vscode插件)

文章目录 VSCode Error Lens 插件介绍**功能概述****开发背景****使用方法****适用场景** VSCode Error Lens 插件介绍 功能概述 Error Lens 是一款增强 VS Code 错误提示的扩展工具,通过 内联显示错误和警告信息,直接定位代码问题,提升开发…...

list_for_each_entry_safe 简介

list_for_each_entry_safe 是 Linux 内核中用于遍历链表的一个宏,特别适用于在遍历过程中可能需要删除链表节点的场景。它的设计保证了在删除当前节点时,不会影响后续节点的访问,从而实现安全的遍历。 定义 #define list_for_each_entry_sa…...

微软AutoGen高级功能——Memory

介绍 大家好,博主又来给大家分享知识了。这次又要给大家分享什么呢?哈哈。这次要给大家分享的是微软AutoGen框架的高级且重要的功能:Memory。在微软AutoGen中,Memory(记忆)是一个重要概念,它主要用于存储和管理智能体…...

【鸿蒙开发】第三十六章 状态管理 - V1V2混用和迁移指导

目录​​​​​​​ 1 自定义组件混用场景指导 1.1 概述 1.2 状态管理装饰器总览 状态管理V1的装饰器 状态管理V2的装饰器 状态管理装饰器支持的数据类型总览 1.3 限制条件 1.3.1 V1和V2的装饰器不允许混用 1.V1的自定义组件中不可以使用V2的装饰器 2.V2的自定义组件…...

轮子项目--消息队列的实现(3)

上一篇文章中我把一些关键的类以及表示出来,如何对这些类对应的对象进行管理呢?管理分为硬盘和内存上,硬盘又分为数据库(管理交换机,队列和绑定)和文件(管理消息),本文就…...

一文深入了解DeepSeek-R1:模型架构

本文深入探讨了 DeepSeek-R1 模型架构。让我们从输入到输出追踪 DeepSeek-R1 模型,以找到架构中的新发展和关键部分。DeepSeek-R1 基于 DeepSeek-V3-Base 模型架构。本文旨在涵盖其设计的所有重要方面。 📝 1. 输入上下文长度 DeepSeek-R1的输入上下文长…...

秘密信息嵌入到RGB通道的方式:分段嵌or完整嵌入各通道

目录 1. 将秘密信息分为三部分的理由 (1)均匀分布负载 (2)提高鲁棒性 (3)容量分配 2. 不将秘密信息分为三部分的情况 (1)嵌入容量 (2)视觉质量 &#…...

Ai人工智能的未来:趋势、挑战与机遇

Ai人工智能的未来:趋势、挑战与机遇 引言 人工智能(AI)已经成为当代科技发展的核心驱动力,其影响力渗透到各个行业,并塑造了我们未来的社会结构。无论是在医疗、金融、制造业,还是在自动驾驶、智能客服、…...

SkyWalking 10.2.0 SWCK 配置过程

SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂

蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序

一、开发准备 ​​环境搭建​​: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 ​​项目创建​​: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

ElasticSearch搜索引擎之倒排索引及其底层算法

文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战

在现代战争中&#xff0c;电磁频谱已成为继陆、海、空、天之后的 “第五维战场”&#xff0c;雷达作为电磁频谱领域的关键装备&#xff0c;其干扰与抗干扰能力的较量&#xff0c;直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器&#xff0c;凭借数字射…...

浅谈不同二分算法的查找情况

二分算法原理比较简单&#xff0c;但是实际的算法模板却有很多&#xff0c;这一切都源于二分查找问题中的复杂情况和二分算法的边界处理&#xff0c;以下是博主对一些二分算法查找的情况分析。 需要说明的是&#xff0c;以下二分算法都是基于有序序列为升序有序的情况&#xf…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台

🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join

纯 Java 项目&#xff08;非 SpringBoot&#xff09;集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...