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に欠落しているか、もはや廃止された記号があるかどうか疑問に思います。 2つのバージョン間の違いを知る方法はありますか?

修正する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問題が解決しました。

これはまだ解決方法/ハッキングのように見え、ライブラリ/別のバージョンに潜在的な問題がある可能性があります。

関連情報