Problem
Ich habe ein RPM, das gemischte 64-Bit- und 32-Bit-Binärdateien enthält. Eine der Binärdateien hängt von 32-Bit-i686-Paketen ab. Wenn ich versuche, das Paket yum zu installieren, gibt mir eine Fehlermeldung, dass das Paket die 32-Bit-Pakete erfordert. Wenn ich jedoch versuche, die erforderlichen Pakete selbst zu installieren, funktioniert es einwandfrei.
Einzelheiten
In meiner Spezifikationsdatei habe ich
Requires: glibc.i686 libstdc++.i686 device-mapper-libs.i686 lshw
Wenn ich versuche, das Paket auf einem CentOS 6.3-System zu installieren, erhalte ich:
# 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
Wenn ich jedoch die referenzierten Pakete manuell installiere, bekomme ich
# 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
Ich verstehe nicht ganz, warum der Fehler auftritt und was er mir sagen will. Ich sehe, dass es nur für die 32-Bit-Pakete auftritt, da das vierte erforderliche Paket „lshw“ kein Problem zu sein scheint. Gibt es eine spezielle Specfile-Syntax, um 32-Bit-Pakete zu referenzieren?
Akzeptierte Antwort:
Ich habe gerade die Antwort gefunden. Meine Requires-Zeile sollte
seinRequires: glibc(x86-32) libstdc++(x86-32) device-mapper-libs(x86-32)
wie in
http://www.rpm.org/wiki/PackagerDocs/ArchDependencies