在 CentOS 6.9 上安裝 Tensorflow(GCC、GLIBC 和 binutils 問題)
我在 CentOS 6.9 上安裝 Tensorflow 時遇到了巨大的麻煩。
我嘗試按照使用 Anaconda3 在 CentOS 上安裝 Tensorflow 的說明進行操作(自然是 Python 3,確切地說是 Python 3.5.3)。除 Tensorflow 外,大多數軟體包都已正確安裝。我必須將 GCC 版本從 4.4.7 升級到 6.3.0 才能安裝一些軟體包,但 Python 螢幕上仍然顯示 4.4.7。
無論如何,我確實按照說明安裝了 Tensorflow,只是無法使用它,因為它會拋出此消息
ImportError: /lib64/libc.so.6: version 'GLIBC_2.14' not found (required by /home/k/anaconda3/envs/h/lib/python3.5/site-packages/tensorflow/python/_pywrap_tensorflow.so)
。所以我嘗試將 GLIBC 升級到比 2.14 更新,所以我將 binutils 升級到 2.25,因為 binutils 2.20 不會執行較新的 GLIBC 文件之一的配置。但是,我在配置 GLIBC 時遇到了另一個問題,它是過時的 Linux 版本。當我有 Linux 2.6 時,它需要 Linux 3.2.0。
這是我的約束。
- 我無法更改 Linux 版本。它是一台伺服器機器,我必須在 CentOS 6.9 Linux 上。
這些是我想問大家的問題:
- 我很想將我的 GCC 版本從 6.3.0 更改為 5.0 ~ 5.2 之間的某個位置,因為顯然 CUDA 8.0 不支持 5.3.1 之後的 GCC 版本。當我輸入時
gcc --version
,我看到 GCC 版本 6.3.0,但是當我進入 python 3 時,它顯示給我[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
。我應該怎麼做?- 我想升級我的 GLIBC,以便它可以在我的平台上執行 Tensorflow。我相信我需要超越的 GLIBC 版本是 GLIBC_2.14,但我不確定這是否足以執行 Tensorflow。請幫我升級 GLIBC,以便我可以在我的伺服器上執行 Tensorflow。
- 為了完成上述任務,我需要擁有哪個 binutil 包?我下載了 devtools-4-binutils 以獲得最新的 binutils 包,但我擔心最新的包可能與 Linux 2.6 版本不同步..
- 如果這些都不起作用,您能否告訴我如何將 GCC 重置回其出廠版本 4.4.7,並將 binutils 重置回 2.20?如果我能扭轉我對機器應用的所有修改,我相信我將能夠安裝 < 5.3.1 的 GCC 版本並為 Tensorflow 安裝配置更新的 GLIBC。
我不得不從原始碼重建 tensorflow pip 包以使其在 CentOS 6 中工作,因為預設 pip 包存在一些基本問題,並且使用 glibc 為 CentOS6 建構它。這是我做的一個備忘錄。(注意我是一個月前做的)
- 下載 bazel-4.5-dist.zip 並按照以下步驟安裝,較新版本的 bazel 自 2017-09-04 起無法使用
~$ cd ~$ wget https://github.com/bazelbuild/bazel/releases/download/0.4.5/bazel-0.4.5-dist.zip ~$ cd /usr/src ~$ mkdir bazel-0.4.5-dist.zip ~$ cd bazel-0.4.5-dist ~# mv ~/bazel-0.4.5-dist.zip ./ ~# unzip bazel-0.4.5-dist.zip ~# ./compile.sh
- 修改 ~/.bashrc 以啟動 devtoolset-2 而不是 devtoolset-6。TensorFlow 不會使用較新的 gcc 建構,只能使用 gcc 4
在 ~/.bashrc
source /opt/rh/devtoolset-2/enable #source /opt/rh/devtoolset-6/enable
- 將 tensorflow 複製到 /usr/src
~$ cd /usr/src ~# git clone https://github.com/tensorflow/tensorflow
- 配置張量流
~$ cd tensorflow ~# ./configure
為除 CUDA 之外的所有支持選項選擇“否”。其他一切都應該是預設的
- 轉到 /usr/src/tensorflow/third_party/gpus/crosstool 修改 CROSSTOOL_clang.tpl 和 CROSSTOOL_nvcc.tpl 將以下行添加到標記為“工具鏈”的部分
linker_flag : "-B/opt/rh/devtoolset-2/root/usr/bin"
- 建構張量流
~$ cd /usr/src/tensorflow ~# bazel build --config=opt --config=cuda //tensorflow/tools/pip_package:build_pip_package
- 創建 pip 包
~# bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
- 安裝自定義 pip 包
~# sudo pip install /tmp/tensorflow_pkg/tensorflow-1.3.0-cp34-cp34m-linux_x86_64.whl