如何在 Debian、Ubuntu 和其他 Linux 发行版中使用 apt-cache 命令

使用 apt-cache 命令,您可以在本地 APT 缓存中搜索包的详细信息。 在本教程中学习使用 apt-cache 命令。

apt-cache 命令用于什么?

易于 包管理器处理包元数据的本地缓存。 元数据通常包括包名称、版本、描述、依赖项、其存储库和开发人员等信息。 使用 apt-cache 命令可以查询这个本地 APT 缓存并获取相关信息。

您可以搜索包的可用性、版本号、依赖关系等。 我将通过示例向您展示如何使用 apt-cache 命令。

APT缓存的位置 是 /var/lib/apt/lists/ 目录。 要缓存的存储库元数据取决于在 /etc/apt/sources.list 文件中的源列表中添加的存储库以及位于 ls /etc/apt/sources.list.d 目录中的其他存储库文件。

令人惊讶的是,apt-cache 并没有清除 APT 缓存。 为此,您必须使用 apt-get clean 命令。

不用说,APT 打包系统用于 Debian 和基于 Debian 的 Linux 发行版,例如 Ubuntu、Linux Mint、elementary OS 等。您不能在 Arch 或 Fedora.

使用 apt-cache 命令

与任何其他 Linux 命令一样,apt-cache 有几个可用的选项,您可以随时参考其手册页来阅读有关它们的信息。

但是,您可能不需要使用所有这些。 这就是为什么我将在本教程中仅向您展示 apt-cache 命令的最常见和最有用的示例。

随时更新

更新本地 APT 缓存以将其与远程存储库同步总是一个好主意。 你是怎样做的? 您使用以下命令:

sudo 适当更新

搜索包

apt-cache 命令最常见的用途是查找包。 您可以使用正则表达式模式在本地 APT 缓存中搜索包。

apt-cache search package_name

默认情况下,它会在包的名称和描述中查找搜索词。 它按字母顺序显示匹配的包及其简短描述。

您可以缩小搜索范围以仅在包名称中查找搜索词。

apt-cache search --names-only package_name

如果您想要所有匹配包的完整详细信息,您可以使用 --full 旗帜。 它也可以与 --names-only 旗帜。

获取详细的包裹信息

如果您知道确切的包名称(或者您已经通过搜索找到了它),您可以获得有关该包的详细元数据信息。

apt-cache show package_name

您可以在包元数据中查看所有类型的详细信息,例如名称、版本、开发人员、维护者、存储库、短描述和长描述、包大小甚至校验和。

还有另一个选项 showpkg 显示有关包名称、版本及其正向和反向依赖项的信息。

apt-cache showpkg package_name

apt-cache 策略

这是 apt-cache 命令很少使用的选项之一。 策略选项可帮助您调试与 首选项文件.

如果您指定包名称,它将显示该包是否已安装、从哪个存储库中可用的版本及其优先级。

默认情况下,每个已安装的软件包版本的优先级为 100,未安装的软件包的优先级为 500。同一个软件包可能有多个不同优先级的版本。 APT 安装优先级较高的版本,除非安装的版本较新。

如果这没有意义,没关系。 对于一个普通的 Linux 用户来说,深入了解包管理是非常罕见的。

检查包的依赖和反向依赖

您可以在安装之前(甚至之后)检查包的依赖关系。 它还显示了可以满足依赖关系的所有可能的包。

apt-cache depends package

您还可以通过使用 apt-cahce 检查反向依赖关系来检查哪些软件包依赖于某个软件包。

坦率地说,我也很惊讶地看到像 Ansible 这样的 DevOps 工具依赖于像 Cowsay 这样有趣的 Linux 命令。 我想这可能是因为之后 安装 Ansible,它会在节点上显示一些消息。

检查未满足的依赖项

在 Ubuntu 或其他 Linux 中,您可能会遇到未满足的依赖关系问题。 apt-cache 命令提供了检查系统上各种可用软件包的所有未满足的依赖项的选项。

apt-cache unmet

结论

您可以使用 apt-cache 命令列出所有可用的包。 输出会很大,所以我建议将它与 wc 命令 获得这样的可用软件包总数:

apt-cache pkgnames | wc -l

您是否注意到使用 apt-cache 命令不需要 root 用户?

较新的 apt 命令有一些选项可用于匹配 apt-cache 命令的功能。 由于 apt 是新的,因此 apt-get 及其相关命令(如 apt-cache)仍首选在脚本中使用。

希望本教程对您有所帮助。 如果您对以上讨论的任何一点有疑问或提出改进建议,请在评论中告诉我。