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

184 package-management uninstall compiling

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

./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
Run Code Online (Sandbox Code Playgroud)

但不幸的是,我发现它是最新版本,并且有很多错误,所以我需要删除它/卸载它。但我怎么能这样做呢?我试过了,make clean; make uninstall但我仍然看到它存在:

# pkg-config --list-all | grep Myplugin
myplugin-....
$ ls /usr/lib/myplugin/libXYZ.so
exist....
Run Code Online (Sandbox Code Playgroud)

你现在如何删除这个?

Jav*_*era 234

通常你可以只使用:

make uninstall
Run Code Online (Sandbox Code Playgroud)

或者

sudo make uninstall
Run Code Online (Sandbox Code Playgroud)

如果应用程序是以 root 身份安装的。

但这只有在软件包的开发人员已经制定了良好的卸载规则时才有效。

您还可以尝试通过运行以下命令来查看用于安装软件的步骤:

make -n install
Run Code Online (Sandbox Code Playgroud)

然后尝试手动反转这些步骤。

将来为了避免这种问题,请尽量使用checkinstall而不是make install尽可能使用(AFAIK 始终,除非您想同时保留编译版本和打包版本)。它将创建并安装一个 deb 文件,然后您可以使用您喜欢的包管理器卸载该文件。

make clean通常清理构建目录,它不会卸载包。当您想确保编译整个内容时使用它,而不仅仅是更改的文件。

  • +1 使用 `checkinstall` - 它使整个问题消失。 (48认同)
  • 如果你已经运行了 `make install`,你仍然可以使用 `checkinstall`。通常`checkinstall` 会覆盖`make install` 创建的所有内容。之后只需使用`dpkg -r <package.deb>`,一切都应该被删除。 (7认同)
  • @Google:如果 make uninstall 不起作用,您需要跟踪 make install 做了什么并手动撤消它。 (6认同)
  • 另一件要记住的事情是,如果`make install` 以root 身份运行(例如,`sudo make install`),这是典型的情况,那么虚拟总是需要运行`sudo make uninstall` 来删除软件。 (4认同)

Sab*_*con 29

我不认为这是一个错误,从源代码安装时阅读并学习使用 checkinstall 是个好主意。

您可以从存储库安装 checkinstall,这是对软件包的简短描述;

CheckInstall 跟踪由您的安装脚本(“make install”、“make install_modules”、“setup”等)创建或修改的所有文件,构建一个标准的二进制包并将其安装在您的系统中,使您能够卸载它您的发行版的标准包管理实用程序。

下面的这些链接可能有助于更好地理解。 http://en.wikipedia.org/wiki/CheckInstall

http://checkinstall.izto.org/


dv3*_*0ea 17

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

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

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


The*_*ist 9

制作

\n

Make 是\xe2\x80\x99s 用来从源代码编译和安装程序的程序。它\xe2\x80\x99s 不是包管理器,因此它\xe2\x80\x99t 不跟踪它安装的文件。这使得之后卸载文件变得困难。

\n

make install命令将构建的程序和包复制到库目录和 makefile 中的指定位置。这些位置可能会根据配置脚本执行的\xe2\x80\x99s 检查而有所不同。

\n

检查安装

\n

CheckInstall 是\xe2\x80\x99s 用于安装或卸载从源代码编译的程序的程序。它监视并复制使用 make 程序安装的文件。它还使用包管理器安装文件,这使得它可以像任何常规包一样被卸载。

\n

checkinstall命令是调用make install命令。它监视已安装的文件并从中创建二进制包。它还使用 Linux 包管理器安装二进制包。

\n

将屏幕截图中的source_location.deb和替换为您自己的信息:name

\n

截屏

\n

在源码包目录下执行以下命令:

\n
    \n
  1. 安装检查安装

    \n
    sudo apt-get install checkinstall\n
    Run Code Online (Sandbox Code Playgroud)\n
  2. \n
  3. 运行配置脚本

    \n
    ./configure\n
    Run Code Online (Sandbox Code Playgroud)\n
  4. \n
  5. 运行制作命令

    \n
    make\n
    Run Code Online (Sandbox Code Playgroud)\n
  6. \n
  7. 运行检查安装

    \n
    sudo checkinstall\n
    Run Code Online (Sandbox Code Playgroud)\n
  8. \n
  9. 重新安装包

    \n
    sudo dpkg --install --force-overwrite source_location.deb
    Run Code Online (Sandbox Code Playgroud)\n
  10. \n
  11. 取出包装

    \n
    sudo apt remove name
    Run Code Online (Sandbox Code Playgroud)\n
  12. \n
\n

这是我写的一篇文章,详细介绍了整个过程并进行了解释。

\n