卸载通过 make install 安装的软件无通用命令,须分情况处理:若 makefile 含 uninstall 目标,可在源码目录执行 sudo make uninstall;若配置了 --prefix,则直接删除该目录即可;否则需手动定位并清理分散在 /usr/local/ 各子目录下的文件。

没有通用卸载命令,必须依赖安装时是否用了 --prefix 参数,以及 Makefile 是否定义了 uninstall 目标。
检查 Makefile 是否支持 make uninstall
进入原始源码目录(不是安装目录),运行:make -n uninstall 或 make -p | grep uninstall 查看是否有 uninstall 规则。
如果输出中包含类似 uninstall: ... 的行,说明作者提供了卸载逻辑;否则大概率不支持。
- 支持时直接执行
sudo make uninstall(注意:需在原编译目录下运行) - 不支持时,
make uninstall会报错make: *** No rule to make target 'uninstall' - 即使有
uninstall目标,也建议先用make -n uninstall预览将要删除的路径,避免误删系统文件
没用 --prefix 安装的软件怎么清理
默认安装路径分散在 /usr/local/bin、/usr/local/lib、/usr/local/etc、/usr/local/share 等位置,无法一键清除。
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
- 先用
which 软件名或find /usr/local -name "*软件名*"定位主程序和相关文件 - 再结合
ls -la $(which 软件名)查看符号链接指向,确认真实路径 - 手动逐个删除二进制、库、配置、man 手册等——容易漏掉隐藏配置(如
~/.config/xxx)或服务文件(如/etc/systemd/system/xxx.service) - 删完后运行
hash -r清除 shell 命令缓存,避免command not found错误仍残留
用了 --prefix=/opt/xxx 安装的软件怎么卸载
这是最干净的方式:所有文件都集中在你指定的目录下,卸载只需删除该目录本身。
- 确认安装路径:
ls -ld /opt/xxx(替换为你的实际路径) - 检查是否被进程占用:
lsof +D /opt/xxx,如有输出需先停止对应服务 - 执行
sudo rm -rf /opt/xxx - 别忘了清理环境变量:
grep xxx ~/.bashrc ~/.profile /etc/environment,删掉PATH中的引用 - 如果注册过 systemd 服务,还需运行
sudo systemctl daemon-reload并确认/etc/systemd/system/下无残留 service 文件
为什么 GNU Stow 和 checkinstall 不是“银弹”
有人推荐用 stow 或 checkinstall 替代裸 make install,但它们有明确适用边界:
-
stow要求你把软件先装到独立子目录(如/usr/local/stow/xxx-1.2.3),再软链到/usr/local;卸载就是stow -D xxx-1.2.3。但它不能自动处理运行时生成的配置或日志目录 -
checkinstall会把make install的文件操作记录下来,打包成 rpm/deb;卸载可用包管理器完成。但它依赖make install是“纯净”的——若脚本里混了curl下载、mkdir -p /var/log/xxx等动态行为,包就不可靠 - 两者都不能绕过“安装前未备份、卸载后才发现关键配置丢失”这类人为疏漏
真正容易被忽略的是:无论哪种方式,卸载后 ~/.cache、~/.local/state、/var/log 下的运行时数据,几乎从不被任何卸载流程覆盖——得自己查文档或翻源码找默认路径。










