Linux 软件卸载与清理技巧

1次阅读

linux卸载软件后配置文件默认保留在家目录(如~/.config/等),需用apt purge、dnf remove –autoremove、flatpak uninstall –delete-data、snap remove –purge等带清理参数的命令,或手动删除残留;dpkg“rc”状态包须用dpkg –purge清理。

Linux 软件卸载与清理技巧

卸载软件后残留的配置文件去哪了

Linux 卸载命令默认不删用户配置,apt removeyum removednf remove 都只删二进制和系统级配置,家目录里的 ~/.config/~/.local/share/~/.cache/ 下的目录全留着。

常见错误现象:重装同款软件后界面变回旧设置、日志里反复报 Failed to load config from /home/user/.config/app/conf.json、磁盘空间没明显释放。

  • debian/ubuntu 系用 apt purge <pkg></pkg>(不是 apt remove --purge,后者语法已弃用)
  • RHEL/centos 8+ 用 dnf remove --autoremove <pkg></pkg>,但注意它不自动清家目录,得手动删 ~/.config/<pkg></pkg> 类路径
  • Flatpak 应用必须用 flatpak uninstall --delete-data <app-id></app-id>,否则 ~/.var/app/<app-id></app-id> 永远残留

dpkg -l 显示“rc”状态的包怎么处理

dpkg -l | grep "^rc" 列出的是“已卸载但配置文件仍存”的包,它们占空间、干扰 apt autoremove 判断,还可能在升级时触发冲突。

这类包不会被 apt autoremove 清理,因为 autoremove 只管“不再被依赖的已安装包”,而 “rc” 是“已卸载”状态。

  • 批量清理所有 rc 包:dpkg -l | awk '/^rc/{print $2}' | xargs sudo dpkg --purge
  • 单个清理更安全:sudo dpkg --purge <package-name></package-name>,执行前先 dpkg -L <package-name></package-name> 看它到底写了哪些文件,避免误删共享配置
  • 别直接 rm -rf /var/lib/dpkg/info/<pkg>.*</pkg> —— 这会破坏 dpkg 数据库,后续 apt 命令可能报 dpkg: Error: parsing file '/var/lib/dpkg/status' near line XXX

用 snap 安装的软件删不干净怎么办

snap 的隔离机制导致卸载比传统包管理更隐蔽:删了应用本身,/var/snap/<name>/</name> 下的版本快照、/home/<user>/snap/<name>/</name></user> 下的用户数据默认全保留。

典型症状:snap list 看不到软件,但 df -h 发现 /var/snap 占用几十 GB;find ~ -name "*<app>*" -type d</app> 找出一残留目录。

  • 彻底卸载必须加 --purgesudo snap remove --purge <name></name>
  • 如果已执行过普通 snap remove,先查残留快照:sudo snap saved,再用 sudo snap forget <revision-id></revision-id> 删除
  • /home/<user>/snap/<name>/</name></user> 是用户级数据,--purge 会删,但若之前手动改过权限(比如 chown -R root),得先 sudo chown -R $USER:$USER ~/snap/<name></name> 再删,否则报 Permission denied

清理后发现 /usr/share/doc 或 /var/cache/apt/archives 还很大

这些不是卸载残留,而是包管理器的缓存策略所致:/usr/share/doc/ 随主包安装,但卸载时不自动删;/var/cache/apt/archives/ 存下载过的 .deb 包,apt autoremove 完全不管它。

不清理不影响运行,但长期积累可达数 GB,尤其在频繁测试不同版本的环境中。

  • 删文档:sudo apt install deborphan && sudo deborphan --guess-all | xargs sudo apt purge(慎用,部分开发包依赖 doc 中的头文件示例);更稳妥是 sudo apt clean + sudo apt autoclean
  • 清 apt 缓存:sudo apt clean 删全部,sudo apt autoclean 只删旧版本(当前不可用的 .deb)
  • /var/log/apt/history.log 不占大空间,但若审计要求低,可定期 sudo truncate -s 0 /var/log/apt/history.log,避免日志轮转失控

真正麻烦的是那些没走包管理器、直接 make install 或解压运行的软件 —— 它们没注册到任何数据库,卸载只能靠你记得当初装在哪、改过哪些系统路径。这种情况下,whichtype -plddstrace -e trace=openat ./binary 2>&1 | grep -E ".so|.conf" 才是最后手段。

text=ZqhQzanResources