在RHEL/CentOS中如何查找哪个rpm包提供了特定的文件或者库

在RHEL/CentOS Linux中,如何查看某个文件、命令是由哪个rpm包提供的?

有 2 个命令可以从文件 rpm 和 yum 中找到 rpm 包。
我们还可以使用 rpm 命令查找包中包含的所有文件。

on  it road.com

查找特定包提供的文件和库

要查找包提供的所有文件(二进制文件和库文件),请使用以下命令。

# rpm -ql bash
/etc/skel/.bash_logout
/etc/skel/.bash_profile
/etc/skel/.bashrc
/usr/bin/alias
/usr/bin/bash
/usr/bin/bashbug
/usr/bin/bashbug-64
/usr/bin/bg

查找提供特定二进制文件或者库文件的 rpm 包

1.方法1:使用rpm命令

  1. 使用以下 rpm 命令查找哪个 rpm 包提供特定文件。
# rpm -q --whatprovides [file name]

例如,要查找哪个 rpm 包提供了 /etc/hosts 文件,请使用以下命令:

# rpm -q --whatprovides /etc/hosts
setup-2.8.14-23.el6.noarch

要查找提供库文件 /usr/lib/gcc/x86_64-redhat-linux/4.4.4/libgomp.so 的 rpm 包,请使用以下命令。

# rpm -qf /usr/lib/gcc/x86_64-redhat-linux/4.4.4/libgomp.so
gcc-4.4.7-18.el6.x86_64

同样,我们也可以使用下面的命令。

# rpm -qf [file name]

例如,

# rpm -qf /etc/hosts
setup-2.8.14-23.el6.noarch

方法2:使用yum命令

下面 yum 命令提供了拥有/提供文件名的包。
要使用 yum,系统应该注册到 RHN 或者适当的存储库。

# yum whatprovides [file_name]

例如 :
可以使用以下命令来识别提供特定库文件的包:

# yum whatprovides libstdc++
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
libstdc++-4.8.5-4.el7.x86_64 : GNU Standard C++ Library
Repo        : @repo

或者搜索二进制文件:

# yum whatprovides *bin/ls
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
coreutils-8.22-15.el7.x86_64 : A set of basic GNU tools commonly used in shell scripts
Repo        : @repo
Matched from:
Filename    : /bin/ls
Filename    : /usr/bin/ls
日期:2020-09-17 00:13:38 来源:oir作者:oir