Acabei de encontrar a resposta. Minha linha Requer deve ser
Requires: glibc(x86-32) libstdc++(x86-32) device-mapper-libs(x86-32)
como descrito em link
Problema
Estou tendo um RPM que contém binários mistos de 64 bits e 32 bits. Um dos binários depende de pacotes i686 de 32 bits. Quando tento instalar o pacote, o yum me dá um erro, observando que o pacote requer os pacotes de 32 bits. No entanto, quando eu tento instalar os pacotes necessários sozinho, ele funciona sem falhas.
Detalhes
No meu arquivo de especificações eu tenho
Requires: glibc.i686 libstdc++.i686 device-mapper-libs.i686 lshw
Quando tento instalar o pacote em um sistema CentOS 6.3, recebo:
# 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
No entanto, quando instalo manualmente os pacotes referenciados, obtenho
# 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
Eu não entendo muito bem porque o Erro ocorre e o que ele está tentando me dizer. Eu vejo que isso está ocorrendo apenas para os pacotes de 32 bits, já que o quarto pacote requerido 'lshw' parece não ter problema algum. Existe uma sintaxe specfile especial para referenciar pacotes de 32 bits?
Acabei de encontrar a resposta. Minha linha Requer deve ser
Requires: glibc(x86-32) libstdc++(x86-32) device-mapper-libs(x86-32)
como descrito em link
Desde que alguém tenha respondido por 4.6 - para a versão 4.4, se você depender de um RPM de 32 bits para contornar dificuldades ou falta de sintaxe que possa funcionar para outras pessoas:
Requires: /lib/libc.so.6
Como esse arquivo é fornecido pelo 32bit da glibc, a instalação obterá a dependência correta.