在Linux 之redhat/debian两类系统上源码成功安装tensorflow填坑记录
1. 预备工作:
1.1 各类依赖
无论是redhat系/centos还是debian系/ubuntu,都需要安装各类依赖库
不能使用openjdk,必须使用oracle官方的jdk1.8.0
centos上yum或者rpm安装如下各类以来
yum -y install gcc
yum -y install gcc-c++
yum -y install numpy swig Python-devel python-wheel
//python-wheel 用的是rpm包,如上命令无法搜到wheel库源
yum -y install zlib zlib-devel
安装pip 用的是rpm包
1.2可用分支选择
bazel用的是master分支。也可以采用0.3.2/0.4.0.
tensorflow用的是r0.10分支。 r0.11/master分支有很多问题,主要是./configure 有一些包的地址无法下载成功。
2. bazel 安装
源码安装bazel,使用./compile.sh 安装即可。 各类依赖安装完成的情况下,centos和ubuntu上都没有遇到编译问题。
3. tensorflow build及install过程
3.1 r0.11需要修复如下两个问题,解决testonly报错和jpegsrc.v9a.tar.gz下载失败问题。
diff --git a/tensorflow/python/BUILD b/tensorflow/python/BUILD
index 5e2621c..b28260e 100644
--- a/tensorflow/python/BUILD
+++ b/tensorflow/python/BUILD
@@ -1190,7 +1190,7 @@ py_library(
# Just used by tests.
tf_cuda_library(
name = "construction_fails_op",
- testonly = 1,
+ #testonly = 1,
srcs = ["client/test_construction_fails_op.cc"],
deps = [
"//tensorflow/core",
diff --git a/tensorflow/workspace.bzl b/tensorflow/workspace.bzl
index d917562..1ddce3c 100644
--- a/tensorflow/workspace.bzl
+++ b/tensorflow/workspace.bzl
@@ -54,8 +54,9 @@ def tf_workspace(path_prefix = "", tf_repo_name = ""):
native.new_http_archive(
name = "jpeg_archive",
- url = "http://www.ijg.org/files/jpegsrc.v9a.tar.gz",
- sha256 = "3a753ea48d917945dd54a2d97de388aa06ca2eb1066cbfdc6652036349fe05a7",
+ #url = "http://www.ijg.org/files/jpegsrc.v9a.tar.gz",
+ url = "http://www.imagemagick.org/download/delegates/jpegsrc.v9a.tar.gz",
+ sha256 = "3a753ea48d917945dd54a2d97de388aa06ca2eb1066cbfdc6652036349fe05a7",
build_file = path_prefix + "jpeg.BUILD",
3.2 build过程
网速是影响build的关键因素,build脚本不会长时间等待各类包的下载重新连接过错。
反复尝试几次编译,解决了three.js-r77.tar.gz下载问题。主要是境外网站源的网速不好把握,换个时段会表现较好。
//在ubuntu上,按照默认的job数目200进行build发生了卡死现象。 在centos上docker编译没有遇到此问题。
$ bazel build -c opt //tensorflow/tools/pip_package:build_pip_package
//指定job数目为1,问题解决。
$ bazel build -c opt --job 1 //tensorflow/tools/pip_package:build_pip_package
pip打包whl
$ bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
//pip 安装如下
# The name of the .whl file will depend on your platform.
$ sudo pip install /tmp/tensorflow_pkg/tensorflow-0.11.0-py2-none-any.whl
//python tensorflow/models/image/mnist/convolutional.py, 报错如下。 在centos上docker编译没有遇到此问题。
import tensorflow as tf ImportError: No module named tensorflow
//制定pip安装的绝对路径,让python能够包含进tensorflow库,问题解决。
python -m pip install /path/to/tensorflow-version-platform.whl
1. 预备工作:
1.1 各类依赖
无论是redhat系/centos还是debian系/ubuntu,都需要安装各类依赖库
不能使用openjdk,必须使用oracle官方的jdk1.8.0
centos上yum或者rpm安装如下各类以来
yum -y install gcc
yum -y install gcc-c++
yum -y install numpy swig Python-devel python-wheel
//python-wheel 用的是rpm包,如上命令无法搜到wheel库源
yum -y install zlib zlib-devel
安装pip 用的是rpm包
1.2可用分支选择
bazel用的是master分支。也可以采用0.3.2/0.4.0.
tensorflow用的是r0.10分支。 r0.11/master分支有很多问题,主要是./configure 有一些包的地址无法下载成功。
2. bazel 安装
源码安装bazel,使用./compile.sh 安装即可。 各类依赖安装完成的情况下,centos和ubuntu上都没有遇到编译问题。
3. tensorflow build及install过程
3.1 r0.11需要修复如下两个问题,解决testonly报错和jpegsrc.v9a.tar.gz下载失败问题。
diff --git a/tensorflow/python/BUILD b/tensorflow/python/BUILD
index 5e2621c..b28260e 100644
--- a/tensorflow/python/BUILD
+++ b/tensorflow/python/BUILD
@@ -1190,7 +1190,7 @@ py_library(
# Just used by tests.
tf_cuda_library(
name = "construction_fails_op",
- testonly = 1,
+ #testonly = 1,
srcs = ["client/test_construction_fails_op.cc"],
deps = [
"//tensorflow/core",
diff --git a/tensorflow/workspace.bzl b/tensorflow/workspace.bzl
index d917562..1ddce3c 100644
--- a/tensorflow/workspace.bzl
+++ b/tensorflow/workspace.bzl
@@ -54,8 +54,9 @@ def tf_workspace(path_prefix = "", tf_repo_name = ""):
native.new_http_archive(
name = "jpeg_archive",
- url = "http://www.ijg.org/files/jpegsrc.v9a.tar.gz",
- sha256 = "3a753ea48d917945dd54a2d97de388aa06ca2eb1066cbfdc6652036349fe05a7",
+ #url = "http://www.ijg.org/files/jpegsrc.v9a.tar.gz",
+ url = "http://www.imagemagick.org/download/delegates/jpegsrc.v9a.tar.gz",
+ sha256 = "3a753ea48d917945dd54a2d97de388aa06ca2eb1066cbfdc6652036349fe05a7",
build_file = path_prefix + "jpeg.BUILD",
3.2 build过程
网速是影响build的关键因素,build脚本不会长时间等待各类包的下载重新连接过错。
反复尝试几次编译,解决了three.js-r77.tar.gz下载问题。主要是境外网站源的网速不好把握,换个时段会表现较好。
//在ubuntu上,按照默认的job数目200进行build发生了卡死现象。 在centos上docker编译没有遇到此问题。
$ bazel build -c opt //tensorflow/tools/pip_package:build_pip_package
//指定job数目为1,问题解决。
$ bazel build -c opt --job 1 //tensorflow/tools/pip_package:build_pip_package
pip打包whl
$ bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
//pip 安装如下
# The name of the .whl file will depend on your platform.
$ sudo pip install /tmp/tensorflow_pkg/tensorflow-0.11.0-py2-none-any.whl
//python tensorflow/models/image/mnist/convolutional.py, 报错如下。 在centos上docker编译没有遇到此问题。
import tensorflow as tf ImportError: No module named tensorflow
//制定pip安装的绝对路径,让python能够包含进tensorflow库,问题解决。
python -m pip install /path/to/tensorflow-version-platform.whl