问题描述
我使用源代码构建一个包,如下所示:
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --libexecdir=/usr/lib --with-package-name="Myplugin" --with-package-origin="http://www.ubuntu.org/" --enable-gtk-doc --disable-static
make
make install
但不幸的是,我发现它的最新版本,并有很多错误,所以我需要删除它/卸载它。但我怎么能这样做呢?我试过make clean; make uninstall
,但我仍然看到它存在:
# pkg-config --list-all | grep Myplugin
myplugin-....
$ ls /usr/lib/myplugin/libXYZ.so
exist....
你现在如何删除它?
最佳解决方法
通常你可以使用:
make uninstall
要么
sudo make uninstall
如果该应用程序是以root身份安装的。
但是,只有当软件包的开发者已经注意到制定一个好的卸载规则时,这才会起作用。
您还可以尝试通过运行来查看用于安装软件的步骤:
make -n install
然后尝试手动反转这些步骤。
将来要避免这种问题,尽可能使用checkinstall
而不是make install
(除非要同时保留编译版本和打包版本,否则始终使用AFAIK)。它会创建并安装一个deb文件,然后您可以使用您最喜欢的软件包管理器进行卸载。
make clean
通常会清理建筑目录,但不会卸载程序包。当你想要确定整个事物是被编译的,而不仅仅是被修改的文件的时候,它会被使用。
次佳解决方法
我不认为这是一个错误,从源代码安装时阅读并学习使用checkinstall是一个好主意。
您可以从存储库中安装checkinstall,这是软件包的简短说明;
CheckInstall会跟踪安装脚本创建或修改的所有文件(“make install”“make install_modules”,”setup”等),建立一个标准二进制包并将其安装到您的系统中,使您能够使用发行版的标准包管理来卸载它公用事业。
以下这些链接可能有助于更好地理解。 http://en.wikipedia.org/wiki/CheckInstall
第三种解决方法
这不是一个错误 – 从源代码编译是一种不受支持的安装软件的方法,它完全绕过软件包管理系统(由软件中心使用)。
从源代码编译的软件没有安装或卸载的标准方式,因此Ubuntu不知道该怎么做。该软件甚至未被列为已安装的程序。
您应该按照分销商的说明安装和拆卸这些定制软件。您也可以联系开发人员,要求他们创建一个Debian软件包,以便可以使用软件包管理系统。
第四种方法
这不是一个错误,当开发人员通过源代码而不是通过本地打包方法进行分发时会发生什么情况。
您可以使用checkinstall或dhbuild将您的源文件变成debian软件包。老实说,在我看来 – 新用户应该避免从源代码安装,开发人员应该避免仅由源代码发布。