CentOS-6.x系统基于python-3.5安装tensorflow-1.4

简介

tensorflow的安装分cpu版本和gpu版本,
这里只讨论cpu版本。

google提供了很多种安装方式,
主要分三种,
一种是pip安装,非常简单,重要的是它在各个平台都是可以用的,包括windows,但是CentOS6需升级glibc和gcc(CXXABI_)版本

第二种是通过docker安装,也差不多是一键安装,内核版本低于3.10不能安装docker,具体的介绍可以看https://github.com/tensorflow/tensorflow/tree/master/tensorflow/tools/docker

最后一种,就是源码编译安装,最麻烦。
Linux系统官方推荐安装在ubuntu-14及以上

本文采用pip安装

编译安装python3.5(tensorflow要求python版本至少是2.7或者3.3)

Linux下默认系统自带python2.6的版本,这个版本被系统很多程序所依赖,所以不建议删除,
如果使用最新的Python3那么我们知道编译安装源码包和系统默认包之间是没有任何影响的,所以可以安装python3和python2共存

1.1 安装编译工具

$ yum install wget gcc automake autoconf libtool make xz

1.2 安装依赖库

$ yum install zlib-devel openssl-devel bzip2-devel

    依赖关系解决
    ===============================================================================================================================================================================================
    软件包                                                架构                                     版本                                              仓库                                    大小
    ===============================================================================================================================================================================================
    正在安装:
    bzip2-devel                                           x86_64                                   1.0.5-7.el6_0                                     base                                   250 k
    openssl-devel                                         x86_64                                   1.0.1e-57.el6                                     base                                   1.2 M
    zlib-devel                                            x86_64                                   1.2.3-29.el6                                      base                                    44 k
    为依赖而安装:
    keyutils-libs-devel                                   x86_64                                   1.4-5.el6                                         base                                    29 k
    krb5-devel                                            x86_64                                   1.10.3-65.el6                                     base                                   504 k
    libcom_err-devel                                      x86_64                                   1.41.12-23.el6                                    base                                    33 k
    libkadm5                                              x86_64                                   1.10.3-65.el6                                     base                                   143 k
    libselinux-devel                                      x86_64                                   2.0.94-7.el6                                      base                                   137 k
    libsepol-devel                                        x86_64                                   2.0.41-4.el6                                      base                                    64 k
    为依赖而更新:
    e2fsprogs                                             x86_64                                   1.41.12-23.el6                                    base                                   554 k
    e2fsprogs-libs                                        x86_64                                   1.41.12-23.el6                                    base                                   121 k
    krb5-libs                                             x86_64                                   1.10.3-65.el6                                     base                                   675 k
    libcom_err                                            x86_64                                   1.41.12-23.el6                                    base                                    38 k
    libss                                                 x86_64                                   1.41.12-23.el6                                    base                                    42 k
    openssl                                               x86_64                                   1.0.1e-57.el6                                     base                                   1.5 M

    事务概要
    ===============================================================================================================================================================================================

$ yum install -y tkinter tk-devel tk        # 在Linux中python默认是不安装Tkinter模块,matplotlib依赖Tkinter模块
    依赖关系解决

    ===============================================================================================================================================================================================
     软件包                                                 架构                                     版本                                             仓库                                    大小
    ===============================================================================================================================================================================================
    正在安装:
     tk                                                     x86_64                                   1:8.5.7-5.el6                                    base                                   1.4 M
     tk-devel                                               x86_64                                   1:8.5.7-5.el6                                    base                                   496 k
     tkinter                                                x86_64                                   2.6.6-66.el6_8                                   base                                   258 k
    为依赖而安装:
     fontconfig-devel                                       x86_64                                   2.8.0-5.el6                                      base                                   209 k
     freetype-devel                                         x86_64                                   2.3.11-17.el6                                    base                                   365 k
     libX11-devel                                           x86_64                                   1.6.4-3.el6                                      base                                   983 k
     libXau-devel                                           x86_64                                   1.0.6-4.el6                                      base                                    14 k
     libXft-devel                                           x86_64                                   2.3.2-1.el6                                      base                                    19 k
     libXrender-devel                                       x86_64                                   0.9.10-1.el6                                     base                                    17 k
     libxcb-devel                                           x86_64                                   1.12-4.el6                                       base                                   1.1 M
     tcl                                                    x86_64                                   1:8.5.7-6.el6                                    base                                   1.9 M
     tcl-devel                                              x86_64                                   1:8.5.7-6.el6                                    base                                   162 k
     tix                                                    x86_64                                   1:8.4.3-5.el6                                    base                                   252 k
     xorg-x11-proto-devel                                   noarch                                   7.7-14.el6                                       base                                   288 k
    为依赖而更新:
     libX11                                                 x86_64                                   1.6.4-3.el6                                      base                                   587 k
     libX11-common                                          noarch                                   1.6.4-3.el6                                      base                                   171 k
     libXrender                                             x86_64                                   0.9.10-1.el6                                     base                                    24 k
     libxcb                                                 x86_64                                   1.12-4.el6                                       base                                   180 k
     python                                                 x86_64                                   2.6.6-66.el6_8                                   base                                    76 k
     python-libs                                            x86_64                                   2.6.6-66.el6_8                                   base                                   5.3 M

    事务概要
    ===============================================================================================================================================================================================
    Install      14 Package(s)
    Upgrade       6 Package(s)

$ yum install readline-devel.x86_64             #解决python3退格功能
    依赖关系解决

    ================================================================================================================================================================================================
     软件包                                           架构                                     版本                                                    仓库                                    大小
    ================================================================================================================================================================================================
    正在安装:
     readline-devel                                   x86_64                                   6.0-4.el6                                               base                                   134 k
    为依赖而安装:
     ncurses-devel                                    x86_64                                   5.7-4.20090207.el6                                      base                                   641 k

    事务概要
    ================================================================================================================================================================================================
    Install       2 Package(s)

1.3 编译安装

$ wget https://www.python.org/ftp/python/3.5.4/Python-3.5.4.tar.xz
$ tar xf Python-3.5.4.tar.xz
$ cd Python-3.5.4
$ ./configure --enable-unicode=ucs2 --enable-shared         // --enable-optimizations 
$echo $?
0
$ make && make install
    Collecting setuptools
    Collecting pip
    Installing collected packages: setuptools,pip
    Successfully installed pip-9.0.1 setuptools-28.8.0
$echo $?
0
如果提示:Ignoring ensurepip failure: pip 8.1.1 requires SSL/TLS;原因没有安装或升级oenssl:

$ echo -e "/usr/local/lib/\n/usr/local/lib64/" > /etc/ld.so.conf.d/local-lib-x86_64.conf
$ ldconfig  
$ python3 -V
Python 3.5.4
$ pip3 -V           #或:pip -V   强烈建议使用8.1或更高版本的pip或pip3
pip 9.0.1 from /usr/local/lib/python3.5/site-packages (python 3.5)
$ which pip3
/usr/local/bin/pip3
升级pip
$ python3 -m pip install -U pip
Requirement already up-to-date: pip in /usr/local/lib/python3.5/site-packages

如果发现没有安装pip,请单独安装pip:
$ wget https://link.jianshu.com/?t=https://bootstrap.pypa.io/get-pip.py
$ mv index.html\?t\=https\:%2F%2Fbootstrap.pypa.io%2Fget-pip.py get-pip.py
$ python3 get-pip.py

2 安装tensorflow

2.1 安装tensorflow

$ pip3 install tensorflow-gpu   #Python 3.n; GPU支持(须有英伟达显卡)
$ pip3 install tensorflow       #Python 3.n; CPU支持(不支持GPU)
    Collecting tensorflow
      Downloading tensorflow-1.4.0-cp35-cp35m-manylinux1_x86_64.whl (40.7MB)
        100% |████████████████████████████████| 40.7MB 7.8kB/s
    Collecting numpy>=1.12.1 (from tensorflow)
      Downloading numpy-1.13.3-cp35-cp35m-manylinux1_x86_64.whl (16.9MB)
        100% |████████████████████████████████| 16.9MB 9.1kB/s
    Collecting six>=1.10.0 (from tensorflow)
      Downloading six-1.11.0-py2.py3-none-any.whl
    Collecting protobuf>=3.3.0 (from tensorflow)
      Downloading protobuf-3.5.0.post1-cp35-cp35m-manylinux1_x86_64.whl (6.4MB)
        100% |████████████████████████████████| 6.4MB 11kB/s
    Collecting wheel>=0.26 (from tensorflow)
      Downloading wheel-0.30.0-py2.py3-none-any.whl (49kB)
        100% |████████████████████████████████| 51kB 36kB/s
    Collecting tensorflow-tensorboard<0.5.0,>=0.4.0rc1 (from tensorflow)
      Downloading tensorflow_tensorboard-0.4.0rc3-py3-none-any.whl (1.7MB)
        100% |████████████████████████████████| 1.7MB 14kB/s
    Collecting enum34>=1.1.6 (from tensorflow)
      Downloading enum34-1.1.6-py3-none-any.whl
    Requirement already satisfied: setuptools in /usr/local/lib/python3.5/site-packages (from protobuf>=3.3.0->tensorflow)
    Collecting markdown>=2.6.8 (from tensorflow-tensorboard<0.5.0,>=0.4.0rc1->tensorflow)
      Downloading Markdown-2.6.9.tar.gz (271kB)
        100% |████████████████████████████████| 276kB 23kB/s
    Collecting bleach==1.5.0 (from tensorflow-tensorboard<0.5.0,>=0.4.0rc1->tensorflow)
      Downloading bleach-1.5.0-py2.py3-none-any.whl
    Collecting html5lib==0.9999999 (from tensorflow-tensorboard<0.5.0,>=0.4.0rc1->tensorflow)
      Downloading html5lib-0.9999999.tar.gz (889kB)
        100% |████████████████████████████████| 890kB 18kB/s
    Collecting werkzeug>=0.11.10 (from tensorflow-tensorboard<0.5.0,>=0.4.0rc1->tensorflow)
      Downloading Werkzeug-0.12.2-py2.py3-none-any.whl (312kB)
        100% |████████████████████████████████| 317kB 18kB/s
    Installing collected packages: numpy,six,protobuf,wheel,markdown,html5lib,bleach,werkzeug,tensorflow-tensorboard,enum34,tensorflow
      Running setup.py install for markdown ... done
      Running setup.py install for html5lib ... done
    Successfully installed bleach-1.5.0 enum34-1.1.6 html5lib-0.9999999 markdown-2.6.9 numpy-1.13.3 protobuf-3.5.0.post1 six-1.11.0 tensorflow-1.4.0 tensorflow-tensorboard-0.4.0rc3 werkzeug-0.12.2 wheel-0.30.0

2.2 卸载TensorFlow # 重装时使用

$ pip3 uninstall tensorflow     # for Python 3.n

2.3 安装附属包

$ pip3 install matplotlib
    Collecting matplotlib
      Downloading matplotlib-2.1.0-cp35-cp35m-manylinux1_x86_64.whl (15.0MB)
        100% |████████████████████████████████| 15.0MB 13kB/s
    Collecting pytz (from matplotlib)
      Downloading pytz-2017.3-py2.py3-none-any.whl (511kB)
        100% |████████████████████████████████| 512kB 37kB/s
    Requirement already satisfied: six>=1.10 in /usr/local/lib/python3.5/site-packages (from matplotlib)
    Collecting python-dateutil>=2.0 (from matplotlib)
      Downloading python_dateutil-2.6.1-py2.py3-none-any.whl (194kB)
        100% |████████████████████████████████| 194kB 41kB/s
    Collecting pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 (from matplotlib)
      Downloading pyparsing-2.2.0-py2.py3-none-any.whl (56kB)
        100% |████████████████████████████████| 61kB 24kB/s
    Requirement already satisfied: numpy>=1.7.1 in /usr/local/lib/python3.5/site-packages (from matplotlib)
    Collecting cycler>=0.10 (from matplotlib)
      Downloading cycler-0.10.0-py2.py3-none-any.whl
    Installing collected packages: pytz,python-dateutil,pyparsing,cycler,matplotlib
    Successfully installed cycler-0.10.0 matplotlib-2.1.0 pyparsing-2.2.0 python-dateutil-2.6.1 pytz-2017.3

$ pip3  install Pillow
    Collecting Pillow
      Downloading Pillow-4.3.0-cp35-cp35m-manylinux1_x86_64.whl (5.8MB)
        100% |████████████████████████████████| 5.8MB 10kB/s
    Collecting olefile (from Pillow)
      Downloading olefile-0.44.zip (74kB)
        100% |████████████████████████████████| 81kB 15kB/s
    Building wheels for collected packages: olefile
      Running setup.py bdist_wheel for olefile ... done
      Stored in directory: /root/.cache/pip/wheels/20/58/49/cc7bd00345397059149a10b0259ef38b867935ea2ecff99a9b
    Successfully built olefile
    Installing collected packages: olefile,Pillow
    Successfully installed Pillow-4.3.0 olefile-0.44

2.4 需安装的包

bleach-1.5.0 
enum34-1.1.6 
html5lib-0.9999999 
markdown-2.6.9 
numpy-1.13.3                        # TensorFlow要求的数字处理软件包。
protobuf-3.5.0.post1 
six-1.11.0 
tensorflow-1.4.0 
tensorflow-tensorboard-0.4.0rc3 
werkzeug-0.12.2 
wheel-0.30.0                        # 管理(.whl)格式的Python压缩包。

Pillow-4.3.0 
olefile-0.44

cycler-0.10.0 
matplotlib-2.1.0 
pyparsing-2.2.0 
python-dateutil-2.6.1 
pytz-2017.3

dev-0.4.0                           # 添加Python的扩展。
pip3-9.0.1                          # 安装和管理某些Python包。
注:如果无法在线安装,请到https://www.pypi-mirrors.org/上的网址下载,
例如http://pypi.pubyun.com/simple/    ;http://mirrors.163.com/pypi/simple等等

3 编译升级GLIBC到2.17(glibc>=2.16)

由于centos6.x上glibc最多到2.12,而强行使用高版本的glibc会导致程序意外崩溃,因此,我们采用本机源码编译安装。
$ strings /lib64/libc.so.6 |grep GLIBC      #查看当前glibc支持的版本
    GLIBC_2.2.5
    GLIBC_2.2.6
    GLIBC_2.3
    GLIBC_2.3.2
    GLIBC_2.3.3
    GLIBC_2.3.4
    GLIBC_2.4
    GLIBC_2.5
    GLIBC_2.6
    GLIBC_2.7
    GLIBC_2.8
    GLIBC_2.9
    GLIBC_2.10
    GLIBC_2.11
    GLIBC_2.12
    GLIBC_PRIVATE
$ wget http://ftp.gnu.org/gnu/libc/glibc-2.17.tar.gz
$ tar -zxvf glibc-2.17.tar.gz && cd glibc-2.17
$ mkdir build && cd build
$ ../configure  --prefix=/usr --with-headers=/usr/include --with-binutils=/usr/bin
$ make && make install
$ strings /lib64/libc.so.6 |grep GLIBC
    GLIBC_2.2.5
    GLIBC_2.2.6
    GLIBC_2.3
    GLIBC_2.3.2
    GLIBC_2.3.3
    GLIBC_2.3.4
    GLIBC_2.4
    GLIBC_2.5
    GLIBC_2.6
    GLIBC_2.7
    GLIBC_2.8
    GLIBC_2.9
    GLIBC_2.10
    GLIBC_2.11
    GLIBC_2.12
    GLIBC_2.13
    GLIBC_2.14
    GLIBC_2.15
    GLIBC_2.16
    GLIBC_2.17
    GLIBC_PRIVATE

4 编译升级GCC到4.8.3(因为需要用到CXXABI_1.3.7,所以要求gcc版本大于4.8)

$ yum install bzip2 gcc-c++
$ wget http://ftp.gnu.org/gnu/gcc/gcc-4.8.3/gcc-4.8.3.tar.gz
$ tar -zxvf gcc-4.8.3.tar.gz
$ cd gcc-4.8.3
$ ./contrib/download_prerequisites  # 脚本文件会帮我们下载、配置、安装依赖库
    注:如果服务器无法连接外网,需单独下载这三个包到当前目录下,解压,并做链接;
    $ wget ftp://gcc.gnu.org/pub/gcc/infrastructure/mpfr-2.4.2.tar.bz2
    $ wget ftp://gcc.gnu.org/pub/gcc/infrastructure/gmp-4.3.2.tar.bz2
    $ wget ftp://gcc.gnu.org/pub/gcc/infrastructure/mpc-0.8.1.tar.gz
    $ tar xf mpfr-2.4.2.tar.bz2
    $ tar xf gmp-4.3.2.tar.bz2
    $ tar xf mpc-0.8.1.tar.gz
    $ ln -s mpc-0.8.1 mpc
    $ ln -s mpfr-2.4.2 mpfr
    $ ln -s gmp-4.3.2 gmp

    $ll gmp*  mpc* mpfr* -d
        lrwxrwxrwx  1 root root     9 12月  7 15:23 gmp -> gmp-4.3.2
        drwxrwxrwx 15 1001 wheel 4096 1月   8 2010 gmp-4.3.2
        lrwxrwxrwx  1 root root     9 12月  7 15:23 mpc -> mpc-0.8.1
        drwxrwxrwx  5 1000  1000 4096 12月  8 2009 mpc-0.8.1
        lrwxrwxrwx  1 root root    10 12月  7 15:23 mpfr -> mpfr-2.4.2
        drwxrwxrwx  5 1114  1114 8192 11月 30 2009 mpfr-2.4.2

$ mkdir build && cd build
$ ../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
$ make && make install      # 测试时make相当慢,大概走了3个小时,一般服务器30分钟
$ gcc -v                    # 不需要修改环境变量
    使用内建 specs。
    COLLECT_GCC=gcc
    COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-unknown-linux-gnu/4.8.3/lto-wrapper
    目标:x86_64-unknown-linux-gnu
    配置为:../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
    线程模型:posix
    gcc 版本 4.8.3 (GCC)

$ echo -e "/usr/local/lib\n/usr/local/lib64"  >/etc/ld.so.conf.d/local_libs.conf
$ ldconfig
  如果报:ldconfig: /usr/local/lib64/libstdc++.so.6.0.19-gdb.py 不是 ELF 文件 - 它起始的魔数错误。
          ldconfig: /usr/local/lib64/libstdc++.so.6.0.19-gdb.py is not an ELF file - it has the wrong magic bytes at the start.
    $ mv /usr/local/lib64/{,bak_}libstdc++.so.6.0.19-gdb.py         #改名
    $ ldconfig

修改libstdc++.so.6的链接:
$ rm -f /usr/lib64/libstdc++.so.6
$ cp -a /usr/local/lib64/libstdc++.so.6.0.19 /usr/lib64/
$ ln -s /usr/lib64/libstdc++.so.6.0.19 /usr/lib64/libstdc++.so.6
$ strings /usr/lib64/libstdc++.so.6 |grep CXXABI_
CXXABI_1.3
CXXABI_1.3.1
CXXABI_1.3.2
CXXABI_1.3.3
CXXABI_1.3.4
CXXABI_1.3.5
CXXABI_1.3.6
CXXABI_1.3.7
CXXABI_TM_1

5 测试TensorFlow

$ python3                       #验证
>>> import tensorflow as tf
>>> hello = tf.constant('Hello,TensorFlow!')
>>> sess = tf.Session()
>>> print(sess.run(hello))
Hello,TensorFlow!

$ python3
>>> import tensorflow as tf
>>> a = tf.constant(10)
>>> b = tf.constant(32)
>>> print(sess.run(a + b))
42

$ python3
>>> import tensorflow as tf
>>> import os
>>> import shutil
>>> import numpy as np
>>> from PIL import Image
>>> import matplotlib.pyplot as plt
>>>

6 参考

http://blog.csdn.net/numen27/article/details/75332833
http://www.jianshu.com/p/fdb7b54b616e
http://blog.csdn.net/lenbow/article/details/51203526#1
https://www.tensorflow.org/install/install_linux    #需×××

7 安装bazel(源码安装时的编译器)不做

7.1 安装JDK1.8

google使用bazel构建tensorflow,因此我们需要编译之。首先安装64位jdk1.8,因为bazel需要java8来编译,
上传JDK1.8(jdk-8u66-linux-x64.tar.gz)安装包到/data/tools、
$ tar xf jdk-8u66-linux-x64.tar.gz
$ vim /etc/profile.d/java.sh
    export JAVA_HOME=/data/tools/jdk1.8.0_66
    export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
    export CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib
$ source /etc/profile.d/java_pwdx_grep.sh
$ java -version
java version "1.8.0_66"
java(TM) SE Runtime Environment (build 1.8.0_66-b17)
java HotSpot(TM) 64-Bit Server VM (build 25.66-b17,mixed mode)

7.2 编译bazel

$ git clone https://github.com/bazelbuild/bazel.git
$ cd bazel
$ git checkout -b dev 0.8.0
$ ./compile.sh

8 报错总结

8.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环境时候造成的,可以尝试更换容器

8.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

8.3 直接升级glibc(风险比较大)

yum install gcc
wget http://ftp.gnu.org/pub/gnu/glibc/glibc-2.17.tar.xz
tar -xvf glibc-2.17.tar.xz
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分钟

8.4 外链安装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

8.5 外链安装导致的严重后果

安装过程中,因为修改/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)

8.6 输入所有命令后都没反应了。。。

因为升级了Glibc,导致系统出问题了,把环境变量改回去就可以了。

8.7 glibc3找不到(version `GLIBCXX_3.4.21' not found)

参考http://blog.csdn.net/rznice/article/details/51090966
其实和找不到glibc2的性质差不多
strings /usr/lib64/libstdc++.so.6.0.13  |grep GLIBC

8.8 没有git

yum install git-core
要是不能联网有没有git都一样,所有包都需要手动下载

8.9 安**inutils

从以下目录下载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

8.10 安**azel(大坑)

下载地址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,使得全局都能找到该文件)

8.11 关于手动离线安**azel

不建议完全手动安**azel,全程有100多个包的依赖,。,,,,,,

8.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

8.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,公司内部就用自己的。

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

8.15 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,依然不行。

8.16 安装anaconda

参考:http://www.jianshu.com/p/03d757283339
如果机器不能联网,anaconda基本就废掉了。。。
如果不能用ananconda,只好自己下载包然后上传了,单台机器就rz和sz,多台机器之间传文件就scp xxx root@abc:url

8.17 在centos系统下,导入matplotlib时,出现ImportError: No module named '_tkinter'的错误,

首先yum list installed | grep ^tk     ;查看是否存在相应模块,通常原因是tkinter和tk-devel缺失。
通过yum install -y tkinter和yum install -y tk-devel下载相应模块,再重新编译Python即可。
或者编译python的时候选择添加参数--enable-unicode=ucs2
$ python3
>>> import matplotlib.pyplot as plt
Traceback (most recent call last):
  File "<stdin>",line 1,in <module>
  File "/usr/local/lib/python3.5/site-packages/matplotlib/pyplot.py",line 113,in <module>
    _backend_mod,new_figure_manager,draw_if_interactive,_show = pylab_setup()
  File "/usr/local/lib/python3.5/site-packages/matplotlib/backends/__init__.py",line 60,in pylab_setup
    [backend_name],0)
  File "/usr/local/lib/python3.5/site-packages/matplotlib/backends/backend_tkagg.py",line 6,in <module>
    from six.moves import tkinter as Tk
  File "/usr/local/lib/python3.5/site-packages/six.py",line 92,in __get__
    result = self._resolve()
  File "/usr/local/lib/python3.5/site-packages/six.py",line 115,in _resolve
    return _import_module(self.mod)
  File "/usr/local/lib/python3.5/site-packages/six.py",line 82,in _import_module
    __import__(name)
  File "/usr/local/lib/python3.5/tkinter/__init__.py",line 35,in <module>
    import _tkinter # If this fails your Python may not be configured for Tk
ImportError: No module named '_tkinter'
或者参照:http://www.qttc.net/201304306.html
正确安装新版Python(在Linux中python默认是不安装Tkinter模块,)
    1 首先修改Setup.dist文件
    $ cd Python-3.5.4
    $ cp Modules/Setup.dist{,_$(date +%F)}
    $ vim Modules/Setup.dist        # 把下面相应行的注释去掉,修改具体版本
    _tkinter _tkinter.c tkappinit.c -DWITH_APPINIT \
    -L/usr/local/lib \
    -I/usr/local/include \
    -ltk8.5 -ltcl8.5 \
    -lX11

    以上第四行-ltk8.5 -ltcl8.5 默认是 8.2 ,请你系统实际tcl/tk版本修改:我系统中装的是8.5,所以这里我改成了8.5
    $ rpm -qa | grep ^tk
    tk-8.5.7-5.el6.x86_64
    tk-devel-8.5.7-5.el6.x86_64
    tkinter-2.6.6-66.el6_8.x86_64

    $ rpm -qa | grep ^tcl
    tcl-8.5.7-6.el6.x86_64
    tcl-devel-8.5.7-6.el6.x86_64

    2 安装tck-devel、tk-devel
    $ yum install tcl-devel tk-devel -y

    3 开始配置安装python
    $ ldconfig
    $ ./configure
    $ make && make install 

    4 验证
    新版Python是否可以使用tkinter模块
    $ python3
    >>> import tkinter
    >>>

    旧版Python是否可以使用tkinter模块 
    $ python
    >>> import Tkinter
    >>>

8.18 升级gcc完,把/usr/local/lib*添加到系统动态链接库:echo -e "/usr/local/lib\n/usr/local/lib64" >/etc/ld.so.conf.d/local_lib.conf后,

执行ldconfig报错:ldconfig: /usr/local/lib64/libstdc++.so.6.0.19-gdb.py is not an ELF file - it has the wrong magic bytes at the start.
    不是 ELF 文件 - 它起始的魔数错误。

9 Pytesseract安装

File "<string>",in <module>
ImportError: No module named numpy.distutils
-- Found PythonInterp: /usr/local/bin/python3 (found suitable version "3.5.4",minimum required is "3.4") 
-- Found PythonLibs: /usr/local/lib/libpython3.5m.so (found suitable exact version "3.5.4") 
-- Found JNI: /usr/java/jdk1.8.0_66/jre/lib/amd64/libjawt.so  
-- Could NOT find Matlab (missing:  MATLAB_MEX_SCRIPT MATLAB_INCLUDE_DIRS MATLAB_ROOT_DIR MATLAB_LIBRARIES MATLAB_LIBRARY_DIRS MATLAB_MEXEXT MATLAB_ARCH MATLAB_BIN) 
-- VTK is not found. Please set -DVTK_DIR in CMake to VTK build directory,or to VTK install subdirectory with VTKConfig.cmake file

 pytesseract

    Collecting pytesseract
    Downloading pytesseract-0.1.7.tar.gz (150kB)
    100% |████████████████████████████████| 153kB 470kB/s 
    Collecting Pillow (from pytesseract)
    Downloading Pillow-4.3.0-cp35-cp35m-manylinux1_x86_64.whl (5.8MB)
    100% |████████████████████████████████| 5.8MB 73kB/s 
    Collecting olefile (from Pillow->pytesseract)
    Downloading olefile-0.44.zip (74kB)
    100% |████████████████████████████████| 81kB 95kB/s 
 安装这三个依赖包
    tar -xvf pytesseract-0.1.7.tar.gz
    cd pytesseract-0.1.7.tar.gz
    python3 setup.py install

    pip3 install  Pillow-4.3.0-cp35-cp35m-manylinux1_x86_64.whl

    unzip olefile-0.44.zip
    cd  olefile-0.44.zip
    python3 setup.py install
参考:
    https://m.2cto.com/kf/201610/557136.html
    http://techieroop.com/install-opencv-in-centos/ 
    http://blog.csdn.net/zl18310999566/article/details/77880862

10 Tesseract-OCR 安装

1、安装编译环境:

yum install gcc gcc-c++ make
    yum groupinstall "Development Tools"
    yum install autoconf automake libtool
    yum install libjpeg-devel libpng-devel libtiff-devel zlib-devel

2、下载编译依赖库

3.04
    版本tar -xvf leptonica-1.72.tar.gz
    cd leptonica-1.72
    ./configure && make && make install

3、下载编译 tesseract-ocr (注意这里下载下来的包要放在leptonica-1.72 下,否则编译的时候会出问题)

3.04版本
    mv 3.04.00.tar.gz Tesseract3.04.00.tar.gz
    tar -xvf Tesseract3.04.00.tar.gz
    cd tesseract-3.04.00/
    ./autogen.sh
    ./configure

    make && make install

4、下载识别字体的字体文件

3.04版本
    wget --no-check-certificate https://github.com/tesseract-ocr/tessdata/raw/master/eng.traineddata

    wget --no-check-certificate https://github.com/tesseract-ocr/tessdata/raw/master/chi_sim.traineddata

    下载这两个语言识别包eng.traineddata,chi_sim.traineddata

5、将tesseract-ocr的字体文件拷贝到/usr/local/share/tessdata/下

cp *.traineddata /usr/local/share/tessdata/

6、配置字体文件的环境变量 vi /etc/profile (编译完成后需要source/etc/profile )

export TESSDATA_PREFIX=/usr/local/share/

7、拷贝.so文件

cp /usr/local/lib/*.so.* /usr/lib64/

END

相关文章

linux下开机自启: 在/etc/init.d目录下新建文件elasticsear...
1、因为在centos7中/etc/rc.d/rc.local的权限被降低了,所以...
最简单的查看方法可以使用ls -ll、ls-lh命令进行查看,当使用...
ASP.NET Core应用程序发布linux在shell中运行是正常的。可一...
设置时区(CentOS 7) 先执行命令timedatectl status|grep &...
vim&#160;/etc/sysconfig/network-scripts/ifcfg-eth0 B...