• Linux(Red hat)无网离线安装TensorFlow


    文件下载

    首先,下载想要安装的版本,目前最新的是1.8.0 根据你的python版本下载对应的whl文件,下载连接:https://pypi.org/project/tensorflow/#files。也可以下载历史版本:https://pypi.org/project/tensorflow/#history

    尝试安装

    pip install xxxxxx.whl
    会提示依赖的文件不存在。接着通过能上网的机子百度去下载对应版本号的文件继续安装。


     
     

    经过一系列的下载之后,tensorflow 安装需要以下依赖文件,通通装上。


     
     

    最终能够成功安装tensorflow 。
    如果运行如下命令不报错的情况下,恭喜你,安装成功。

    python
    >>> import tensorflow as tf
    

    如果linux 系统原先没有安装过高版本的gcc,一般都会提示如下错误

    ImportError: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.17' not found 
    (required by /usr/local/lib/python2.7/dist-
    packages/tensorflow/python/_pywrap_tensorflow.so)
    

    `GLIBC_2.17' 没找到。
    采用如下命令查看当前系统支持的glibc版本

    [root@localhost glibc]# 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_PRIVATE
    

    更新glibc版本,下载地址:http://ftp.gnu.org/gnu/glibc/glibc-2.17.tar.gz
    执行以下步骤安装glibc

    [xxx]# tar -xf glibc-2.17.tar.gz
    [xxx]# cd glibc-2.17
    [xxx]# mkdir build
    [xxx]# cd build
    [xxx]# ../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
    [xxx]# make -j 8
    [xxx]# make  install
    

    重新查看会发现,glibc的版本已经添加上去:

    [root@localhost glibc]# 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
    

    查看映射:

    [root@localhost glibc]# ll /lib64/libc.so.6
    lrwxrwxrwx 1 root root 12 May  7 16:31 /lib64/libc.so.6 -> libc-2.17.so
    

    此时,libc.so.6已经映射到了libc-2.17.so。如果不是要删除映射重新建立映射。

    [xxx]# rm /lib64/libc.so.6
    [xxx]# ln -s /lib64/libc-2.17.so /lib64/libc.so.6
    

    这里需要注意的是,一旦/lib64/libc.so.6文件被删除ll,ls,ln 这些命令将无法使用。报如下错误:

    error while loading shared libraries: libc.so.6: cannot open shared object file: 
    No such file or directory
    采用以下命令进行急救:
    [xxx]# ldconfig 
    

    继续尝试

    >>> import tensorflow as tf
    

    会报如下错误

    ImportError: /usr/lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found
    

    查看已有的版本

    [xxx]# ll /usr/lib64/libstdc++.so.6
    lrwxrwxrwx 1 root root 19 May  7 17:58 /usr/lib64/libstdc++.so.6 -> libstdc++.so.6.0.13
    [xxx]# strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX
    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_TM_1
    CXXABI_FLOAT128
    

    一般安装anaconda3 会有高版本的libstdc++.so.6存在。磁盘搜索

    [xxx]# find / -name "libstdc++.so.*"
    /root/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/lib/libstdc++.so.6
    /root/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/lib/libstdc++.so.6.0.24
    /root/anaconda3/lib/libstdc++.so.6
    /root/anaconda3/lib/libstdc++.so.6.0.24
    /root/anaconda3/pkgs/libstdcxx-ng-7.2.0-h7a57d05_2/x86_64-conda_cos6-linux-gnu/sysroot/lib/libstdc++.so.6
    /root/anaconda3/pkgs/libstdcxx-ng-7.2.0-h7a57d05_2/x86_64-conda_cos6-linux-gnu/sysroot/lib/libstdc++.so.6.0.24
    /root/anaconda3/pkgs/libstdcxx-ng-7.2.0-h7a57d05_2/lib/libstdc++.so.6
    /root/anaconda3/pkgs/libstdcxx-ng-7.2.0-h7a57d05_2/lib/libstdc++.so.6.0.24
    

    复制对应的版本到/usr/lib64/目录下

    cp /root/anaconda3/lib/libstdc++.so.6.0.24  /usr/lib64/
    

    同样修改软连接关系

    [xxx]# rm /usr/lib64/libstdc++.so.6
    [xxx]# ln -s /usr/lib64/libstdc++.so.6.0.24 /usr/lib64/libstdc++.so.6
    

    这个问题也解决了,那能够成功导入吗?不要高兴的太早,有些同学可能会遇到如下问题:

    >>>import tensorflow as tf
    illegal instruction (core dumped)
    

    各种查阅资料后发现官网上的安装方式和自家的CPU不匹配,需要从source安装。泪崩...
    需要简单处理的同学可以尝试降低tensorflow的版本,如安装1.5.0版本,1.5.1同样会报illegal instruction (core dumped) 亲测。

     
     
    参考资料:

    glibc2.17安装: https://blog.csdn.net/wyl9527/article/details/78256066
    linux文件删除急救:https://blog.csdn.net/xzx735/article/details/43227203
    tensorflow 源码安装:https://blog.csdn.net/helei001/article/details/51285951
    illegal instruction错误解决 https://blog.csdn.net/darklucky/article/details/79947048



    作者:IT屌丝逆袭日记
    链接:https://www.jianshu.com/p/36e547419c96
    來源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
  • 相关阅读:
    并发数据库事务缺锁导致的数据不一致情况:丢失更新,脏读,不可重复读,幻读
    Spring boot 如何读取jar包外面的properties文件
    安卓自定义组合控件--toolbar
    [转]ThoughtWorks(中国)程序员读书雷达
    [转]Design Pattern Interview Questions
    [转]Design Pattern Interview Questions
    [转]Design Pattern Interview Questions
    [转]Design Pattern Interview Questions
    OpenCV 使用C++获取摄像头数据并保存示例
    [原]opencv图像裁剪
  • 原文地址:https://www.cnblogs.com/yiduobaozhiblog1/p/10096406.html
Copyright © 2020-2023  润新知