无法在 Ubuntu 中完全删除软件包

sol*_*ist 2 ubuntu uninstallation mosquitto

尝试从 Ubuntu 中删除 mosquitto,我可能忘记停止服务/进程。虽然 mosquitto 被删除(使用 apt-get remove 和 apt-get purge 和 autoremove 等),但我仍然可以在命令提示符下访问(运行)mosquitto。

当我再次尝试删除它时,它说

软件包“mosquitto”未安装,因此未删除

我无法理解如何删除包管理器告诉我不存在的东西。也许留下了一些幽灵文件,但仍然......?

Fab*_*her 5

这是如何卸载已编译的应用程序,而无需您之前用于安装它的源。

您有两个选择:

  • 重新创建 Makefile
  • 手动删除make创建的文件

重新创建 Makefile

如果包的开发人员已制定了良好的卸载规则,您可以重新创建 Make 配置并使用该规则。

再次下载应用程序的源 tarball 并采用您已安装的相同版本。如果您在第一次解压 tarball 时向 ./configure 传递了任何选项,则必须再次提供相同的选项。

然后你可以运行make uninstallsudo make uninstall.

手动删除文件

首先创建整个系统的备份非常重要,因为您可以使用此方法轻松删除错误的文件。

然后找到可以从控制台调用的二进制文件:

whereis name_of_your_program
Run Code Online (Sandbox Code Playgroud)

这将找到程序的源代码/二进制文件和手册部分。记下它们存储的目录,并通过ls -l one_of_the_file链接引用和日期收集有关这些文件的更多信息。

您可能在一天内编译了该应用程序,因此您可以尝试根据包含目录中的日期来查找其文件,如下所示/usr/local

find /usr/local -type f -newermt '2017-03-23'
Run Code Online (Sandbox Code Playgroud)

然后删除应用程序的目录、二进制文件和配置。

避免日后出现这些问题

使用包管理安装应用程序有很多优点,尽量避免自己编译。

然而,有时不得不这样做,那么你应该尝试使用checkinstall而不是make install