我想安装 HP CLI 实用程序,因此我首先检查依赖项并发现需要一个名为 rpmlib 的东西:
[root@centos2 ~]# rpm -qRp hp-health-10.30-1752.15.rhel7.x86_64.rpm | grep
rpmlib
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(PayloadIsXz) <= 5.2-1
我检查是否已经安装但找不到它:
[root@centos2 ~]# rpm -qa | grep -i rpmlib
[root@centos2 ~]# yum list installed | grep -i rpmlib
[root@centos2 ~]#
无论如何,我尝试使用 yum 安装,并且安装包没有任何问题,并且缺少依赖项。
[root@centos2 ~]# yum list installed | grep -i hp
hp-health.x86_64 10.30-1752.15.rhel7 installed
为什么?
我想知道是否有可能在使用 rpm 或 yum 命令时找不到某个软件包已安装在系统上?
答案1
rpmlib()
依赖项指定 rpm 本身提供的功能,而不是实际的包。需求的版本表示第一个具有指定功能的 rpm 版本。
答案2
您可以使用以下命令轻松显示哪个包提供此依赖项:
# rpm -q --whatprovides 'rtld(GNU_HASH)'
glibc-2.26-16.fc27.x86_64
glibc-2.26-16.fc27.i686
或者:
$ LC_ALL=C sudo dnf whatprovides 'rtld(GNU_HASH)'
Last metadata expiration check: 0:03:39 ago on Sat Nov 25 12:40:10 2017.
glibc-2.26-16.fc27.x86_64 : The GNU libc libraries
Repo : @System
Matched from:
Provide : rtld(GNU_HASH)
glibc-2.26-16.fc27.i686 : The GNU libc libraries
Repo : @System
Matched from:
Provide : rtld(GNU_HASH)
glibc-2.26-16.fc27.i686 : The GNU libc libraries
Repo : updates
Matched from:
Provide : rtld(GNU_HASH)
glibc-2.26-16.fc27.x86_64 : The GNU libc libraries
Repo : updates
Matched from:
Provide : rtld(GNU_HASH)
glibc-2.26-15.fc27.i686 : The GNU libc libraries
Repo : fedora
Matched from:
Provide : rtld(GNU_HASH)
glibc-2.26-15.fc27.x86_64 : The GNU libc libraries
Repo : fedora
Matched from:
Provide : rtld(GNU_HASH)
有关功能(又名虚拟提供)的更多信息可以在此处找到:https://docs-old.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/html/RPM_Guide/ch-advanced-packaging.html#id818305