tensorflow安裝調試總結(持續更新)

這段時間須要部署tensorflow到linux上,因爲堡壘機不能連外網,因此pip、apt-get、wget、git通通不能用,而後就是各類調試了,下面整理了一些遇到的問題和解決方案,供你們參考(CentOS/Python3.4),有什麼遺漏的問題還望你們補充。html

一、Putty、XShell、SecureCRT、SSH Secure Shell Slient的優缺點 如今大可能是用的xshell,由於xshell有一款我的免費的,仍是中文界面,對於這種四級都是勉強過的,真心不錯。 putty由於過小了,因此經常有不少功能不能知足。 securecrt在功能上跟xshell(XManager中文版網站)差很少,可是securecrt是英文版的還要收費,因此就果斷拋棄了 SSH Secure Shell Slient,這款軟件使用的不太多,通常使用最多的就是securecrt和xshell了,介於免費的緣由,因此推薦使用xshell。java

二、查看本機MAC cmd->ipconfig/all->物理地址python

三、root身份登陸 ssh root@XXXlinux

四、安裝gcc 首先須要安裝gcc,若是能夠聯網,能夠apt-get install build-essential或yum -y install gcc,若是不能就去這裏下載:http://mirrors-usa.go-parts.com/gcc/releases/gcc-4.8.4/gcc-4.8.4.tar.gz 下載下來以後,執行: tar zxvf gcc-4.8.4.tar.gz cd gcc-4.8.4 ./contrib/download_prerequisites ./configure --enable-checking=release --disable-multilib(後面兩項option必須加,不加會報錯(也可能只是其中一項起做用)) make -j4 make installc++

五、沒有bizp2 若是沒有bizip,安裝gcc依賴的時候會報錯 解決: 運行yum install -y bzip2安裝bzip2git

六、gcc版本不更新 更新完gcc後須要斷開xshell從新鏈接後再輸入gcc -v才顯示最新版本(不須要修改環境變量)github

七、沒有git yum install git-core 要是不能聯網有沒有git都同樣,全部包都須要手動下載shell

八、安裝binutils 從如下目錄下載binutils:ftp.gnu.org/gnu/binutils/binutils-2.28.tar.bz2 tar jxvf binutils-2.28.tar.bz2 mkdir binutils-build cd binutils-build ../binutils-2.28/configure make -j4 make installbootstrap

九、安裝bazel(大坑) 下載地址1:git clone https://github.com/bazelbuild/bazel(很是之慢) 下載地址2:git clone https://github.com/CStzdong/bazel 發現報錯: INFO: You can skip this first step by providing a path to the bazel binary as second argument: INFO:    ./compile.sh compile /path/to/bazel ??  Building Bazel from scratch ERROR: Must specify PROTOC if not bootstrapping from the distribution artifactubuntu

-------------------------------------------------------------------------------- NOTE: This failure is likely occuring if you are trying to bootstrap bazel from a developer checkout. Those checkouts do not include the generated output of the protoc compiler (as we prefer not to version generated files).

* To build a developer version of bazel, do

    bazel build //src:bazel

* To bootstrap your first bazel binary, please download a dist archive from our   release page at https://github.com/bazelbuild/bazel/releases and run   compile.sh on the unpacked archive.

The full install instructions to install a release version of bazel can be found at https://docs.bazel.build/install-compile-source.html For a rationale, why the bootstrap process is organized in this way, see https://bazel.build/designs/2016/10/11/distribution-artifact.html 進入錯誤信息中提到的https://github.com/bazelbuild/bazel/releases網站,選擇最近版本的連接,進去後發現有一堆安裝包。選擇其中的一個直接下載https://github.com/bazelbuild/bazel/releases/download/0.5.3/bazel-0.5.3-installer-linux-x86_64.sh運行安裝成功,執行時報錯: /usr/local/bin/bazel: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.19' not found (required by /usr/local/bin/bazel) 這個錯誤會在下文提到 從新運行./compile.sh 運行到一半報錯 再執行一次,發現兩次運行./compile.sh出現的錯誤不一致!疑似安裝程序bug 嘗試低版本bazel0.5.2,仍出現錯誤 嘗試更低版本0.4.5,下載解壓縮運行./compile.sh後安裝成功!!! 下載地址:https://github.com/bazelbuild/bazel/releases/download/0.4.5/bazel-0.4.5-dist.zip 而後執行: mkdir bazel-0.4.5-dist cd bazel-0.4.5-dist unzip ../bazel-0.4.5-dist.zip ./compile.sh cp ./output/bazel /usr/local/bin(複製bazel的Binary文件至/usr/local/bin,使得全局都能找到該文件)

十、關於手動離線安裝bazel 不建議徹底手動安裝bazel,全程有100多個包的依賴,。,,,,,,

十一、ERROR: Cannot determine JDK version, please set $JAVA_HOME.\n $JAVAC_VERSION is "javac 1.6.0_25" 安裝GCC時若是遇到以上問題,說明java版本太低了(最低須要jdk8) 解決方法:https://jingyan.baidu.com/article/48a42057f238a9a92425042c.html jdk8下載地址:https://pan.baidu.com/s/1kUBT7Vp

十二、手動安裝numpy和scipy 依賴的包: scipy-0.11.0 numpy-1.6.2 nose-1.2.1 lapack-3.4.2 atlas-3.10.0 參考:http://blog.chinaunix.net/uid-22488454-id-3978860.html

1三、pip 若是沒有pip,就到PIP官網下載get-pip.py。 參考連接:http://www.jianshu.com/p/81b648b1d572 最後從python官網下載p3安裝包就行了 若是公司有本身的鏡像,能夠修改pip的配置文件: cd  ~/.pip/pip.conf(若是沒有,就本身建一個;若是不能保存,說明沒有.pip目錄,須要進入~目錄mkdir .pip) 而後加入下面的內容 [global] index-url = XXX trusted-host = pypi.douban.com disable-pip-version-check = true timeout = 120 注:XXX爲國內或企業內部鏡像,國內用https://pypi.douban.com/simple,公司內部就用本身的。

1四、找不到Glibc2.XX(ImportError: /lib64/tls/libc.so.6: version `GLIBC_2.14' not found) glibc是GNU發佈的libc庫,即c運行庫。 glibc是linux系統中最底層的api,幾乎其它任何運行庫都會依賴於glibc。 glibc除了封裝linux操做系統所提供的系統服務外,它自己也提供了許多其它一些必要功能服務的實現。 因而可知,問題的根源是系統不兼容,ubuntu上用的libc 版本較高,而 CentOS 上用的版本過低致使不能執行。。 解決這個問題有三種方法: 第一種:升級Glibc,這個風險很是大,不少時候升完了發現好多東西都不能用了; 第二種:外鏈Glibc,也就是在其餘目錄建一個Glibc,而後添加一個環境變量,這個在網上看貌似是可行的,但我這麼作的時候依然報錯。 第三種:更換linux系統,這個問題不少時候是CentOS安裝tf環境時候形成的,能夠嘗試更換容器

1五、查看glibc支持的版本 strings /lib64/libc.so.6 |grep GLIBC_  (結果通常會顯示只支持到Glibc2.12)

1六、找不到readelf 依據連接http://www.jianshu.com/p/308a4e803c81的說法,先用readelf -s 文件路徑|grep GLIBC_2.14查看so裏到底哪部分依賴了glibc2.14,發現readelf: command not found,沒有readelf命令。。。 (readelf用來顯示一個或多個elf格式的目標文件信息) 依據連接http://pkgs.loginroot.com/errors/notFound/readelf,須要添加環境變量:export PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin"

1七、直接升級glibc(風險比較大) yum install gcc 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  make && make install 須要等大概10分鐘

1八、外鏈安裝Glibc2 下載Glibc2.14: http://ftp.gnu.org/gnu/glibc/或者http://www.gnu.org/software/libc/ 安裝: xz -d  glibc-2.14.tar.xz tar -xvf   glibc-2.14.tar 進入源碼目錄 創建構建目錄,並cd進入構建目錄: cd  glibc-2.14 mkdir build  配置: ../configure --prefix=/opt/glibc-2.14  編譯安裝: make -j4  sudo make install  臨時修改環境變量: LD_LIBRARY_PATH=/opt/glibc-2.14/lib:$LD_LIBRARY_PATH

1九、外鏈安裝致使的嚴重後果 安裝過程當中,由於修改/etc/ld.so.conf文件,ldconfig後致使輸入命令後,連最基本的命令也會報錯: ls ls: error while loading shared libraries: __vdso_time: invalid mode for dlopen(): Invalid argument 解決方法: 千萬不要斷開ssh,否則就遠程不上去了 vi /etc/profile 加入 export LD_LIBRARY_PATH=/usr/lib:/usr/lib64:/lib:/lib64:/usr/local/lib:/usr/local/lib64 連接完了以後,Glibc2的問題是沒有了,但import tensorflow的時候出現 Segmentation fault (core dumped)

20、Segmentation fault (core dumped) 直接強制退出Python了 根據連接https://github.com/tensorflow/tensorflow/issues/8197的解釋,緣由是gcc的版本太低,更新gcc在前文已經提過了。 還有文章提到是scipy和tensorflow衝突 根據http://blog.csdn.net/shouwangzhelv/article/details/51851155提到的解決方案,從新手工編譯了scipy,依然不行。

2一、glibc3找不到(version `GLIBCXX_3.4.21' not found) 參考http://blog.csdn.net/rznice/article/details/51090966 其實和找不到glibc2的性質差很少

2二、glibc: LD_LIBRARY_PATH shouldn't contain the current directory LD_LIBRARY_PATH不能包含當前目錄,須要修改環境變量並從新執行configure echo $LD_LIBRARY_PATH export LD_LIBRARY_PATH= echo $LD_LIBRARY_PATH ./glibc-2.14/configure

2三、輸入全部命令後都沒反應了。。。 由於升級了Glibc,致使系統出問題了,把環境變量改回去就能夠了。

2四、安裝anaconda 參考:http://www.jianshu.com/p/03d757283339 若是機器不能聯網,anaconda基本就廢掉了。。。

若是不能用ananconda,只好本身下載包而後上傳了,單臺機器就rz和sz,多臺機器之間傳文件就scp xxx root@abc:url

BY:YasselBing

相關文章
相關標籤/搜索