“make install”与之相反,即如何在Linux中卸载一个库?

在跑步的时候

./configure --prefix=/mingw 

在MinGW / MSYS系统上,我以前运行过一个库

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

我遇到这个消息:

警告:已经安装了版本的Vamp插件SDK。 如果你安装一个新的版本,而不是先删除旧的版本,那么你会担心和忧虑。 (继续)

这让我担心。 什么是“安装”的相反,即如何在Linux中卸载图书馆? 将“干净”做这项工作,还是有其他步骤?

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

如果你幸运的话,运行make uninstall将工作。 然而,这是由图书馆的作者来提供的。 有些作者提供uninstall目标,有些则不提供。

如果你不幸运,你将不得不手动卸载它。 运行make -n install会很有帮助,因为它会显示软件将自行安装的步骤,但实际上并不会执行任何操作。 然后您可以手动反转这些步骤。

如果sudo make uninstall不可用:

在基于Debian的系统中,您可以运行sudo checkinstall来创build一个自动安装的.deb文件,而不是进行make install 。 然后您可以使用系统软件包pipe理器(例如apt / synaptic / aptitude / dpkg )将其删除。 Checkinstall还支持创build其他types的包,例如RPM。

另请参阅http://community.linuxmint.com/tutorial/view/162以及一些基本的checkinstall用法和debian checkinstall软件包 。

如果你有一个manifest文件列出所有使用make install的文件,你可以运行这个命令,我从另一个答案:

 cat install_manifest.txt | xargs echo rm | sh 

如果你有sudo make install你将需要添加一个sudo到你的卸载:

 cat install_manifest.txt | xargs echo sudo rm | sh 

根据问题的程序的makefile / configure脚本/ autofoo魔法的效果如何,以下内容可能会解决您的问题:

 make uninstall 

问题是你应该在你已经安装的版本的源代码树上执行这个,并且使用和你安装时一样的configuration。

make clean通常只会清除包含源代码本身的目录中的内置文件,而很less涉及任何已安装的软件。

Makefiles一般不包含卸载目标 – 通常你必须自己去做,通过从安装目录中删除文件。 例如,如果你build立了一个程序并将它(使用make installmake install/usr/local ,你需要查看/usr/local/bin/usr/local/libexec/usr/local/share/man等,并删除不需要的文件。 有时一个Makefile包含一个uninstall目标,但并不总是如此。

当然,通常在Linux系统上使用软件包pipe理器来安装软件,软件能够“自动”地卸载软件。

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

不幸的是没有标准,这是从源代码安装的危险之一。 一些Makefiles将包括一个“卸载”,所以

 make uninstall 

从源代码目录可能工作。 否则,可能是手动撤销make install所做的任何事情。

make clean通常只是清理源码目录 – 删除生成/编译的文件之类的东西,可能不是你在做什么。