1. 程式人生 > >tensorflow安裝調試總結(持續更新)

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

做的 更新 但我 secure 軟件 tar -o cal ipconfig

這段時間需要部署tensorflow到linux上,由於堡壘機不能連外網,所以pip、apt-get、wget、git統統不能用,然後就是各種調試了,下面整理了一些遇到的問題和解決方案,供大家參考(CentOS/Python3.4),有什麽遺漏的問題還望大家補充。

1、Putty、XShell、SecureCRT、SSH Secure Shell Slient的優缺點 現在大多是用的xshell,因為xshell有一款個人免費的,還是中文界面,對於這種四級都是勉強過的,真心不錯。 putty因為太小了,所以常常有很多功能不能滿足。 securecrt在功能上跟xshell(XManager中文版網站)差不多,但是securecrt是英文版的還要收費,所以就果斷拋棄了 SSH Secure Shell Slient,這款軟件使用的不太多,一般使用最多的就是securecrt和xshell了,介於免費的原因,所以推薦使用xshell。

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

3、root身份登錄 ssh [email protected]

4、安裝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 install

5、沒有bizp2 如果沒有bizip,安裝gcc依賴的時候會報錯 解決: 運行yum install -y bzip2安裝bzip2

6、gcc版本不更新 更新完gcc後需要斷開xshell重新連接後再輸入gcc -v才顯示最新版本(不需要修改環境變量)

7、沒有git yum install git-core 要是不能聯網有沒有git都一樣,所有包都需要手動下載

8、安裝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 install

9、安裝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 artifact

-------------------------------------------------------------------------------- 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,使得全局都能找到該文件)

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

11、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

12、手動安裝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

13、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,公司內部就用自己的。

14、找不到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環境時候造成的,可以嘗試更換容器

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

16、找不到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"

17、直接升級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分鐘

18、外鏈安裝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

19、外鏈安裝導致的嚴重後果 安裝過程中,因為修改/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,依然不行。

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

22、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

23、輸入所有命令後都沒反應了。。。 因為升級了Glibc,導致系統出問題了,把環境變量改回去就可以了。

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

如果不能用ananconda,只好自己下載包然後上傳了,單臺機器就rz和sz,多臺機器之間傳文件就scp xxx [email protected]:url

BY:YasselBing

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