为什么“apt-cache search”和“find / -name”显示与我已经清除的包相关的文件?

为什么“apt-cache search”和“find / -name”显示与我已经清除的包相关的文件?

我专门在系统上安装了 libreoffice-writer,然后用 清除了它sudo apt-get purge '*libreoffice-writer*' --autoremove。之后,我一个接一个地运行这些终端命令,以确定我是否真的删除了与 libreoffice 或 libreoffice-writer 相关的所有文件 -

apt-cache search libreoffice-writer

sudo find / -name libreoffice 

命令输出图像

然后我运行它apt-cache search libreoffice,它显示了几十个名为“libreoffice”的文件 输出图像

正如您在终端图像中看到的,为什么还有这么多相关文件?如何删除所有这些文件,以便下次我从 libreoffice 安装任何东西时,它应该像第一次在我的系统上安装一样自行安装?

答案1

Apt 维护一个本地数据库,其中包含来自所有当前已知来源的所有可用 deb 包。“可用”意味着它包含你目前尚未安装的软件包以及您当前已安装的软件包。

  • apt-cache搜索数据库
  • apt update从这些来源刷新数据库
  • apt list libreoffice-writerapt list libreoffice*将指定安装输出中的哪些包。

现在让我们看看--purge之后剩余的文件和目录。

  • 如果 apt 删除完文件后目录不为空,则目录可能会保留。其他一些软件包(或管理员)也可能使用该目录。

  • Apt 永远不会删除位于 /home 目录下的任何文件。(手册页对此非常清楚)


关于在 apt 中使用通配符的说明:许多用户在看到通配符导致额外的包被标记为需要操作,而他们期望被标记的包却没有被标记时都会感到惊讶。

您得到的操作与预期不同的可能原因有很多:依赖关系、意外名称、拼写错误、错误的通配符等。

关于如何安全、有效地使用 apt 通配符,有两种观点:

  1. 首先使用 apt--simulate测试操作。在实际操作之前,检查输出并发现意外情况。

  2. 完全避免使用通配符。使用 apt 的工具来了解您想要执行的正确软件包。然后列出这些软件包。

答案2

apt-cache search搜索在您的软件列表中找到的软件包(即来自数据apt update并且不限于已安装的软件包 - 允许您找到可以安装的软件包等)。

我没有使用 Kubuntu 并且没有kubuntu-desktop安装;但我可以apt-cache search kubuntu-desktop确认包中包含我认为的内容;它适用于我的系统,我记得名字正确等等,然后可以决定安装它。即它正在搜索我的软件列表缓存...不是我安装的软件包。

软件包列表通过执行apt update命令进行更新。您不需要使用该命令安装软件包,但当您随后使用apt install...时,apt-cache它会从缓存通过上述apt update命令下载并包含您已启用/添加的源可供系统使用的所有软件包(是否安装)。

答案3

您必须使用dpkg --list | grep -i libreoffice来确定 LibreOffice 相关已安装的包。

如果使用 APT 安装了 LibreOffice 相关文件,则应通过这种方式删除它们。要自动执行此过程,请使用以下命令:

sudo apt-get autopurge $(dpkg --list | grep -i libreoffice | awk '{print $2}')

并且不要手动删除 APT 控制的文件


阅读材料:

  1. man dpkg
  2. man apt
  3. man apt-cache

相关内容