无法在 Ubuntu 中完全删除软件包
Posted
技术标签:
【中文标题】无法在 Ubuntu 中完全删除软件包【英文标题】:Not able to remove a package completely in Ubuntu 【发布时间】:2017-08-06 04:52:12 【问题描述】:尝试从 Ubuntu 中删除 mosquitto,我可能忘记停止服务/进程。虽然 mosquitto 被删除(使用 apt-get remove 和 apt-get purge 和 autoremove 等),但我仍然可以在命令提示符下访问(运行)mosquitto。
当我再次尝试删除它时,它说
包'mosquitto'没有安装,所以没有删除
我不知道如何删除包管理器告诉我的不存在的东西。可能会留下一些幽灵文件,但仍然..?
【问题讨论】:
您是否尝试重新安装然后再次清除它?你从whereis mosquitto
得到什么?
是的,我已经重新安装并清除了。 whereis mosquitto
给 mosquitto: /usr/local/sbin/mosquitto
- 如何删除它?
你有没有手动安装过没有apt-get?也许你应该在askubuntu.com 上提问
@F***H。是的,它是从源代码构建一次但未卸载。安装目录(包含构建)被删除。很久以前,我现在才从你的评论中记住它
你还有用来编译安装的源文件吗?
【参考方案1】:
这是如何卸载没有源代码的已编译应用程序您以前安装它时使用的源代码。
你有两个选择:
重新创建 Makefile 手动删除 make 创建的文件重新创建 Makefile
如果包的开发者已经制定了一个好的卸载规则,你可以重新创建 Make 配置并使用该规则。
再次下载应用程序的源代码压缩包,并使用您安装的相同版本。如果您在第一次解压缩 tarball 时将任何选项传递给 ./configure,则必须再次提供相同的选项。
然后你可以运行make uninstall
或sudo make uninstall
。
手动删除文件
首先创建整个系统的备份非常重要,因为您可以使用此方法轻松删除错误的文件。
然后找到您可以从控制台调用的二进制文件:
whereis name_of_your_program
这将找到程序的源代码/二进制文件和手册部分。请注意存储它们的目录,并使用ls -l one_of_the_file
收集有关这些文件的更多信息,例如链接参考和日期。
您可能已经在一天内编译了该应用程序,因此您可以尝试根据包含目录中的日期来定位其文件,例如 /usr/local
,如下所示:
find /usr/local -type f -newermt '2017-03-23'
然后删除应用程序的目录、二进制文件和配置。
以后避免这些问题
使用包管理安装应用程序有很多优点,请始终尽量避免自己编译。
但是,有时不得不,那么你应该尝试使用checkinstall
而不是make install
【讨论】:
以上是关于无法在 Ubuntu 中完全删除软件包的主要内容,如果未能解决你的问题,请参考以下文章