Root権限のないユーザーであるLinuxサーバーにtensorflowをインストールしようとしています。ジャンプサーバーを介してSSHでファイルを転送できない。システムは次のとおりです。
Linux THENAME_OF_SURVER 2.6.32-573.18.1.el6.x86_64 #1 SMP Tue Feb 9 22:46:17 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
pip install tensorflow
を介してテンソルフローをインストールしました。テンソルフロープログラムは次のように表示します。
ImportError: /lib64/libc.so.6: version `GLIBC_2.16' not found
Glibcの新しいバージョンをインストールしました
git clone git://sourceware.org/git/glibc.git cd glibc git checkout --track -b local_glibc-2.16 Origin/release/2.16/master mkdir build cd build ../configure --prefix=/home/MYNAME/dependency/glibc-2.16 make -j4 make install
オンラインの指示に従って、私は環境変数を次のように変更しました:
export LD_LIBRARY_PATH=/home/MYNAME/dependency/glibc-2.16/lib
しかし、これにより問題が発生します。コマンドを使用できません。たとえば、ls
を呼び出すと、次のように警告されます。
ls: error while loading shared libraries: __vdso_time: invalid mode for dlopen(): Invalid argument
次に、別の指示に従って、次のようにコマンドを実行しました。
/home/MYNAME/dependency/glibc-2.16/lib/ld-linux-x86-64.so.2 --library-path /home/MYNAME/dependency/glibc-2.16/lib:$LD_LIBRARY_PATH:/path/to/gcc-5.2.0/lib64:/usr/lib64/:/usr/lib64/ ls
(gcc-5.2.0
と同様のフォルダーがどこにあるかわかりません。which gcc
には/usr/local/sbin/gcc
が表示されますが、lib64サブフォルダーがない/usr/local/gcc-5.3.0/bin/gcc
にリンクしています)
ただし、次の警告が表示されました。
ls: error while loading shared libraries: ls: cannot open shared object file
変数を空にエクスポートすることで、ls
を再び使用できることを知っています。しかし、私はまだ新しいバージョンのglibcを使用できません。新しいglibcを正しくリンクする方法を教えてください。どんな提案もいただければ幸いです!
編集:したがって、進行状況は次のようになります。
LD_LIBRARY_PATH=/home/MYNAME/dependency/glibc-2.16/lib python
はpython: error while loading shared libraries: __vdso_time: invalid mode for dlopen(): Invalid argument
になります
/home/MYNAME/dependency/glibc-2.16/lib/ld-2.16.so python
はpython: error while loading shared libraries: __vdso_time: invalid mode for dlopen(): Invalid argument
になります
EDIT2&要約:
雇用ロシアの回答をより詳細にするために、ここに私の最終的な解決策を貼り付けます。
私の目標は、ルート権限のないサーバーでPythonでテンソルフローを使用することです。テンソルフローをインポートするときにImportError: /lib64/libc.so.6: version 'GLIBC_2.16' not found
と警告されました。
Employed Russianの回答に基づいて、私は次のコマンドを使用してコマンドを実行しました。
LD_LIBRARY_PATH=/home/USERNAME/dependency/glibc-2.17/lib/:/lib64/:/usr/local/gcc-5.3.0/lib64/ /home/USERNAME/dependency/glibc-2.17/lib/ld-2.17.so /home/USERNAME/anaconda2/bin/python
コマンドを次の部分に分割します(???
を使用して、ユーザーごとに異なるパスを表します)。
LD_LIBRARY_PATH=
:
は分割を意味します???/glibc-2.17/lib/
/lib64/
および/usr/local/gcc-5.3.0/lib64/
:これらのフォルダーはfind / -name 'libgcc_s.so.1'
で見つかりました。/???/glibc-2.17/lib/ld-2.17.so
/???/python
は、実行可能ファイルのパスです。 Pythonの場合、import sys; print(sys.executable)
でPythonパスを確認します。他のもの:
os.system('ls')
またはos.system('python xxx.py')
のようにシェルコマンドを呼び出す必要がある場合がありますが、通常の方法で使用すると、次のように警告されます。 sh: error while loading shared libraries: __vdso_time: invalid mode for dlopen(): Invalid argument
と私はこれのための十分な解決策を見つけていません。_
export LD_LIBRARY_PATH=/home/MYNAME/dependency/glibc-2.16/lib
_
この答え は、_LD_LIBRARY_PATH
_が機能しない理由と、代わりに何をすべきかを説明しています。
私はあなたの投稿を読んで試してみました...
python: error while loading shared libraries: __vdso_time: invalid mode for dlopen(): Invalid argument
エラーは通常、_ld-linux
_と_libc.so.6
_の間に不一致があることを意味します。それらは一致する必要があります。
_/home/MYNAME/.../ld-2.16.so
_を介した直接ローダー呼び出しを使用している場合は、_/home/MYNAME/.../libc.so.6
_がロードされるように調整する必要もあります。
_--library-path ...
_を_ld-2.16.so
_に渡すか、または_LD_LIBRARY_PATH
_を適切に設定することにより、これを行うことができます。
_ld-2.16 --library-path ... ls
_を使用したコマンドはほぼ正しいです。不足しているのは、_ld-2.16
_がPATH
を検索しないことではないということです。 fullパス名を指定する必要があります:_ld-2.16 --library-path ... /bin/ls
_。
私の場合、centos 6with python forpytorch。
などのエラーがありました:
libraries: __vdso_time: invalid mode for dlopen(): Invalid argument
ImportError: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /home/evaldsu/.conda/envs/conda_env/lib/python3.6/site-
Glibc-2.17と一緒にローカルディレクトリの/ opt/exp_soft/toolsにインストールしました
次に、conda envパッチツールにインストールしました(他のツールを使用してインストールすることもできます):
conda install -c conda-forge patchelf
次に、pythonのバイナリにパッチを適用して、異なるglibcパスを使用します(任意のバイナリでこれを実行できます)。これにより、pythonバイナリが変更されます。
patchelf --set-rpath /opt/exp_soft/tools/glibc-2.17/lib:$HOME/.conda/envs/conda_inf/lib:/usr/lib64:/lib64:/lib --set-interpreter /opt/exp_soft/tools/glibc-2.17/lib/ld-linux-x86-64.so.2 /home/evaldsu/.conda/envs/conda_inf/bin/python3.6
別のオプションは、完全な管理者アクセス権がある場合にこのスクリプトをインストールすることです。
https://Gist.github.com/harv/f86690fcad94f655906ee9e37c85b174