linux怎么卸载用 make install 编译安装的软件

怎么卸载用 make install 编译安装的软件?

在linux 中用 ./configure && make && make install 后,如果想删除这个软件我应该怎么删除呢?
好像有一个叫"make uninstall"的东西,但是没有发现
如果有rpm包的话尽量避免使用源码包安装,linux的rpm包管理工具很强大,方便管理。
如果必须要用源码包安装,请在安装的时候指定--prefix安装目录,另外安装的时候请使用
make >& LOG_make &
make install >& LOG_install &
常见的反安装target有: make uninstall/distclean/veryclean 等等。如果没有,

事先记得记录'make install'的所有输出日志,'make install &> |tee make.log'。然后在日志里能够看得到到底安装了那些文件到那些位置,通常会使用'cp'或者'install'命令拷贝文件。

使用auto-apt 和 checkinstall,具体命令如下

#安装auto-apt和checkinstall

apt install auto-apt checkinstall

#在源码目录中

auto-apt run ./configure
make
checkinstall

这样会生成一个deb包,卸载和重新安装就非常方便了

#完全卸载 (packagename具体的名字在checkintall完成之后会有提示)

dpkg -r packagename

#用生成的deb包重新安装

dpkg -i ***.deb

更多实用的命令

# 列出包中安装的文件位置

dpkg -L packagename

# 检查是否安装成功

dpkg -l | grep packagename

# 同上

apt list --installed | grep packagename]

一般来说,make install完了目录下会有一个install_mainfest.txt的文件记录了安装的所有内容,

然后xargs rm < install_manifest.txt就可以了。

如果没有这个文件,可以自己重新make install,从log中过滤出install信息了。

不是每个源代码包都提供make uninstall的,这不是个通用方法。
如果编译时设置了--prefix到一个单独的文件夹,就删除那个文件夹即可,但如果编译安装到了类似/usr这种地方,就没有特别简单的办法删除干净了。
所以各个发行版提供了各种包管理,就是为了干这种事情的。

装目录,rm -rf 把这些目录都删除,应该能删除干净,如whereis python

python: /usr/bin/python2.6-config /usr/bin/python2.6 /usr/bin/python /usr/lib/python2.6 /usr/lib64/python2.6 /usr/local/bin/python3.3m-config /usr/local/bin/python3.3m /usr/local/bin/python3.3 /usr/local/bin/python3.3-config /usr/local/lib/python3.3 /usr/include/python2.6 /usr/share/man/man1/python.1.gz

lsff
养成--prefix的好习惯
万一安装了,就用 find / -name '*XXX* 找出所有文件,一一删掉
如果安装的时候指定了prefix,直接删除就好。如果没有,并且源代码没有提供make uninstall/distclean/veryclean的功能,我一般这样做:

找一个临时目录重新安装一遍。比如
./configure --prefix=/tmp/to_remove && make install
然后遍历/tmp/to_remove里的文件,把你原来安装位置的文件都删除。

这样的坏处是有些文件夹还可能删除不了(分不清是系统的还是安装上的)

建议使用--prefix=/path/you/want/to/install/ 来编译安装,卸载时只需要删除目录即可
大概估计下安装的时间,用find找到这段时间内创建的文件或者文件夹,再有选择地干掉
春招基本结束了。有的同学没有收到心仪的offer。有的同学没有找到心仪的企业。但是请不要沮丧。今年情况严峻特殊,秋招才是回暖的季节。所以我们更要提前准备秋招,了解岗位信息,做好自身功课。那么秋招到底什么时间开始?我们该做些什么呢...查看详情
  • make install时会生成文件.installed.list
  • 选择清理.installed.list中说明的文件(如果有多个版本时需要特别小心)
  • 案例:ruby2.4切换为ruby2.3,思路直接删除所有ruby软件,然后重新make install 2.3
知乎用户

其实类比下windows也很好理解。就像在window下如果直接删除掉Program Files文件夹下安装的软件肯定会留下一大堆例如注册表中的垃圾。所以软件通常都会提供uninstall的程序来执行卸载操作。而linux下在这一点确实做的不够好,依赖管理非常复杂。对于小白来说简直噩梦。但是如果是以docker这样服务的形式来提供软件功能就可以解决uninstall的噩梦。所以,这个就看你怎么权衡自己的架构了。

重新prefix一个干净的文件夹重新安装该软件,完成后查看该文件夹里多出了那些东西,相应地将usr里的 rm 掉,不知道这样行不行?

# 也许是 INSTALL_PREFIX, PREFIX 之类的
# 反正有一颗目录文件树就好办

# 如果是 /usr 的话你也许需要在 xargs 之前加一点东西
cd xxx; find . -type f | cut -c 2- | xargs rm -f

目录暂时没有非常非常简单的方法。


本文由 泓源视野 作者:admin 发表,其版权均为 泓源视野 所有,文章内容系作者个人观点,不代表 泓源视野 对观点赞同或支持。如需转载,请注明文章来源。

发表评论

Protected with IP Blacklist CloudIP Blacklist Cloud

您是第8237467 位访客, 您的IP是:[3.235.105.97]