我在 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 3.2.0,而我有 Linux 2.6。
这是我的约束。
- 我无法更改 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?如果我可以撤消对计算机应用的所有修改,我相信我将能够安装 GCC 版本 < 5.3.1 并为 Tensorflow 安装配置较新的 GLIBC。
答案1
我必须从源代码重建tensorflow pip 包才能使其在 CentOS 6 中工作,因为默认 pip 包以及使用 glibc 为 CentOS6 构建它存在一些基本问题。这是我根据它做的一份备忘录。 (注意我一个月前这样做了)
下载 bazel-4.5-dist.zip 并按照以下步骤进行安装,自 2017-09-04 起,较新版本的 bazel 无法运行
~$ 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