在运行
./configure --prefix=/mingw
在我之前运行的一个库的MinGW/MSYS系统上
'./configure --prefix=/mingw && make && make install'
我看到了这条信息:
警告:Vamp插件SDK的一个版本已经安装。如果您安装了新版本而没有先删除旧版本,那么您将会感到担忧和痛苦。(继续)
这让我很担心。“make install”的反义词是什么,即如何在Linux中卸载库?“清洁”能起作用吗,或者还有其他步骤吗?
Make
Make是用来安装从源代码编译的程序的程序。它不是Linux包管理器,所以它不会跟踪它安装的文件。这使得之后很难卸载这些文件。
Make Install命令将构建的程序和包从makefile复制到库目录和指定位置。这些位置
可能会根据配置脚本执行的检查而有所不同。
CheckInstall
CheckInstall是用于安装或卸载从源代码编译的程序的程序。它监视并复制使用make程序安装的文件。它还使用Linux包管理器安装文件,这允许它像任何常规包一样卸载。
CheckInstall命令用于调用Make Install命令。它监视已安装的文件并从中创建一个二进制包。它还使用Linux包管理器安装二进制包。
将“source_location.deb”和“name”替换为屏幕截图中的信息。
在源包目录下执行以下命令:
安装CheckInstall sudo apt-get Install CheckInstall
执行配置脚本sudo ./ Configure
执行Make命令sudo Make
执行CheckInstall sudo CheckInstall命令
重新安装软件包sudo dpkg——install——force-overwrite source_location.deb
删除包sudo apt Remove name
这是我写的一篇文章,涵盖了整个过程的解释。
我知道很少有包支持“make uninstall”,但更多的包支持“make install DESTDIR=xxx”进行分期安装。
您可以使用它来创建一个包来安装,而不是直接从源代码安装。我没有运气与checkinstall,但fpm工作得很好。
这还可以帮助您删除之前使用make install安装的包。您只需强制在make installed的包上安装您构建的包,然后卸载它。
例如,我最近使用它来处理protobuf-3.3.0。
RHEL7:
make install DESTDIR=dest
cd dest
fpm -f -s dir -t rpm -n protobuf -v 3.3.0 \
--vendor "You Not RedHat" \
--license "Google?" \
--description "protocol buffers" \
--rpm-dist el7 \
-m you@youraddress.com \
--url "http:/somewhere/where/you/get/the/package/oritssource" \
--rpm-autoreqprov \
usr
sudo rpm -i -f protobuf-3.3.0-1.el7.x86_64.rpm
sudo rpm -e protobuf-3.3.0
如果可以的话,你更喜欢yum而不是rpm。
Debian9:
make install DESTDIR=dest
cd dest
fpm -f -s dir -t deb -n protobuf -v 3.3.0 \
-C `pwd` \
--prefix / \
--vendor "You Not Debian" \
--license "$(grep Copyright ../../LICENSE)" \
--description "$(cat README.adoc)" \
--deb-upstream-changelog ../../CHANGES.txt \
--url "http:/somewhere/where/you/get/the/package/oritssource" \
usr/local/bin \
usr/local/lib \
usr/local/include
sudo apt install -f *.deb
sudo apt-get remove protobuf
在你能做到的地方,你更喜欢倾向于dpkg。
我也把答案贴在这里了