CentOS/RHEL:如何使用 YUM 查找缺少的文件所在的软件包

问题

如何使用 YUM 在系统中查找缺少文件的包?
当文件未丢失且已安装时,此操作方法也适用,但出于某种原因,需要知道提供它的包。

欢迎 on it road

解决方法

YUM 包管理器工具使用存储库来检索信息和下载包。
存储库配置位于 /etc/yum.repos.d/*.repo 文件中,在这些文件中,可以启用多个存储库,禁用其他存储库。

  1. 要使用的子命令是“提供”。
    例如,寻找 /usr/src/kernels/4.1.12-124.18.6.el7uek.x86_64 文件:
# yum provides /usr/src/kernels/4.1.12-124.18.6.el7uek.x86_64

这将显示需要安装才能在系统中安装的存储库和包。

  1. 但该命令可能找不到该包,因为它的存储库已被禁用:
No Matches found

在这种情况下,可以尝试启用所有或者仅一个存储库进行搜索。
为此,必须使用选项 -enablerepo 。
例如,使用 .repo 文件中配置的所有存储库,启用和禁用。

# yum provides /usr/src/kernels/4.1.12-124.18.6.el7uek.x86_64 --enablerepo=*

或者只是一个特定的Repo:

# yum provides /usr/src/kernels/4.1.12-124.18.6.el7uek.x86_64 --enablerepo=ol7_UEKR4_archive

或者多个匹配正则表达式

# yum provides /usr/src/kernels/4.1.12-124.18.6.el7uek.x86_64 --enablerepo=ol7_*_archive

示例输出:

kernel-uek-devel-4.1.12-124.18.6.el7uek.x86_64 : Development package for building kernel modules to match the kernel
Repo        : ol7_UEKR4_archive
Matched from:
Filename    : /usr/src/kernels/4.1.12-124.18.6.el7uek.x86_64
  1. 如果最终目标是安装它并且只能使用选项-enablerepo,请使用相同的选项来安装软件包:
# yum install kernel-uek-devel-4.1.12-124.18.6.el7uek.x86_64 --enablerepo=ol7_UEKR4_archive

如果要查找路径位置未知的文件,可以使用带通配符的文件路径:

# yum provides */fileX
日期:2020-09-17 00:12:15 来源:oir作者:oir