'make install'的相反之处,即如何在Linux中卸载库?

问题描述 投票:376回答:11

正在运行时

./configure --prefix=/mingw 

在我以前运行的库的MinGW / MSYS系统上,>

'./configure --prefix=/mingw && make && make install' 

我遇到此消息:

警告:已经安装了Vamp插件SDK版本。如果安装新版本而不先删除旧版本,请担心。 (继续)

这让我担心。 “ make install”的反义词是什么,即如何在Linux中卸载库? “清洁”会完成这项工作,还是涉及其他步骤?

[在我以前运行过的库的MinGW / MSYS系统上运行./configure --prefix = / mingw时,我碰到了这个问题...] [/ configure --prefix = / mingw && make && make install'] >

makefile uninstall
11个回答
490
投票

make clean从您的源代码/构建树中删除任何中间文件或输出文件。但是,它仅影响源代码/构建树。它不会接触文件系统的其余部分,因此不会删除以前安装的软件。

[如果您很幸运,可以运行make uninstall。但是,这取决于图书馆的作者。一些作者提供了uninstall目标,而其他作者则没有。

如果您不走运,则必须手动将其卸载。运行make -n install可能会有所帮助,因为它将显示该软件自行安装但实际上不做任何事情的步骤。然后,您可以手动撤消这些步骤。


0
投票

Make可以告诉您它知道什么以及它将做什么。假设您有一个“安装”目标,该目标执行以下命令:

cp <filelist> <destdir>/

在您的通用规则中,添加:

uninstall :; MAKEFLAGS= ${MAKE} -j1 -spinf $(word 1,${MAKEFILE_LIST}) install \
              | awk '/^cp /{dest=$NF; for (i=NF; --i>0;) {print dest"/"$i}}' \
              | xargs rm -f

0
投票

前言

以下内容可能会起作用,也可能不会起作用,这一切都是按原样给出的,只有在出现某些损坏,数据丢失等情况时,您和您才是负责人。但我希望一切顺利!


342
投票

如果sudo make uninstall不可用:

在基于Debian的系统中,代替(或在*之后)进行make install,您可以运行sudo checkinstall来制作自动安装的.deb文件。然后,您可以使用系统包管理器将其删除(例如apt /synaptic/aptitude/ dpkg)。 Checkinstall


58
投票

如果您有一个manifest文件,其中列出了与make install一起安装的所有文件,则可以运行我从另一个答案中获得的此命令:

cat install_manifest.txt | xargs echo rm | sh

24
投票

根据所讨论程序的makefile / configure脚本/ autofoo魔术程度,以下可能会解决您的问题:

make uninstall

17
投票

“进行安装后如何卸载”

方法1(进行卸载)


10
投票

[make clean通常只清除包含源代码本身的目录中的构建文件,而很少接触任何已安装的软件。

Makefile通常不包含卸载目标-通常,您必须自己完成操作,方法是从安装文件的目录中删除文件。例如,如果您构建了一个程序并将其(使用make install)安装到/usr/local中,则需要浏览/usr/local/bin/usr/local/libexec/usr/local/share/man等,然后删除不需要的文件。有时,一个Makefile包含一个uninstall目标,但并非总是如此。

当然,通常在Linux系统上,您可以使用软件包管理器

安装软件,该软件能够“自动”卸载软件。

8
投票

“ stow”实用程序旨在解决此问题:http://www.gnu.org/software/stow/

不幸的是,没有标准,这是从源代码进行安装的危险之一。一些Makefile会包含“卸载”,因此

make uninstall

从源目录可能有效。否则,可能是手动撤消make install所做的任何事情。

[make clean通常只清理源目录-删除生成/编译的文件等,可能不是您想要的。


5
投票

不幸的是,没有标准,这是从源代码进行安装的危险之一。一些Makefile会包含“卸载”,因此


0
投票

我知道很少有支持“进行卸载”的软件包,但更多支持分阶段安装的软件包都可以进行make install DESTDIR = xxx“。

您可以使用它来创建要安装的软件包,而不是直接从源代码安装。我没有用checkinstall运气,但是fpm效果很好。

这还可以帮助您删除以前使用make install

安装的软件包。您只需将构建的软件包强行安装在已安装的make软件包上,然后将其卸载。
© www.soinside.com 2019 - 2024. All rights reserved.