如何彻底卸载Linux源码软件不崩溃?

推荐方法:安装时预记录文件列表(最安全)

若您在安装时已记录文件路径,可精准卸载:

  1. 定位安装记录文件
    通常位于源码目录的install_manifest.txt(常见于CMake项目)或自定义记录文件:

    # 进入源码编译目录
    cd /path/to/source-code
    # 查找记录文件(常见名称)
    ls -l install_manifest.txt  # 或 make_install.log
  2. 按记录卸载文件
    使用xargs逐行删除记录中的文件:

    sudo xargs rm -f < install_manifest.txt
  3. 删除残留目录
    手动移除软件相关目录(通常位于/usr/local):

    sudo rm -rf /usr/local/share/软件名  # 示例路径
    sudo rm -rf /usr/local/etc/软件名

备选方案:无记录文件时的操作(谨慎执行)

步骤1:重新安装并生成文件列表

cd /path/to/source-code
sudo make install DESTDIR=/tmp/software-install  # 重定向安装到临时目录
  • 生成文件列表:
    find /tmp/software-install -type f > install_list.txt

步骤2:根据列表删除真实文件

sudo sed 's/\/tmp\/software-install//' install_list.txt | sudo xargs rm -f

步骤3:清理关键目录

手动检查并删除以下常见位置的残留:

sudo rm -f /usr/local/bin/软件名          # 二进制文件
sudo rm -rf /usr/local/lib/软件名         # 库文件
sudo rm -f /usr/local/share/man/man1/软件名.1  # 手册页
sudo rm -rf /usr/local/share/软件名       # 数据文件

高级工具辅助卸载

  1. 使用checkinstall(安装时需提前规划)
    若最初用checkinstall生成伪包,可像卸载普通包一样操作:

    sudo dpkg -r 软件名    # Debian/Ubuntu
    sudo rpm -e 软件名     # RHEL/CentOS
  2. 通过strace追踪安装过程(复杂但彻底)
    重新安装并记录所有文件操作:

    cd /path/to/source-code
    ./configure
    strace -f -o install.log make install
    grep 'open.*O_CREAT' install.log | awk -F '"' '{print $2}' > file_list.txt
    sudo xargs rm -f < file_list.txt

关键注意事项

  1. 风险预警

    • ❗ 直接执行rm -rf /usr/local/*可能破坏其他软件!
    • 操作前备份重要数据:sudo tar -zcvf /backup/usr_local.tar.gz /usr/local
  2. 预防措施(未来建议)

    • 源码安装时始终记录文件:
      sudo make install DESTDIR=/tmp/record 2>&1 | tee install.log
    • 优先使用checkinstall创建伪包:
      sudo checkinstall -y --install=no --pkgname=软件名
  3. 验证是否卸载成功

    which 软件名        # 检查二进制是否存在
    ldconfig -p | grep 软件名  # 检查库残留

卸载Linux源码包的核心逻辑是:通过安装记录精准删除文件,若无记录,需重新模拟安装生成列表,强烈建议在首次安装时使用install_manifest.txtcheckinstall进行管理,操作前务必备份,避免误删系统关键文件。

引用说明:本文方法参考自Linux标准文档(man pages)及开源社区最佳实践,遵循GNU/Linux文件系统层级标准(FHS),工具建议基于checkinstall官方文档(https://checkinstall.izto.org)和strace手册页。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/9661.html

(0)
酷番叔酷番叔
上一篇 2025年8月4日 21:54
下一篇 2025年8月4日 22:40

相关推荐

  • Linux内核代码如何高效学习?

    在Linux系统中,内核代码是操作系统的核心,负责管理硬件资源、提供系统调用接口以及驱动设备等工作,要理解和修改Linux内核代码,需要掌握源码获取、目录结构解析、编译配置、调试技巧等一系列操作,本文将详细讲解Linux内核代码的获取、阅读、编译与调试方法,帮助开发者深入内核开发实践,获取Linux内核源码Li……

    2025年10月3日
    13700
  • 如何查看SELinux状态?

    查看 SELinux 运行状态使用 sestatus 命令 sestatus输出关键信息解读:SELinux status:enabled 表示已启用,disabled 表示已禁用,Current mode:enforcing:强制模式(拒绝违规操作并记录日志),permissive:宽容模式(仅记录日志,不拒……

    2025年6月18日
    17200
  • linux子系统如何删除

    在Linux生态系统中,“子系统”通常指通过隔离技术运行的轻量级Linux环境,常见于Windows系统中的WSL(Windows Subsystem for Linux)、Linux容器(如Docker、LXC)或虚拟机(如KVM),删除这些子系统需根据具体场景操作,核心原则是先停止运行环境、清理资源文件,再……

    2025年9月17日
    16400
  • Linux新建用户后如何用新用户名和密码登录?

    在Linux系统中,创建新用户并成功登录是系统管理的基础操作,本文将详细讲解从创建用户、设置密码到不同场景下登录的全流程,包括命令参数解析、注意事项及常见问题解决方法,创建新用户:useradd与adduser的区别Linux系统提供了两种创建用户的命令:useradd(底层命令,参数丰富)和adduser(交……

    2025年10月4日
    12100
  • linux如何安装sh

    Linux 中,通常直接可执行 `.

    2025年8月14日
    13500

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信