Yum Corrompido no RHEL 6

1

Eu estou encontrando o problema com o meu comando yum. Parece ser exatamente o mesmo que o problema descrito neste site, Yum corrompido no CentOS 6.2, Problema de importação de um dos módulos python

Este será o erro produzido sempre que eu executar o comando yum.

[root@Server1~]# yum list

 There was a problem importing one of the
 Python modules required to run yum. The error leading to this problem
 was:

    /lib64/libldap-2.4.so.2: undefined symbol: ber_sockbuf_io_udp

 Please install a package which provides this module, or verify that
 the module is installed correctly.

 It's possible that the above module doesn't match the current version
 of Python, which is:
 2.6.6 (r266:84292, Nov 21 2013, 10:50:32) [GCC 4.4.7 20120313 (Red Hat 4.4.7-4)]

 If you cannot solve this problem yourself, please go to the yum faq
 at:   http://yum.baseurl.org/wiki/Faq

No entanto, posso executar # python2, localizado em /usr/bin/python2

[root@Server1~]# python2

Python 2.6.6 (r266:84292, Nov 21 2013, 10:50:32)

[GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux2

Type "help", "copyright", "credits" or "license" for more information.

\>>>

Estes são os módulos yum import:

    
por Win.T 30.03.2015 / 09:32

1 resposta

0

Você deve fazer ldd /lib64/libldap-2.4.so.2 , verificar a saída para 'referências indefinidas', localizar o pacote que fornece essa biblioteca indefinida, localizar seu repositório, baixar manualmente o rpm que fornece essa biblioteca, instalá-lo com rpm -i <missing>.rpm .

Provavelmente o seu problema é devido a bug na libldap ou a sua intervenção manual no sistema de empacotamento.

Por acaso tenho o RHEL6 por perto, então vamos encontrar seu símbolo for lib in /lib64/*.so.*; do if nm -D $lib|grep ber_sockbuf_io_udp; then echo $lib; fi; done

retorna:

0000003e2240e460 D ber_sockbuf_io_udp
 /lib64/liblber-2.4.so.2
0000003e2240e460 D ber_sockbuf_io_udp
/lib64/liblber-2.4.so.2.5.6
                U ber_sockbuf_io_udp
/lib64/libldap-2.4.so.2
                 U ber_sockbuf_io_udp
/lib64/libldap-2.4.so.2.5.6
                 U ber_sockbuf_io_udp
/lib64/libldap_r-2.4.so.2
                 U ber_sockbuf_io_udp
/lib64/libldap_r-2.4.so.2.5.6

Portanto, seu símbolo é definido em /lib64/liblber-2.4.so.2, que está instalado no meu sistema. Como está instalado eu pude fazer rpm -qf /lib64/liblber-2.4.so.2 que me mostra

openldap-2.4.23-32.el6_4.1.x86_64

Portanto, deve fazer parte do seu pacote. Agora você deve verificar se esta biblioteca existe em seu fs. Se isso não acontecer, baixe e reinstale o pacote openldap. Se ele existir - algo errado com o seu python.

    
por 30.03.2015 / 14:04