首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
V2EX  ›  Linux

libc.so.6 升级一直无法成功,有解吗?

  •  
  •   sjmcefc2 · 36 天前 · 2905 次点击
    这是一个创建于 36 天前的主题,其中的信息可能已经有所发展或是发生改变。
    1.问题:rhel7 安装 tensorflow,提示 glibc-2.23 缺失,于是开始升级 libc.so.6
    2.编译安装略过 /usr/local/glibc-2.23/ 。出现一个 warning。拷贝 libc-2.23.so 到 lib64 下面
    3.开始替换
    1 )
    cd /lib64
    2 )
    LD_PRELOAD=/lib64/libc-2.17.so rm libc.so.6
    3
    LD_PRElOAD=/lib64/libc-2.23.so ln -s /lib64/libc-2.23.so /lib64/libc.so.6
    第 3)步总是出错,而且提示不成功,只能重新软连接回去。。。。。

    是编译有错(觉得一个 warning 不是什么问题哈)还是哪里不对呢?
    80 回复  |  直到 2019-04-20 17:14:38 +08:00
        1
    reus   36 天前   ♥ 3
    别作死,系统 libc 不要随便升

    用一个隔离的环境跑 tensorflow 吧
        2
    sjmcefc2   36 天前
    https://www.v2ex.com/t/217070
    怎么用隔离的环境呢?求方案。
    看起来不同版本的 linux,成功升级的几率不一样。
        3
    artandlol   36 天前 via iPhone
    glibc 升级还是注意点,最好是用用包升级
        4
    sjmcefc2   36 天前
    有一次成功再 rhel7 上更新过,当时测试正常。后来又不行了。感觉配置环境每次都要耗费很久时间啊,有没有现成的机器学习和深度学习环境呢?
        5
    sjmcefc2   36 天前
    @artandlol 用包如何升级?只学到了用编译的。。。。。
        6
    ooxxcc   36 天前   ♥ 1
    搞深度学习这种新玩意就别用 rhel 这种古老的系统了,各种程度上折腾

    想办法用 systemd-nspawn 跑个 arch 容器,或者直接 nvidia-docker 算了
        7
    sjmcefc2   36 天前
    yum -y update glibc ?
        8
    sjmcefc2   36 天前
    @ooxxcc 为啥说 rhel 古老捏?
    你说的容器是个好主意,有没有好的教程呢
        9
    sjmcefc2   36 天前
    yum -y update glibc 提示没包可升级。
        10
    ooxxcc   36 天前
    rhel 7 是 2014 年发行的,你说老不老

    关键词都给你了,自己搜一下就好
        11
    sjmcefc2   36 天前
    像搭建一个环境,每次都是搞半天,有没有可以直接拿来用的呢。。。。
        12
    sodora   36 天前 via Android
    你要做的是升级系统,而不是升级 glibc。
        14
    sjmcefc2   36 天前
    rhel 7.6 貌似还可以吧。。。
        15
    sjmcefc2   36 天前
    @ooxxcc 谢谢。我学习一下。bitnami 好多可以拿来即用的 ova,可惜没做一个深度学习的
        16
    xiaoheijw   36 天前
    不要作死升级 glibc。作为一个生产环境升级过的人,表示系统绝对会崩,而且只有重装这条路
        17
    xiaoheijw   36 天前
    @sjmcefc2 用 docker
        18
    sjmcefc2   36 天前
    @xiaoheijw 确实崩了过,好在没有重启。又重新更换了回来。
        19
    menyakun   36 天前
    用 docker 正解。还是换个 OS 吧,rhel 装个 docker 都麻烦的不行
        20
    GeruzoniAnsasu   36 天前
    升 libc 是本末倒置,最早我也试图升过,后来想想,为了一个程序的依赖去破坏其它所有程序的依赖,问题不是很大嘛

    docker 正解。linux docker 开销很小的
        21
    msg7086   36 天前   ♥ 2
    @sjmcefc2 #14
    10 楼已经说过了,RHEL 7 是 2014 年发行的。别说 7.6,就是 7.998 ,那也是 2014 年发行的。
    如果 Tensorflow 需要 glib 2.23 ,而 RHEL 7 没有 glibc 2.23+,那说明 Tensorflow 不支持 RHEL 7,你需要删掉你的系统,然后换一个支持的版本。

    而且你有没有想过,你装上了 glibc 2.23 以后,整个系统里那么多依赖 glibc 2.17 的软件怎么办?
        22
    wyntalgeer   36 天前
    升 libc=死 ×
    换系统 /docker √
        23
    zhanglp888   36 天前
    我建议你了解一下
    scl-utils
    devtoolset-7

    安装一个独立的 gcc 环境,替换 libc 有危险
        24
    zhanglp888   36 天前
    yum install scl-utils
    yum install devtoolset-7

    scl enable devtoolset-7 bash
        25
    sjmcefc2   36 天前
    那么换什么系统? linux 好多版本,哪个会更好点?
        26
    msg7086   36 天前
    支持你要用的软件的,就比不支持你要用的软件的,要好一点。

    比如说他支持 Ubuntu 16.04+ (这个是 2016 年发行的,比 RHEL 7.x 新 2 年),那你装个 16.04 或者 18.04 就是很好的。
        27
    sjmcefc2   36 天前
    @msg7086 除了 ubuntu 之外还有可选吗?有点对 ubuntu 天生敌意捏?
        28
    sjmcefc2   36 天前
    centos 可以不(貌似和 rhel 一样)? debian 可以不?
        29
    Ryans   36 天前
    Anaconda 呗,然后 export LD_LIBRARY
        30
    sjmcefc2   36 天前
    @Ryans 就是在 anaconda 上 conda install 的 tensorflow。不过 exoport LD_LIBRARY 怎么用呢?稳定不?
        31
    sjmcefc2   36 天前
    Manjaro:一种不同的野兽》。---研究了下 linux,真实太多版本了,从未听过。。。。
        32
    SupperMary   36 天前 via Android
    上 docker+1
        33
    rrfeng   36 天前
    libc 是不能升级的,LD_LIBARY 并不能生效
    除非用更高级的方式,例如 chroot (不确定),container
        34
    openbsd   36 天前
    就等 RHEL8 正式版了
        35
    expy   36 天前
    TF 官方文档:

    我们在以下 64 位系统上测试过 TensorFlow 并且这些系统支持 TensorFlow:
    Ubuntu 16.04 或更高版本
    Windows 7 或更高版本
    macOS 10.12.6 (Sierra) 或更高版本(不支持 GPU )
    Raspbian 9.0 或更高版本
        36
    dosmlp   36 天前
    升级 libc 有系统崩溃的可能,概率还挺大,不要问我怎么知道的- -!
        37
    expy   36 天前
    当然用容器更方便,主机上只有装好 docker 跟显卡驱动,环境镜像里已经打包好。
    https://www.tensorflow.org/install/docker
        38
    sjmcefc2   36 天前
    @openbsd 也是 期待 8 版本,话说为啥 openbsd 是不是被隔绝在大数据、人工智能之外了?貌似上 docker 都难。

    @SupperMary docker,那么宿主机用哪个版本的 Linux ?选择困难。真是很多版本的

    @rrfeng 这个更高级的形式有点。。。。container 也是容器?

    看着好像很多 dl,ml 的 docker image,就是哪个社区比较好,支持比较多。https://github.com/ufoym/deepo 这个看着很好啊。不知道大家都用什么
        39
    sjmcefc2   36 天前
    @expy 感谢宝贵信息,看来如果不用 docker 非 ubuntu 莫属。
    如果用 dockers 呢
        40
    expy   36 天前
    @sjmcefc2 理论上新点的系统都能用,刚开始还是用 Ubuntu 的 lts 版本吧( 18.04/16.04 ),用得人最多,软件官方支持,用户踩坑分享的教程也多。
        41
    zycpp   36 天前 via iPhone
    真的勇士,敢于升级 libc👍
        42
    sjmcefc2   36 天前
    哇咔咔 @zycpp 感觉网上帖子误导不少人纳
        43
    chcx   36 天前
    官方源,yum update 能升的就都给你升了
        44
    artandlol   36 天前 via iPhone
    去找 centos7.4 版本的镜像,镜像里面的 Packages 里面搜索 glibc 和 nscd 的 rpm 包装上就可以。glibc 可以多版本共存,因为你一卸载系统几乎是挂了,多版本可以用你的那个软链接指定
        45
    sjmcefc2   36 天前
    @artandlol centos7 会比 rhel7 更新一些?
        46
    luassuns   36 天前 via iPhone
    昨天 Debian 8 遇到同样问题,一气之下直接换到 9 的源然后 full upgrade,居然没挂还升级成功了
        47
    junjieyuanxiling   35 天前 via Android
    @sjmcefc2 #38 Docker 利用 Linux 核心中的资源分离机制,例如 cgroups,以及 Linux 核心名字空间(英语:Linux namespaces )( namespaces ),来创建独立的容器( containers )。-- https://zh.m.wikipedia.org/zh-cn/Docker

    BSD 能用才有鬼了。
        48
    openbsd   35 天前
    @sjmcefc2 #38
    OB 主打安全,不过 BSD 在推广上确实被 Linux 甩太远了
        49
    sjmcefc2   35 天前
    @luassuns 运气真好。可是这个真有点碰运气。

    @junjieyuanxiling 是啊 bsd 有点落后了
    @openbsd 其实还可以做的更多,多精致的系统啊,效率也很高,很稳定

    话说有没有什么地方可以直接 docker 各种开发环境的啊,感觉每次配置环境都要搞半天。。。。
        50
    sjmcefc2   35 天前
    看 docker 的文档,貌似 centos 安装起来最简单。
        51
    msg7086   35 天前
    @sjmcefc2 BSD 和 Linux 不完全兼容。很多为 Linux 开发的软件要放到 BSD 上运行可能需要移植。
    Docker 在 BSD 上还处于实验性阶段,建议还是 Linux 为好。

    话说官方的 Docker 镜像也是基于 Ubuntu 做的,所以你要么在 Docker 里用 Ubuntu,要么直接在母机上用。

    除了 Ubuntu 的话那就是和他爹 Debian。Debian 如果再不喜欢的话就只能 Windows 10 了。

    Debian 9 相当于 Ubuntu 17.04~17.10 ,正好落在 16.04 和 18.04 中间,所以应该也是能顺利跑的。

    @luassuns Debian 跨版本升级还是很靠谱的。
        52
    YRodT   35 天前 via Android
    如果你有其他选择,请更换系统

    如果没有,依然是可能做到的,我就在古老的 centos 6 上成功安装并运行了新版 tf 和 pytorch

    参照 https://zhuanlan.zhihu.com/p/33059558,切记不要直接替换系统 glibc,而是使用 export LD_LIBRARY_PATH 或修改 bashrc,这样每次重新登录不会导致 ls 等基础命令挂掉。同时配合 patchelf 可以完美运行。

    在你执行每个命令前,务必明确了解原理和后果
        53
    sjmcefc2   35 天前
    @msg7086 docker 是基于 ubuntu 裁剪的?这样理解对不 /
    在 docker 的安装文档里面,貌似 Ubuntu 的安装比 centos 更麻烦一些?不知道为何。
    debian 比较爱。不过超爱 bsd 啊,可惜了了。
        54
    sjmcefc2   35 天前
    @YRodT 非常感谢。换系统倒也可以,不过还是很想知道这里面的原因。好文章,值得仔细看。另外想着,大家都用什么显卡做 gpu 计算啊,
        55
    feikaras   35 天前
    @sjmcefc2 glibc 是系统基础组建启动的基础啊,所以不要升级只能外挂。版本不对 dll 是动态链接挂不起来的当然会挂掉。vb6 vb5 的 runtime 和 vc 的 03 05 xxx 到 18 runtime 不是都是每个版本要装的。为啥不能直接用最新版的道理一样的。
        56
    acrisliu   35 天前 via Android
    可以试试 ArchLinux
        57
    wwhc   35 天前
    楼主换滚动升级的发行版吧,比如 Gentoo,升级 glibc 和吃饭似的
        58
    ThirdFlame   35 天前
    @sjmcefc2 docker 是个容器,不是说是基于 ubuntu 裁剪的 。 镜像 也有 centos 啊 其他的发行版啊。
        59
    sjmcefc2   35 天前
    @ThirdFlame docker 一般的资源啊论坛啊,能介绍一下吗?搜索了一下自己常用的 https://www.rocker-project.org/images/ 好像也都不是最新的哈,还有哪里有 image 的资源和介绍呢。

    @wwhc 这个。。。感觉自己能力不够哈。升挂了就歇菜
        60
    yuikns   35 天前 via iPad
    https://blog.argcv.com/articles/4601.c

    以前干过一次貌似没啥问题。
    不过现在不用容器是有特殊要求么
        61
    mxtob   35 天前 via iPhone
    成功折腾过,最终策略把相关的版本全部 rm,然后过了。现在回想起来,映像中就是 linux 中 centos 自带太旧了,ubuntu 一直保持最新没有这些问题,还有 docker 真是一级棒,不怕搞坏内核。搜索问题中,百度基本都是搬国外的,google 给力多了,愿 lz 早日出坑吧
        62
    ThirdFlame   35 天前
    显然是官方 hub 啊 https://hub.docker.com/
    不过官方有点慢,可以配置国内镜像 加速拉取
        63
    sjmcefc2   35 天前
    @yuikns 现在准备上 docker,就是母机用 centos7 呢,还是 ubuntu 呢?
    @mxtob 的回复,好像 centos 也更新缓慢,
    docker 是趋势哈,就是不知道怎么才能部署的完美
        64
    sjmcefc2   35 天前
    https://www.floydhub.com/

    @ThirdFlame 类似上面这种哪里可以有呢?总觉得配置环境特别耗费时间。
        65
    ThirdFlame   35 天前
    @sjmcefc2 没搞过 tensorflow 帮不到你。 docker 本身并不麻烦 ,就是为了在不同的环境下 快速搭建相同的 /预设的环境而涉及的。 一开始没必要追求完美,先跑起来才是最重要的。
    找到痛点,再次优化,追求完美。
        66
    sjmcefc2   35 天前
    @ThirdFlame ok。非常感谢。
        67
    mengzc   35 天前
    ```觉得一个 warning 不是什么问题哈```
    问题就在这里啊
        68
    sjmcefc2   35 天前
    @mengzc 真滴?一个 conf 文件没有哈。
        69
    wwhc   35 天前
    @sjmcefc2 Gentoo 下基本不存在升挂的问题,升级前系统会进行依赖检查,通不过不让你升,给个最近几年升级 glibc 的纪录:

    Sat Oct 29 14:14:19 2016 >>> sys-libs/glibc-2.22-r4
    Sat Jan 21 20:30:04 2017 >>> sys-libs/glibc-2.23-r3
    Mon Oct 9 14:00:53 2017 >>> sys-libs/glibc-2.23-r4
    Sat Nov 11 16:17:45 2017 >>> sys-libs/glibc-2.25-r8
    Sat Nov 25 12:38:04 2017 >>> sys-libs/glibc-2.25-r9
    Mon Jan 8 17:36:13 2018 >>> sys-libs/glibc-2.25-r9
    Sat Feb 10 12:56:05 2018 >>> sys-libs/glibc-2.25-r10
    Sat Mar 31 12:56:13 2018 >>> sys-libs/glibc-2.25-r11
    Sat Jul 21 18:13:20 2018 >>> sys-libs/glibc-2.26-r7
    Sat Oct 27 12:56:52 2018 >>> sys-libs/glibc-2.27-r6
    Sat Apr 6 12:58:19 2019 >>> sys-libs/glibc-2.28-r5
    Sat Apr 13 12:57:27 2019 >>> sys-libs/glibc-2.28-r6
        70
    sjmcefc2   35 天前
    @wwhc 您维护这个 gentoo 几年了?桌面?服务器?
        71
    sjmcefc2   35 天前
    再请教 docker 下的话,
    1.母机选择 ubuntu ? centos ?
    2.docker 下再安装 ubuntu,然后继续 pythno 之类?
    3.还是直接找个现成的镜像?
        72
    yuikns   35 天前
    @sjmcefc2

    1. 母鸡如果是 azure 之类云服务可以用 coreos,自己机房的话看已有技术栈。CentOS7 和 Ubuntu 16/18,Debian 9 等都应该没啥问题。
    2. docker 下你可以直接用别人的 release 完事。
    anaconda: https://hub.docker.com/_/anaconda
    cuda: https://hub.docker.com/r/nvidia/cuda

    cuda 的话我们经常是 dump 一个 environment.yml 然后在 cuda 里面安装个 miniconda,cuda update

    https://blog.argcv.com/articles/6168.c

    3. ref2. 此外,国内的话,阿里云有个容器服务,还可以创建私有仓库。在海外体验挺烂的,国内时有抽风,但不抽风的时候速度还很不错。
        73
    wwhc   35 天前
    @sjmcefc2 桌面和服务器都有,其中一台服务器已经连续运行超过 7 年了吧,都是脚本自动滚,定期手动检查
        74
    sjmcefc2   35 天前
    @yuikns 感谢。centos7 和 rhel7 差别很大吗 /总感觉一回事儿。。看来我错了。
    这几个都比较熟悉。
    2.直接用别人的 release 挺好,就是不知道会不会是版本比较低? R 就有这个问题。还有就是综合性的环境不知道哪里可以找到。
    3.说到 gpu 计算 ,大家都用什么卡 呢,有什么性价比高的推荐
        75
    yuikns   35 天前
    @sjmcefc2 1. centos 和 rhel 主要区别在订阅。企业有钱让红帽兜底那自然是最好的。
    2. 不会。库里面有很多 tag,类似 git 中的 branch。通常同样 tag 会保持兼容,你一直想要最新的话,用 latest 就行。cuda/anaconda 都是设定好 webhook 后跟着上游自动更新的。
    顺便,docker 不太推荐 “综合性环境”,通常要傻依赖啥。py 的话,anaconda 一配它就是综合。
    3. 老板给啥用啥。P40 和 V100 都行 -- 这个不算回复...
        76
    msg7086   35 天前
    @sjmcefc2 #63
    CentOS 和 RHEL 不是更新缓慢的问题。RHEL 本来就是 3-5 年会出一个版本,你在他刚发布的时候用,当然什么都是新的。你等他过了 5 年再用,那当然什么都是旧的。RHEL 7 发布的时候 glibc 是 2.17 ,那么 7 这辈子都只能用 2.17 ,因为更新到新版本就会可能破坏这个平台上所有的软件兼容性。(有时候甚至有些 Bug 也不能修,因为有些程序会依赖一些 Bug 行为,随便修改行为也会导致其他程序出现问题。 )

    RHEL 的「稳定」并不是说「运行稳定」,而是说平台稳定,这个平台在生命周期中不会改变。Debian 也好 Ubuntu 也好,固定发行版都是这样的,一旦发布以后就不会再升级软件包了,而只会安装更新。

    同理,一些专业的、大型的软件,也会固定在某个版本的发行版上进行开发。不少软件会要求说你必须使用某个发行版的某个版本来运行(比如 Tensorflow 要求 Ubuntu 16/18,我司开发的某个软件要求 Ubuntu 12.04 ,等等),因为他们只针对这个稳定平台进行开发和测试,你如果想要适配到别的发行版,那你就得自己做小白鼠吃螃蟹了。

    @sjmcefc2 #53
    我的意思是 Tensorflow 官方的 docker 镜像是基于 Ubuntu 制作的。
        77
    sjmcefc2   35 天前
    @yuikns
    @msg7086 非常感谢你们的宝贵经验。简直太棒了,终于明白了什么是稳定的内涵。
    我试着用 docker 来搞一搞。
    谢谢帖子里各位的热切讨论。
        78
    tt0411   35 天前
    Linux 系统软件的依赖管理就是这么操蛋, 上虚拟化吧, virtualbox 或者 docker
        79
    cubecube   35 天前
    曾经强行覆盖 libc.so,服务器暴毙。。。
        80
    heraldic   35 天前
    glibc 我是不敢升级的,干脆重装系统
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2392 人在线   最高记录 5043   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 24ms · UTC 10:00 · PVG 18:00 · LAX 03:00 · JFK 06:00
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1