64bit rpm 无法解析 32bit 依赖

llo*_*che 5 linux yum rpm centos

问题

我有一个包含混合 64 位和 32 位二进制文​​件的 RPM。其中一个二进制文件依赖于 32 位 i686 软件包。当我尝试安装软件包 yum 时出现错误,指出该软件包需要 32 位软件包。但是,当我尝试自己安装所需的软件包时,它可以完美运行。

细节

在我的规范文件中,我有

Requires:       glibc.i686 libstdc++.i686 device-mapper-libs.i686 lshw
Run Code Online (Sandbox Code Playgroud)

当我尝试在 CentOS 6.3 系统上安装该软件包时,我得到:

# yum update gamigo-kvm-tools
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Setting up Update Process
Resolving Dependencies
--> Running transaction check
---> Package gamigo-kvm-tools.x86_64 0:0.0.7-4 will be updated
---> Package gamigo-kvm-tools.x86_64 0:0.0.9-4 will be an update
--> Processing Dependency: libstdc++.i686 for package: gamigo-kvm-tools-0.0.9-4.x86_64
--> Processing Dependency: glibc.i686 for package: gamigo-kvm-tools-0.0.9-4.x86_64
--> Processing Dependency: device-mapper-libs.i686 for package: gamigo-kvm-tools-0.0.9-4.x86_64
--> Finished Dependency Resolution
Error: Package: gamigo-kvm-tools-0.0.9-4.x86_64 (gamigo-CentOS-6-x86_64-liv)
           Requires: libstdc++.i686
Error: Package: gamigo-kvm-tools-0.0.9-4.x86_64 (gamigo-CentOS-6-x86_64-liv)
           Requires: device-mapper-libs.i686
Error: Package: gamigo-kvm-tools-0.0.9-4.x86_64 (gamigo-CentOS-6-x86_64-liv)
           Requires: glibc.i686
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest
Run Code Online (Sandbox Code Playgroud)

但是,当我手动安装引用的软件包时,我得到

# yum install libstdc++.i686 device-mapper-libs.i686 glibc.i686
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Setting up Install Process
Package libstdc++-4.4.6-4.el6.i686 already installed and latest version
Package device-mapper-libs-1.02.74-10.el6.i686 already installed and latest version
Package glibc-2.12-1.80.el6_3.5.i686 already installed and latest version
Nothing to do
Run Code Online (Sandbox Code Playgroud)

我不太明白为什么会发生错误以及它试图告诉我什么。我看到它只发生在 32 位包中,因为第四个必需的包 'lshw' 似乎没有问题。是否有特殊的规范文件语法来引用 32 位包?

llo*_*che 14

我刚刚找到了答案。我的需要行应该是

Requires:       glibc(x86-32) libstdc++(x86-32) device-mapper-libs(x86-32)
Run Code Online (Sandbox Code Playgroud)

http://www.rpm.org/wiki/PackagerDocs/ArchDependencies 中所述

  • 特别是如果你自己找到答案:-P ...我搜索了 12 分钟。在询问 serverfault 之前,我可能根本没有发布这个问题。再说一次,它可能对有同样问题的其他人有用。 (2认同)