Problema
Tengo un RPM que contiene binarios mixtos de 64 bits y 32 bits. Uno de los binarios depende de paquetes i686 de 32 bits. Cuando intento instalar el paquete yum me da error, notando que el paquete requiere los paquetes de 32 bits. Sin embargo, cuando intento instalar los paquetes necesarios yo mismo, funciona perfectamente.
Detalles
En mi archivo de especificaciones tengo
Requires: glibc.i686 libstdc++.i686 device-mapper-libs.i686 lshw
Cuando intento instalar el paquete en un sistema CentOS 6.3 obtengo:
# 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
Sin embargo, cuando instalo manualmente los paquetes a los que se hace referencia, obtengo
# 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
No entiendo muy bien por qué ocurre el error y qué está tratando de decirme. Veo que solo ocurre para los paquetes de 32 bits, ya que el cuarto paquete requerido, 'lshw', parece no ser un problema. ¿Existe una sintaxis de archivo de especificaciones especial para hacer referencia a paquetes de 32 bits?
Respuesta aceptada:
Acabo de encontrar la respuesta. Mi línea Requires debe ser
Requires: glibc(x86-32) libstdc++(x86-32) device-mapper-libs(x86-32)
como se describe en
http://www.rpm.org/wiki/PackagerDocs/ArchDependencies