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软件,同时保持系统整洁。对于特殊软件,建议在操作前查阅其官方文档或相关社区指南获取具体卸载步骤。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/970188.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

DeepSeek教unity------MessagePack-02

内置支持类型: 对象序列化 MessagePack for C# 可以序列化你自己定义的公共类或结构体类型。默认情况下,可序列化的类型必须用 [MessagePackObject] 属性进行注解,成员需要用 [Key] 属性进行注解。键可以是索引(整数)…

部门管理(体验,最原始方法来做,Django+mysql)

本人初学,写完代码在此记录和复盘 在创建和注册完APP之后(我的命名是employees),编写models.py文件创建表 手动插入了几条数据 1.部门查询 urls.py和views.py在编写之前,都要注意导入对应的库 urls.py:…

爬虫实战:利用代理ip爬取推特网站数据

引言 亮数据-网络IP代理及全网数据一站式服务商屡获殊荣的代理网络、强大的数据挖掘工具和现成可用的数据集。亮数据:网络数据平台领航者https://www.bright.cn/?promoRESIYEAR50/?utm_sourcebrand&utm_campaignbrnd-mkt_cn_csdn_yingjie202502 在跨境电商、社…

C#windows窗体人脸识别

一、创建一个数据库,名为TestFaceDB 里面有一张表就OK了,表名Users,表里面有几个字段我说明一下: id--------------------bigint----------------------编号 name--------------varchar(50)-----------------用户名 phone--------------v…

opencv中minAreaRect函数输出角度问题

opencv中minAreaRect函数输出角度问题 新版opencv中minAreaRect函数计算最小外接矩形时,角度范围由旧版的[-90, 0]变为[0, 90]。 cv2.minAreaRect输入:四边形的四个点(不要求顺序)。 输出:最小外接矩形的中心点坐标x…

Eclipse:关闭多余的工具条

Eclipse默认的工具条非常多,可以通过如下方法选择关闭一些不常用的: 1.选择菜单Window -> Perspective -> Customize Perspective 2.根据需要勾选Toolbar Visbility下面的工具条项

电商小程序(源码+文档+部署+讲解)

引言 随着移动互联网的快速发展,电商小程序成为连接消费者与商家的重要桥梁。电商小程序通过数字化手段,为消费者提供了一个便捷、高效的购物平台,从而提升购物体验和满意度。 系统概述 电商小程序采用前后端分离的架构设计,服…

MySQL单表存多大的数据量比较合适

前言 经常使用MySQL数据库的小伙伴都知道,当单表数据量达到一定的规模以后,查询性能就会显著降低。因此,当单表数据量过大时,我们往往要考虑进行分库分表。那么如何计算单表存储多大的数据量合适?当单表数据达到多大的…

Visual Studio Code支持WSL,直接修改linux/ubuntu中的文件

步骤1 开始通过 WSL 使用 VS Code | Microsoft Learn 点击远程开发扩展包。 步骤2 Remote Development - Visual Studio Marketplace 点击install, 允许打开Visual Studio Code。 步骤3 共有4项,一齐安装。 步骤4 在WSL Linux(Ubuntu)中&#xf…

微服务SpringCloud Alibaba组件nacos教程【详解naocs基础使用、服务中心配置、集群配置,附有案例+示例代码】

一.Nacos教程 文章目录 一.Nacos教程1.1 Nacos简介1.2 nacos基本使用直接下载打包服务源码方式启动 1.3 创建nacos客服端1.4 nacos集群配置1.5 nacos配置中心 1.1 Nacos简介 nacos是spring cloud alibaba生态中非常重要的一个组件,它有两个作用: 1:注册…

2024年终总结和2025年规划

2024年的主线是AI基础的学习和读书,虽然AI学习花费了更多的时间,但是读书长久看来于我是更重要的事情,哈哈哈,因此先简单回顾一下读书记忆,回顾我的2024,再展望一下我的2025. 我的2024年记忆 读万卷书&am…

实时云渲染:驱动XR技术产业化腾飞的核心引擎

在科技飞速发展的当下,扩展现实(XR)技术正以前所未有的速度融入人们的生活与工作,为用户打造出沉浸式逼真的虚拟环境。据知名XR媒体XR Today的最新数据显示,2024年全球XR市场规模已突破500亿美元,预计到202…

【AI编程】体验a0.dev:专为移动端app的对话式AI编程工具

摘要 体验专为移动端APP开发的AI编程工具 a0.dev,并附上实践过程和价格说明 体验a0.dev:专为移动端app的对话式AI编程工具 最近在探索新的AI编程工具时,发现了a0.dev,一个专注于移动端应用开发的对话式AI编程工具。今天就和大家分…

基于若依开发的工程项目管系统开源免费,用于工程项目投标、进度及成本管理的OA 办公开源系统,非常出色!

一、简介 今天给大家推荐一个基于 RuoYi-Flowable-Plus 框架二次开发的开源工程项目管理系统,专为工程项目的投标管理、项目进度控制、成本管理以及 OA 办公需求设计。 该项目结合了 Spring Boot、Mybatis、Vue 和 ElementUI 等技术栈,提供了丰富的功能…

数据库数据恢复—MongoDB丢失_mdb_catalog.wt文件导致报错的数据恢复案例

MongoDB数据库存储模式为文档数据存储库,存储方式是将文档存储在集合之中。 MongoDB数据库是开源数据库,同时提供具有附加功能的商业版本。 MongoDB中的数据是以键值对(key-value pairs)的形式显示的。在模式设计上,数据库受到的约束更少。这…

小米 R3G 路由器(Pandavan)实现网络打印机功能

小米 R3G 路由器(Pandavan)实现网络打印机功能 一、前言 家中有多台 PC 设备需要打印服务,但苦于家中的 Epson L380 打印机没有网络打印功能,并且配置 Windows 共享打印机实在是过于繁琐且需要共享机保持唤醒状态过于费电。想到…

笔记8——模式匹配 match语句(仅在Python 3.10及以上版本中可用)

文章目录 模式匹配 match语句(仅在 Python 3.10及以上版本 中可用)基本语法基本匹配操作应用场景 模式匹配 match语句(仅在 Python 3.10及以上版本 中可用) Python 3.10 及以上版本中才引入了 match 语句用于简化复杂的条件判断和数据解构;类似于其他语言中的 swit…

Edge浏览器清理主页

我们都知道,Microsoft Edge浏览器是微软创造的搜索浏览器,Windows10、11自带。但是你可以看到,每次你打开Edge浏览器的时候都可以看到许多的广告,如图: 导致打开Edge浏览器的时候会遭受卡顿,广告骚扰&#…

JVM类加载和垃圾回收(详细)

文章目录 JVM介绍JDK/JRE/JVM的关系 内存结构堆程序计数器虚拟机栈本地方法栈本地内存 类文件字节码文件结构 类加载类的生命周期加载类加载器双亲委派模型 链接初始化类卸载 垃圾回收堆空间的基本结构内存分配和回收原则死亡对象判断方法垃圾收集算法垃圾收集器 JVM 介绍 JD…

算法——结合实例了解深度优先搜索(DFS)

一,深度优先搜索(DFS)详解 DFS是什么? 深度优先搜索(Depth-First Search,DFS)是一种用于遍历或搜索树、图的算法。其核心思想是尽可能深地探索分支,直到无法继续时回溯到上一个节点…