如果我从源代码构建一个包,我该如何卸载或完全删除?

我使用源代码构建了一个包,如下所示:

./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 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

http://checkinstall.izto.org/

这不是一个错误 – 从源代码编译是一种不受支持的安装软件的方法,它完全绕过软件包管理系统(由软件中心使用)。

安装或卸载从源代码编译的软件没有标准方法,因此Ubuntu无法知道该怎么做。 该软件甚至没有列为已安装的程序。

您应该按照经销商的说明安装和删除此类自定义软件。 您也可以联系开发人员,要求他们创建Debian软件包,以便可以使用软件包管理系统。

这不是一个错误,当开发人员通过源而不是通过本地打包方法进行分发时会发生这种情况。

您可以使用checkinstall或dhbuild将源文件变为debian软件包。 老实说,在我看来 – 新用户应避免从源代码安装,开发人员应避免仅按源分发。

我们需要协商一个事实,即卸载 并不总是有效,所以下面是更主动的解决方案。

这涉及到使用Ubuntu软件中心提供的paco程序。 一旦我们安装了paco,我们可以在“make install”程序时使用它的日志模式。 Paco就像是“make install”的包装器,并在/ var / log / paco目录中创建一个日志,其中包含复制到各个目录的文件列表。 此外,您可以看到Paco Front端的文件。

例如,当我从源代码编译php时,我做了以下事情:

 paco -lp php5 "make install" 

参数l使paco在日志模式下运行。这在/ var / log / paco中创建了一个名为php5的日志文件(我在命令中给出的名称)。 它包含安装期间复制到各个标准位置的所有文件。 您可以使用命令行编辑器或paco gui来查看文件。

下面是使用sed命令行编辑器获取文件列表的示例
(将php5替换为您的文件名)。

 cat /var/log/paco/php5 | sed -n 's/|\(.*\)//;/^#\(.*\)/d;p' 

一旦你获得了文件列表,你知道如何删除它们不是吗? 实际上,您可以使用如下所示的反引号将上述命令的结果传递给rm

 sudo rm `cat /var/log/paco/php5 | sed -n 's/|\(.*\)//;/^#\(.*\)/d;p'` 

任务完成!

注意:由于LD_PRELOAD限制,paco无法跟踪suid程序的跟踪。 请参见手册页。

我从源代码编译了php-5.6.30而没有用openssl配置它,所以我不得不从头开始安装它。使用make uninstall 无法正常工作,因为php的Makefile不支持它。

然而,这一步对我有用, – 我列出了与php相关的所有文件并手动删除它,我花了大约5分钟没有出汗。 您可以类似地使用这些步骤来卸载已编译的软件。

用您需要卸载的软件替换php

whereis php

上面的命令列出了安装二进制文件的目录:/ usr / local / bin / php,/ usr / bin / php ..删除输出中列出的每个文件/目录。

sudo rm -f /usr/local/bin/php

使用上面输出中列出的所有文件执行此操作,您将全部设置为从头开始安装较新版本。