yum / rpm inconsistências

0

Estou usando o RHEL 5 (64 bits) e me deparei com uma inconsistência com o rpm / yum. Quando tento instalar um RPM de 32 bits, sou informado de que o RPM já está instalado quando apenas a versão de 64 bits existe no disco:

$ rpm -Uvh ./libsysfs-2.1.0-1.el5.i386.rpm
Preparing...                ########################### [100%]
        package libsysfs-2.1.0-1.el5.i386 is already installed

$ rpm -q libsysfs --qf '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n
libsysfs-2.1.0-1.el5.x86_64

Eu tentei reconstruir o banco de dados, mas recebo o mesmo erro.

Eu verifiquei que o RPM não está realmente instalado. Quando executo rpm -qp ./libsysfs-2.1.0-1.el5.i386.rpm , posso confirmar que os arquivos listados não existem no sistema.

O que estou perdendo? Há algo mais que o RPM analise para ver se um RPM já está instalado?

Editar 1

Não tenho certeza se isso é algo a ver com o próprio RPM ou não. Depois de executar updatedb , apagando o RPM com rpm -e libsysfs e tentando instalar os dois simultaneamente, recebo um erro que o pacote já foi adicionado:

$ rpm -e libsysfs
$ rpm -Uvh ./libsysfs-2.1.0-1.el5.i386.rpm ./libsysfs-2.1.0-1.el5.x86_64.rpm
warning: package libsysfs = 2.1.0-1.el5 was already added, skipping libsysfs < 2.1.0-1.el5
Preparing...                ########################### [100%]
   1:libsysfs               ########################### [100%]

Existem 19 outros RPMs que estão fazendo a mesma coisa.

Editar 2

O pacote de 32 bits ainda não será instalado. Ao tentar descobrir o que está acontecendo, eu pude instalar forçosamente o rpm rpm -Uvh --force libsysfs-2.1.0-1.el5.i386.rpm e ele foi instalado com sucesso. Posso verificar se os arquivos listados dentro do RPM de 32 bits e de 64 bits agora existem no sistema de arquivos. No entanto, rpm e yum agora ambos pensam que somente a versão de 32 bits está no disco:

$ rpm -q libsysfs --qf '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n
libsysfs-2.1.0-1.el5.i386

Eu posso apagar com sucesso o RPM de 32 bits, mas o comando rpm agora não reconhece mais a variante de 64 bits, mesmo que todos os arquivos estejam no lugar:

$ rpm -e libsysfs.i386
$ rpm -q libsysfs --qf '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n
package libsysfs is not installed
$ rpm -qpl ./libsysfs-2.1.0-1.el5.x86_64.rpm
/usr/lib64/libsysfs.so.2
/usr/lib64/libsysfs.so.2.0.1
...
/usr/share/doc/libsysfs-2.1.0/libsysfs.txt

$ ls /usr/lib64/libsysfs.so.2
/usr/lib64/libsysfs.so.2

Reconstruindo o banco de dados RPM, o RPM libsysfs ainda não foi encontrado.

$ cd /var/lib/rpm
$ rm -f __db*
$ /usr/lib/rpm/rpmdb_verify Packages
$ mv Packages Packages.orig
$ /usr/lib/rpm/rpmdb_dump Packages.orig | /usr/lib/rpm/rpmdb_load Packages
$ /usr/lib/rpm/rpmdb_verify Packages
$ rpm -v --rebuilddb

Estou chegando à conclusão de que deve haver algum tipo de corrupção do banco de dados RPM, mas não tenho idéia de onde ir a partir daqui.

Editar 3

Para tentar entender melhor o que está acontecendo, eu apaguei o libsysfs e tentei a opção yum localinstall , mas ainda parece que o instalador vê as opções de 32 e 64 bits como a mesma coisa:

$ yum localinstall ./libsysfs-2.1.0-1.el5.x86_64.rpm ./libsysfs-2.1.0-1.el5.i386.rpm
...
Resolving Dependencies
--> Running transaction check
---> Package libsysfs.i386 0:2.1.0-1.el5 set to be updated
---> Package libsysfs.x86_64 0:2.1.0-1.el5 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

===============================================================================
Packages      Arch       Version         Repository                      Size 
===============================================================================
Installing:
 libsysfs     i386       2.1.0-1.el5     /libsysfs-2.1.0-1.el5.i386      140 k
 libsysfs     x86_64     2.1.0-1.el5     /libsysfs-2.1.0-1.el5.x86_64    141 k

Transaction Summary
===============================================================================
Install      2 Package(s)
Upgrade      0 Package(s)

Total Size: 281 k
...
Running Transaction:
  Installing     : libsysfs                      1/1
Installed products updated.

Installed:
  libsysfs.i386 0:2.1.0-1.el5           libsysfs.x86_64 0:2.1.0-1.el5

Complete!

Eu noto que em todos os lugares, mas onde ela realmente faz a instalação, ambas as arquiteturas são mencionadas, mas a instalação ainda faz apenas uma.

    
por halvener 01.03.2016 / 15:22

2 respostas

2

Parece que nem todos os RPMs de 32 bits são criados iguais. Os únicos RPMs que dão esse problema são aqueles que são baixados diretamente do RHN. Se eu usasse apenas RPMs disponíveis no repositório rhel-5-server-rpms no yum, tudo funcionaria. O download dos 50 ou mais RPMs que estavam faltando no rhn.redhat.com causou o problema.

Em nossa configuração, os RPMs baixados foram forçados no sistema via anaconda.

Editar

Ao tentar minimizar o problema, parece que a desinstalação de cada RPM de 32 bits, a reinstalação dos RPMs de 64 bits / noarch e a instalação dos RPMs de 32 bits fazem o truque.

yum erase '*.i386'
yum reinstall '*.x86_64' --exclude=filesystem
yum install '<rpm>.i386'

Por algum motivo, isso esclareceu tudo, exceto 8 dos RPMs em que eu vi isso.

    
por 14.03.2016 / 20:47
0

Tente verificar o seu suporte ao arco. Você disse que estava ligado ou queria os pacotes x86_64, mas você tem o pacote i386.

Um problema pode estar relacionado ao suporte do arco no arquivo "/etc/yum.conf". Tente mudar - >

multilib_policy=all

Para - >

multilib_policy=best

Execute isto:

yum clean all

Em seguida, execute a atualização do (s) seu (s) pacote (s) e instale / atualize o pacote desejado.

Confira também este link oficial:

Informações de cache do Yum: link

Recurso básico de Yum: link

    
por 01.03.2016 / 19:37

Tags