web-dev-qa-db-ja.com

GLIBCを更新せずに新しいソフトウェアを実行する方法

古いRed Hat Enterprise Linux ASリリース4システムにMathematica 9をインストールしました。インストール後、Mathematicaを起動しようとしましたが、以下のメッセージが出ました:

/home/wcbao/M/Wolfram/Mathematica/9.0/SystemFiles/FrontEnd/Binaries/Linux-x86-64/Mathematica:/lib64/tls/libc.so.6:version `GLIBC_2.4 'not found(/ home/wcbao/M/Wolfram/Mathematica/9.0/SystemFiles/Libraries/Linux-x86-64/libML64i3.so)

/home/wcbao/M/Wolfram/Mathematica/9.0/SystemFiles/FrontEnd/Binaries/Linux-x86-64/Mathematica:/lib64/tls/libc.so.6:version `GLIBC_2.4 'not found(/ホーム/wcbao/M/Wolfram/Mathematica/9.0/SystemFiles/Libraries/Linux-x86-64/libQtCore.so.4)

システムglibcを更新するのは危険です。管理者の許可を得られないためです。

誰かがglibcの新しいバージョンをどこかにインストールして、プログラムを次のように実行することは可能だと提案しました

LD_LIBRARY_PATH=/lib/new your_application

これはシステムには影響しません。

したがって、この方法が本当に機能するかどうかをここで尋ねています。そしてそれがうまくいくなら、私はそれを段階的に行う方法を知りたいです(私は現在Linuxでの経験がなく、LinuxでMathematicaをできるだけ早く使用したいです)。

編集

「Ermine」というソフトがあることに気づきました。外部環境に依存しないスタンドアロンパッケージとしてソフトウェアを展開できるようです。残念ながら、それはシェアウェアです。 「アーミン」ならできるので、古いシステムで新しいソフトウェアを使う方法があるに違いない。

20
user15964

GLIBCの新しいバージョンをコンパイルして、別のディレクトリに保存することができます。まず最初に、必要なバージョンのglibcを http://ftp.gnu.org/gnu/glibc/ からダウンロードします。

configureスクリプトを実行し、--prefix=/home/you/mylibsのように設定します。

それをそのディレクトリにインストールした後、LD_LIBRARY_PATHを新しいglibcの場所に設定する必要があります。

コンパイルする必要がある依存関係を把握する必要があります。 LD_ *変数を設定してプログラムを実行するシェルスクリプトを作成し(とにかく行う必要があります)、繰り返し実行します-不足しているライブラリを途中でダウンロード/再コンパイルします。

また、lddを使用してプログラムが必要とする共有ライブラリを判別し、各ライブラリでlddを使用してglibcが必要かどうかを確認することもできます。

これは、非常に時間のかかるプロセスになる可能性があり、心臓のせっかちやかすかな状態のためではありません-トラバースアプリケーションを機能させるために必要な可能性のある依存関係を/ recompileすると、たまに髪の毛を引き出したくなることがあります。

更新1:

私はglibc-2.4をダウンロードして、CentOS 6でコンパイルしようとしました。configureを正しく動作させるには、acldのバージョンチェックを変更する必要がありました。

2.1[3-9]*)

に:

2.*)

configureファイル自体の4045および4106行。 * FLAGS環境変数を次のように設定します。

LDFLAGS="-Wl,--sort-common -Wl,-zcombreloc -Wl,-znow" 
CFLAGS="-pipe -fomit-frame-pointer -g1 -O3 -frename-registers -fweb -ftracer -fmodulo-sched -fvariable-expansion-in-unroller -fgcse-sm"
CXXFLAGS="${CFLAGS}" 
CFLAGS="${CFLAGS} -freorder-blocks-and-partition" 
export LDFLAGS CFLAGS CXXFLAGS

次に./configure --prefix=/home/tim/masochistを実行します。それは適切に構成されました...そしてそれも適切に構築され始めました...しかし、それから私はエラーに遭遇し始めました-ほとんどのコンパイラは再定義されているものについて文句を言っています。

その時点で私はあきらめました...時間がかかりすぎていたので。 ;)

10
livingstaccato

Glibcをご使用のディストリビューションでサポートされているバージョンに更新することは、リスクが低くなります。これは、日付がfarであるバージョンとの互換性を処理するように記述されており、(baringバグ)新しいバージョンは、単なる代替品です。見知らぬ場所に新しいバージョンをインストールするのは危険です、私見。

1
vonbrand