我想在linux服務器上安裝tensorflow,我只是一個沒有root權限的用戶。我無法通過跳轉服務器將文件傳輸到/從它傳輸。該系統是如下:使用更新版本的glibc時出錯
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
安裝tensorflow和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
,但它鏈接到/usr/local/gcc-5.3.0/bin/gcc
,它不具有lib64的子文件夾)
但隨後與前來以下警告:
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 &摘要:
爲了使就業俄羅斯的回答更詳細的,我會在這裏貼上我的最終解決方案。
我的目標是在沒有root權限的服務器上使用Python中的tensorflow。當輸入tensorflow時,我被警告ImportError: /lib64/libc.so.6: version 'GLIBC_2.16' not found
。
基於使用俄羅斯的答案,我用下面的運行我的命令:
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路徑。
其他的事情:
- 的glibc-2.17是gnu下載。我選擇了2.17,因爲張量流需要2.17和2.17正常工作。
- 此解決方案還有另一個問題。我有時需要在Python中調用shell命令,如
os.system('ls')
或os.system('python xxx.py')
。但是,如果我以正常的方式使用它,它會警告我:sh: error while loading shared libraries: __vdso_time: invalid mode for dlopen(): Invalid argument
,我還沒有找到足夠好的解決方案。
您是否嘗試過僅爲運行'python'設置'LD_LIBRARY_PATH'變量?即運行單個命令:'LD_LIBRARY_PATH =/home/MYNAME/dependency/glibc-2.16/lib python',然後在提示的提示符處輸入'import tensorflow as tf'? – mrry
@mrry我試過,但它仍然警告相同:'python:加載共享庫時出錯:__vdso_time:無效模式爲dlopen():無效參數' –