Yum은 RHEL 6에서 손상되었습니다.

Yum은 RHEL 6에서 손상되었습니다.

. yum 명령에 문제가 있습니다. 이 사이트에 설명된 문제와 정확히 동일한 문제인 것 같습니다. CentOS 6.2에서 Yum이 손상되어 Python 모듈을 가져오는 데 문제가 있습니다.

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

하지만 다음 위치에 있는 #python2를 실행할 수 있습니다./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.

\>>>

yum이 가져오는 모듈은 다음과 같습니다.

냠_모듈

답변1

당신이 해야 할 일은 ldd /lib64/libldap-2.4.so.2"정의되지 않은 참조"에 대한 출력을 확인하고, 정의되지 않은 라이브러리를 제공하는 패키지를 찾고, 저장소를 찾고, 라이브러리를 제공하는 rpm을 수동으로 다운로드한 다음 rpm -i <missing>.rpm.

문제는 libldap의 버그나 패키징 시스템에 대한 사용자의 수동 개입으로 인해 발생할 가능성이 높습니다.

마침 내 근처에 RHEL6이 있으니 기호를 찾아보자for lib in /lib64/*.so.*; do if nm -D $lib|grep ber_sockbuf_io_udp; then echo $lib; fi; done

반품:

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

따라서 기호는 내 시스템에 설치된 /lib64/liblber-2.4.so.2에 정의되어 있습니다. 설치 후 이렇게 할 수 있습니다. rpm -qf /lib64/liblber-2.4.so.2알려주세요.

openldap-2.4.23-32.el6_4.1.x86_64

따라서 이는 패키지의 일부여야 합니다. 이제 이 라이브러리가 파일 시스템에 존재하는지 확인해야 합니다. 그렇지 않은 경우 openldap 패키지를 다운로드하고 다시 설치하십시오. 존재한다면 Python에 문제가 있는 것입니다.

답변2

/usr/lib64/libldap_r-2.4.so.2제 경우에는(RHEL7.8 + Apache 2.4 + Shibboleth 3.2) 라이브러리를 Apache 디렉터리에 있는 라이브러리로 교체하여 문제를 해결할 수 있었습니다 .<APACHE_ROOT>/HTTPServer/openldap/lib/libldap_r-2.4.so.2

실행: locate libldap_r-2.4.so.2 도서관의 위치를 ​​찾습니다. 내 경우에는 다음을 얻습니다.

/app/ptc/Windchill_12.0/HTTPServer/openldap/lib/libldap_r-2.4.so.2
/app/ptc/Windchill_12.0/HTTPServer/openldap/lib/libldap_r-2.4.so.2.10.12
/usr/lib/libldap_r-2.4.so.2
/usr/lib/libldap_r-2.4.so.2.10.7
/usr/lib64/libldap_r-2.4.so.2
/usr/lib64/libldap_r-2.4.so.2.10.7

오류에 사용된 라이브러리가 /usr/lib64dir에 있는 것으로 확인되었습니다. 이를 교체했고 이제 ./apachectl -t"Syntax OK"라고 보고합니다.

나는 여기서 무슨 일이 일어나고 있는지 또는 올바른 해결 방법이 무엇인지 설명할 만큼 Linux에 대해 충분히 알지 못합니다. 문제를 해결한 내 관찰 내용은 다음과 같습니다. 하지만 내 단계가 약간 잘못되었다고 생각합니다.

더 우아하고 확장 가능한 솔루션을 갖고 있는 사람이 있나요?

인용하다:https://groups.google.com/g/repmgr/c/TS7QfYEoNoY

cd /usr/lib64/
ll | grep libldap
lrwxrwxrwx.  1 root root       21 Feb 11 16:42 libldap-2.4.so.2 -> libldap-2.4.so.2.10.7
-rwxr-xr-x.  1 root root   352512 Jun  6  2020 libldap-2.4.so.2.10.7
lrwxrwxrwx.  1 root root       23 Feb 11 16:42 libldap_r-2.4.so.2 -> libldap_r-2.4.so.2.10.7
-rwxr-xr-x.  1 root root   381328 Jun  6  2020 libldap_r-2.4.so.2.10.7

/usr/lib64/libldap_r2.4.so.2그것은 단지 심볼릭 링크인 것처럼 보입니다 libldap_r-2.4.so.2.10.7.

2.10.7에 누락되거나 더 이상 사용되지 않는 기호가 있는지 궁금합니다. 두 버전 간의 차이점을 알 수 있는 방법이 있습니까?

고쳐 쓰다LoadFileApache conf에서 명령을 사용할 수 있다는 것을 알았습니다 . 항목 앞에 LoadFile <APACHE_ROOT>/HTTPServer/openldap/lib/libldap_r-2.4.so.200-shib.conf 파일을 추가하면 LoadModule mod_shib /usr/lib64/shibboleth/mod_shib_24.so문제가 해결되었습니다.

이것은 여전히 ​​해결 방법/해킹처럼 보이며 라이브러리/다른 버전에 잠재적인 문제가 있을 수 있습니다.

관련 정보