zoukankan      html  css  js  c++  java
  • 记一次生产环境中得删系统库行为

    由于在生产环境中需要使用python 中得一个包tensorflow在机器中导入包发现有以下报错

    经过百度 需要升级glibc库。

     如图所示此图为升级后得截图,正常应该指向是没升级前libc-2.12.so

    然后我发现 在/bigdata/anaconda/lib 下面有 libc-2.17.so就考虑把libc-2.17.so拷贝到/lib64下面然后修改软连接

    cd /usrlib64

    rm libc.so.6

    ln -s libc-2.17.so libc.so.6  然后悲剧就发生了 发现这里报错。。。我使用其他命令。。都报错。。。

    赶紧百度

    解决办法:

    既然命令无法寻址到软连接,那么直接命令行给他就是了,网上看到了两种方法
    1、ldconfig -l -v /lib64/libc-2.12.so
    这里写的libc库必须是原来使用的而不是你更新过的
    2、LD_PRELOAD=/lib64/libc-2.12.so ln -s /lib64/libc-2.12.so /lib64/libc.so.6
    LD_PRELOAD允许你定义在程序运行前优先加载的动态链接库,因此在使用ln前就加载了lib库,而不是等到使用ln时加载,这样就能临时使用命令了
    不仅仅是ln,只要加了LD_PRELOAD=/lib64/libc-2.12.so,后面可以跟一切因为libc.so.6被删不能用的命令
    我使用的是第二种方法
    然后命令又能用了.

    好了问题解决了 理解下原因 

    glibc库是很多命令操作得依赖库 如图

    仅仅是iconv,基本上非系统命令都有这一条 libc.so.6 => /lib64/libc.so.6 ,因此libc.so.6至关重要,绝对不能删,不能改名,能不能覆盖就不知道了,想作死的可以试试

     但是还是没有解决根本问题。 怎么解决呢? 老老实实得源码安装吧

    解决办法:
    glibc-2.17下载地址:https://ftp.gnu.org/gnu/glibc/glibc-2.17.tar.gz
    wget https://ftp.gnu.org/gnu/glibc/glibc-2.17.tar.gz
    tar -xvf glibc-2.17.tar.gz
    
    cd glibc-2.17
    mkdir build
    cd build
    ../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
    make && make install
    

      

    同样经历的还有  https://www.cnblogs.com/weijing24/p/5890031.html  这位同学

  • 相关阅读:
    python中xlrd模块
    2021, 8, 26模拟赛
    2021, 8,24 模拟赛
    每天挂 0 的小技巧
    2021,8,23 模拟赛
    异常处理
    64位 windows10,MYSQL8.0.13重置密码(忘记密码或者无法登录)
    Android仓库
    学习笔记索引
    「学习笔记」各类容斥反演总结
  • 原文地址:https://www.cnblogs.com/ZFBG/p/10375432.html
Copyright © 2011-2022 走看看