CentOSマシンでpythonアプリケーションを試しましたが、次のエラーが発生します。
ImportError: /usr/lib64/libc.so.6: version `GLIBC_2.18' not found (required by /tmp/_MEI2BYIr4/libstdc++.so.6)
私はGLIBCをアップグレードしたくなりましたが、いくつかのフォーラムを読んだ後、システムを壊すことができるようです。他に何か知っていますか?
ありがとう
最初にpythonアプリケーションが古い可能性があり、おそらくglibc
バージョンを読み違えている可能性があります。CentOSは基本バージョンがインストールされていることを示し、変更に対応するためにパッチが適用されています。コードで探しているバージョンを簡単に修正できる場合もありますが、アプリケーションが活発に開発されている場合は、開発者に通知するか、可能であれば自分でフォークする必要があります。
CentOS 7の最新のglibc
は2.17-196.el7_4.2
である必要があります
このアプリケーションを実行することが絶対に必要な場合は、公式のRHELアプローチはコンテナー化することですが、動作するglibcを提供する必要があります。これは、標準のCentOS 7では不可能です。
glibc
を非標準の場所にインストールしますこれが実行可能ではなく、絶対的な最後の手段として、2.18よりも新しいバージョンのglibc
をインストールすることが可能です。これは、現在5年前のものであり、glibc
がいくつか更新されているためです。脆弱性とCentOS 7のmake
のバージョンでビルドできるかどうかは、頭の先からはわかりませんが、新しいバージョンは次のように動作するはずです。
サーバーの他の場所で必要なglibc
のバージョンをビルドして、アプリケーションのLD_LIBRARY_PATH
に追加できます。これは、アプリケーションに対してのみ実行する必要があることに注意してください。
wget http://ftp.gnu.org/gnu/glibc/glibc-2.18.tar.gz
tar zxvf glibc-2.18.tar.gz
cd glibc-2.18
mkdir build
cd build
../configure --prefix=/opt/glibc-2.18
make -j4
Sudo make install
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/glibc-2.18/lib
/opt
は、サードパーティのアプリケーションやライブラリをインストールするための標準的な場所ですが、システムパスから離れた任意のパスを使用できます。
結局、GLIBCをアップグレードする必要はありませんでした。 gdc-client
Rを介してダウンロードしたツールは、CentOSではなくUbuntu用であるように見えましたが、CentOS 7でダウンロードしました。その後、CentOS用のgdc-clientをダウンロードしたところ、問題なく動作しました。
CentOS 7では、/usr/lib64
フォルダー内のrpath
patchelf --set-interpreter /opt/glibc-2.18/lib/ld-linux-x86-64.so.2 --set-rpath /opt/glibc-2.18/lib:/usr/lib64 pydio-agent
これは私のために働いた