Edited at

TensorflowをCentOS7にオフライン環境でインストールする

More than 1 year has passed since last update.

https://www.tensorflow.org/install/install_sources

上記の公式ページを参考にして、すんなりいけると思っていたのですが、意外と苦戦したのでやり方を書きます。

基本的にはインターネットにつながる環境からパッケージをダウンロードしてきて

インターネットにつながらない環境に持ってくるという作業になります。


環境

CentOS Linux release 7.3.1611


事前準備

いくつか必要なパッケージがあるのでインストールします。

すでにあるものは飛ばして大丈夫です。


JDK

後ほど出てくるbazelのインストールに必要となります。

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

公式から落としてきます。

インストール方法はググれば色々出てくるので省略します。


Anaconda

python、jupyter、numpyなどが入ってます。

https://www.anaconda.com/download/

上記サイトからダウンロードします。

インストールはbashコマンドをたたくだけです。

$ bash Anaconda2-5.0.1-Linux-x86_64.sh

.bashrcにインストールしたパスをexportしましょう。


.bashrc

export PATH="<インストールパス>/bin:$PATH"



bazel

Tensorflowのインストールに必要になります。

https://github.com/bazelbuild/bazel/releases

上記サイトから

bazel-0.5.4-without-jdk-installer-linux-x86_64.sh

をダウンロードします。

もしかしたらJDKはインストールしなくてもこちらでjdkありのソースを落としても良かったかもしれません。

筆者はTensorflow1.4をインストールする予定だったのでbazelのバージョンは0.5.4を採用しました。

適宜バージョンはご自身の環境に合わせてインストールしてください。

どのバージョンをインストールするかは下記ページで確認できます。

https://www.tensorflow.org/install/install_sources

インストールはbashコマンドを実行するだけです。

$ bash bazel-0.5.4-without-jdk-installer-linux-x86_64.sh


Tensorflowのインストール

ここからが本番です。

まずは、公式にのっとって、configureします。

$ cd tensorflow

$ ./configure

色々聞かれますが必要に応じてyes/noを選択してください。

公式通り進むと下記コマンドを実行するように聞かれます。

$ bazel build --config=opt //tensorflow/tools/pip_package:build_pip_package

ここでこけます。

内部でインターネットにつなげていろいろパッケージをインストールしようとするためです。

ダウンロード先を管理しているファイルはtensorflowディレクトリの以下にあります。

tensorflow/workspace.bzl

ここのURLを無理やり書き換える操作を行います。

protobuf_archiveを例に記述します。

インターネットにつなげる環境からまずパッケージをダウンロードします。

https://github.com/google/protobuf/archive/b04e5cba356212e4e8c66c61bbe0c3a20537c5b9.tar.gz

適当なディレクトリにおいて、以下コマンドを実行します。

$ python -m SimpleHTTPServer 8000

tensorflow/workspace.bzlの2番目以降のURLを書き換えます。

ここで1番目のURLを書き換えるとエラーになってしまいますので、必ず2番目以降を書き換えてください。

変更前

tf_http_archive(

name = "protobuf_archive",
urls = [
"https://mirror.bazel.build/github.com/google/protobuf/archive/b04e5cba356212e4e8c66c61bbe0c3a20537c5b9.tar.gz",
"https://github.com/google/protobuf/archive/b04e5cba356212e4e8c66c61bbe0c3a20537c5b9.tar.gz",
],

変更後

tf_http_archive(

name = "protobuf_archive",
urls = [
"https://mirror.bazel.build/github.com/google/protobuf/archive/b04e5cba356212e4e8c66c61bbe0c3a20537c5b9.tar.gz",
"http://localhost:8000/b04e5cba356212e4e8c66c61bbe0c3a20537c5b9.tar.gz",
],

これを面倒ですが全ファイル分行います。

たまに存在しないファイルもあるのでそれは無視して大丈夫です。

これで、ビルドが成功するので公式通り下記コマンドを実行します。

$ bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg

最後に、インストールを行います。

$ pip install /tmp/tensorflow_pkg/tensorflow-1.4.0-py2-none-any.whl

ファイル名はインストールした内容によって異なるので各自書き換えてください。

ここでまたしてもこけます。理由は前と同じです。

足りないライブラリは各自でダウンロードしてインストールしてください。

筆者がインストールしたのは以下です。

これもAnacondaやTensorflowのバージョンによっては異なるかもしれません。

Markdown-2.6.10.zip

absl-py-0.1.7.tar.gz
backports.weakref-1.0.post1-py2.py3-none-any.whl
bleach-1.5.0-py2.py3-none-any.whl
html5lib-0.9999999-py2-none-any.whl
mock-2.0.0-py2.py3-none-any.whl
pbr-3.1.1-py2.py3-none-any.whl
protobuf-3.5.1-py2.py3-none-any.whl
tensorflow_tensorboard-0.4.0rc3-py2-none-any.whl

依存関係にあるライブラリもインストールしました。

.whlファイルはpip install *.whlでインストールできます。

tar.gz.zipで圧縮されているファイルは解凍後、

python setup.py installを実行することでインストールされます。

全てインストールした後に再度pip installを実行すると成功です!