web-dev-qa-db-ja.com

CentOS 7でglibcを安全にアップグレードする

CentOSマシンでpythonアプリケーションを試しましたが、次のエラーが発生します。

ImportError: /usr/lib64/libc.so.6: version `GLIBC_2.18' not found (required by /tmp/_MEI2BYIr4/libstdc++.so.6)

私はGLIBCをアップグレードしたくなりましたが、いくつかのフォーラムを読んだ後、システムを壊すことができるようです。他に何か知っていますか?

ありがとう

6
Paco el Cuqui

実際に必要かどうかを確認する

最初にpythonアプリケーションが古い可能性があり、おそらくglibcバージョンを読み違えている可能性があります。CentOSは基本バージョンがインストールされていることを示し、変更に対応するためにパッチが適用されています。コードで探しているバージョンを簡単に修正できる場合もありますが、アプリケーションが活発に開発されている場合は、開発者に通知するか、可能であれば自分でフォークする必要があります。

CentOS 7の最新のglibc2.17-196.el7_4.2である必要があります

必要な場合は、Containerise

このアプリケーションを実行することが絶対に必要な場合は、公式の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は、サードパーティのアプリケーションやライブラリをインストールするための標準的な場所ですが、システムパスから離れた任意のパスを使用できます。

12
Simon Greenwood

結局、GLIBCをアップグレードする必要はありませんでした。 gdc-client Rを介してダウンロードしたツールは、CentOSではなくUbuntu用であるように見えましたが、CentOS 7でダウンロードしました。その後、CentOS用のgdc-clientをダウンロードしたところ、問題なく動作しました。

2
Paco el Cuqui

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

これは私のために働いた

1
Mark Cleverdon