64ビットrpmは32ビット依存関係を解決できません。

64ビットrpmは32ビット依存関係を解決できません。

質問

64ビットと32ビットのバイナリを組み合わせたRPMがあります。バイナリの1つは、32ビットi686パッケージによって異なります。パッケージをインストールしようとすると、yumがパッケージに32ビットパッケージが必要であるというエラーが表示されました。ただし、必要なパッケージを直接インストールしようとすると問題なく動作します。

詳細

私の仕様ファイルに

Requires:       glibc.i686 libstdc++.i686 device-mapper-libs.i686 lshw

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

ただし、参照パッケージを手動でインストールすると、次のメッセージが表示されます。

# 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

エラーが発生する理由とエラーが私に何を言うのかよく理解していません。 4番目の必須パッケージ「lshw」が正しく機能しているように見えるため、この問題は32ビットパッケージでのみ発生することがわかりました。 32ビットパッケージを参照する特別な仕様ファイル構文はありますか?

答え1

私は答えを見つけました。私の要件ラインは次のようになります。

Requires:       glibc(x86-32) libstdc++(x86-32) device-mapper-libs(x86-32)

で述べたように http://www.rpm.org/wiki/PackagerDocs/ArchDependency

答え2

誰かが4.6の回答(4.4バージョン)に答えたので、32ビットRPMを使用して問題や構文不足の問題を解決する場合は、他の人に役立ちます。

Requires:      /lib/libc.so.6

このファイルは32ビットglibcで提供されるため、インストール時に正しい依存関係が得られます。

関連情報