linux+3.10.0.tar.bz2,tensorflow在linux系统上的安装
tensorflow在ubuntu系統(tǒng)上按照官方文檔安裝起來相對(duì)容易,在centos上由于沒有apt-get( yum)相對(duì)困難一些,本文會(huì)提到一些安裝過程中遇到的一些坑及解放方案。
System: ubuntu/Centos, 通常linux系統(tǒng)都是針對(duì)ubuntu(源碼安裝時(shí)用到的Bazel)
Python: Anaconda3,python2
(一)Conda安裝:
conda install -c conda-forge tensorflow
Error:
Missing write permissions in: /export/App/anaconda3
# ls -l /export/App/anaconda3
total 80
drwxrwxr-x 2 hadoop hadoop 12288 Sep 5 15:57 bin
Fix:
# chmod -R 777 /export/App/anaconda3/
# ls -l /export/App/anaconda3
total 80
drwxrwxrwx 2 hadoop hadoop 12288 Sep 5 15:57 bin
下載packages出錯(cuò):
The following NEW packages will be INSTALLED:
funcsigs: 1.0.2-py27_0 conda-forge
mkl: 11.3.3-0
mock: 2.0.0-py27_0 conda-forge
numpy: 1.11.2-py27_0
pbr: 1.10.0-py27_0 conda-forge
protobuf: 3.0.0-py27_0 conda-forge
six: 1.10.0-py27_1 conda-forge
tensorflow: 0.11.0rc2-py27_0 conda-forge
Fetching packages ...
protobuf-3.0.0 1% ##############################################
CondaRuntimeError: Runtime error: RuntimeError: Runtime error: Could not open u'/root/anaconda2/pkgs/protobuf-3.0.0-py27_0.tar.bz2.part' for writing (HTTPSConnectionPool(host='binstar-cio-packages-prod.s3.amazonaws.com', port=443): Read timed out.).
Fix:
mv linux-64-protobuf-3.0.0-py27_0.tar.bz2 protobuf-3.0.0-py27_0.tar.bz2
安裝完成。但運(yùn)行時(shí)報(bào)錯(cuò):
>>>import tensorflow as tf
Traceback (most recent call last):
File "", line 1, in
File "/export/App/anaconda3/envs/ml2/lib/python2.7/site-packages/tensorflow/__init__.py", line 23, in
from tensorflow.python import *
File "/export/App/anaconda3/envs/ml2/lib/python2.7/site-packages/tensorflow/python/__init__.py", line 49, in
from tensorflow.python import pywrap_tensorflow
File "/export/App/anaconda3/envs/ml2/lib/python2.7/site-packages/tensorflow/python/pywrap_tensorflow.py", line 28, in
_pywrap_tensorflow = swig_import_helper()
File "/export/App/anaconda3/envs/ml2/lib/python2.7/site-packages/tensorflow/python/pywrap_tensorflow.py", line 24, in swig_import_helper
_mod = imp.load_module('_pywrap_tensorflow', fp, pathname, description)
ImportError: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /export/App/anaconda3/envs/ml2/lib/python2.7/site-
packages/tensorflow/python/_pywrap_tensorflow.so)
問題分析:
上面的問題主要是glibc的版本太低,和tensorflow編譯使用的glibc環(huán)境不一樣,升級(jí)glibc是一個(gè)危險(xiǎn)的動(dòng)作,可能會(huì)造成系統(tǒng)無法運(yùn)行。
建議用root用戶去操作
下載glibc地址:http://ftp.gnu.org/pub/gnu/glibc/
解壓tar.xz文件:先 xz -d xxx.tar.xz 將 xxx.tar.xz解壓成 xxx.tar 然后,再用 tar xvf xxx.tar來解包
/opt/glibc-2.14/
export LD_LIBRARY_PATH=/opt/glibc-2.14/lib:$LD_LIBRARY_PATH
ImportError: /opt/glibc-2.14/lib/libc.so.6: version `GLIBC_2.17' not found(required by /export/App/anaconda3/envs/ml2/lib/python2.7/site-packages/tensorflow/python/_pywrap_tensorflow.so)
安裝2.17,過程和上面相同,這里省略
export LD_LIBRARY_PATH=/opt/glibc-2.17/lib:$LD_LIBRARY_PATH
error while loading shared libraries: __vdso_time: invalid mode for dlopen(): Invalid argument
這里還涉及到了ldconfig
采用直接升級(jí)glibc來解決:
這里不是使用export的方式,直接升級(jí)解決安裝glibc2.17的問題:
wget http://ftp.gnu.org/pub/gnu/glibc/glibc-2.17.tar.xz
xz -d glibc-2.17.tar.xz
tar -xvf glibc-2.17.tar
cd glibc-2.17
mkdir build
cd build
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
// 這里可能會(huì)遇到問題:*** LD_LIBRARY_PATH shouldn't contain the current directory when building glibc. Please change the environment
variable and run configure again.
// 通過echo $LD_LIBRARY_PATH可以得到:/usr/local/lib64,查看環(huán)境變量.bashrc里配置了該選項(xiàng),臨時(shí)解決:export LD_LIBRARY_PATH=
// 還可能遇到的問題:configure: error: support for --no-whole-archive is needed,暫時(shí)未解決。
make && make install
需要等大概10分鐘。
輸入strings /lib64/libc.so.6|grep GLIBC發(fā)現(xiàn)已經(jīng)更新
執(zhí)行后,又會(huì)遇到下面的glibc++的錯(cuò)誤:
ImportError: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.19' not found (required by /opt/jmr/anaconda2/lib/python2.7/site-packages/tensorflow/python/_pywrap_tensorflow.so)
同樣,直接升級(jí)glibc++來解決:
strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX //注意地址: /usr/local/lib64/libstdc++.so.6
wget http://ftp.de.debian.org/debian/pool/main/g/gcc-4.9/libstdc++6_4.9.2-10_amd64.deb
ar -x libstdc++6_4.9.2-10_amd64.deb
xz -d data.tar.xz
tar xvf data.tar
cd usr/lib/x86_64-linux-gnu/
find / -name libstdc++.so.6
mv /usr/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6.bak
cp libstdc++.so.6.0.20 /usr/lib64/
cd /usr/lib64/
chmod +x libstdc++.so.6.0.20
ln -s libstdc++.so.6.0.20 libstdc++.so.6
繼續(xù)執(zhí)行,報(bào)錯(cuò):
ImportError: /lib64/libc.so.6: version `GLIBC_2.18' not found (required by libstdc++.so.6)
直接安裝最新版本,高版本是兼容低版本的,但是一些高版本是不能安裝在較低的軟件環(huán)境中:
從 http://ftp.gnu.org/pub/gnu/glibc/glibc-2.18.tar.xz 下載,重復(fù)上面的步驟。
把所有需要的依賴升級(jí)完后,安裝完成,最新版沒問題。
(二)Pip安裝
https://www.tensorflow.org/versions/r0.9/get_started/os_setup.html#pip-installation
python3.5:
export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.9.0-cp35-cp35m-linux_x86_64.whl
sudo pip3 install --upgrade $TF_BINARY_URL
報(bào)錯(cuò):
Installing collected packages: setuptools, protobuf, numpy, tensorflow
Found existing installation: setuptools 23.0.0
Cannot remove entries from nonexistent file /export/App/anaconda3/envs/ml3/lib/python3.5/site-packages/easy-install.pth
(三)源碼安裝:
https://www.tensorflow.org/versions/r0.11/get_started/os_setup.html#installing-from-sources
(1)git clone https://github.com/tensorflow/tensorflow --recursive
(2)安裝google的bazel來編譯:
下載地址:https://github.com/bazelbuild/bazel/releases
chmod +x PATH_TO_INSTALL.SH
./PATH_TO_INSTALL.SH --user
直接安裝如果失敗,可以嘗試從源碼安裝bazel:
git clone https://github.com/ibmsoe/bazel
cd bazel
git checkout master
./compile.sh
Build successful! Binary is here: /export/App/bazel/output/bazel
注意安裝完后的路徑是上面給出的路徑,由于上面的sh已經(jīng)把bazel安裝到/usr/local/bin/bazel下,所以要使用新安裝的bazel修改
tensorflow/configure里的bazel改為絕對(duì)路徑。
(3)安裝其他依賴:
# For Python 2.7:
$ sudo apt-get install python-numpy swig python-dev python-wheel
# For Python 3.x:
$ sudo apt-get install python3-numpy swig python3-dev python3-wheel
(4)configuration:
./configure
會(huì)提示more than serveral minutes,以及修改參數(shù):
bazel clean --expunge_async
報(bào)錯(cuò):
ROR: /root/.cache/bazel/_bazel_root/9571b1b1b31378f1c909e87f9c9ba23a/external/com_googlesource_code_re2/BUILD:11:1: C++ compilation of rule '@com_googlesource_code_re2//:re2' failed: gcc failed: error executing command /usr/bin/gcc -U_FORTIFY_SOURCE '-D_FORTIFY_SOURCE=1' -fstack-protector -Wall -Wl,-z,-relro,-z,now -B/usr/bin -B/usr/bin -Wunused-but-set-parameter -Wno-free-nonheap-object -fno-omit-frame-pointer -g0 ... (remaining 29 argument(s) skipped): com.google.devtools.build.lib.shell.BadExitStatusException: Process exited with status 1.
In file included from external/com_googlesource_code_re2/re2/prog.h:19,
from external/com_googlesource_code_re2/re2/bitstate.cc:25:
This is due to the lack of cpu ram or swap. you can modify --jobs value or --ram_utilization_factor value . or check if there is any process that occupies large ram. and kill it. It happends to me that there may exist two bazel servers. so I need to kill one.
(5)Create the pip package and install:
bazel build -c opt //tensorflow/tools/pip_package:build_pip_package
報(bào)錯(cuò):
/usr/local/bin/bazel: line 88: /usr/local/lib/bazel/bin/bazel-real: cannot execute binary file
這里解決是重新安裝bazel,參考(2)中的從源碼安裝bazel
(6)安裝
mkdir _python_build
cd _python_build
ln -s ../bazel-bin/tensorflow/tools/pip_package/build_pip_package.runfiles/org_tensorflow/* .
ln -s ../tensorflow/tools/pip_package/* .
python setup.py develop
總結(jié)
以上是生活随笔為你收集整理的linux+3.10.0.tar.bz2,tensorflow在linux系统上的安装的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 多测师肖sir_高级金牌讲师_简历制作
- 下一篇: vc++网络安全编程范例(14)-ope