Yellow 就怕你碌碌无为,还安慰自己平凡可贵 -------------yolo

记一次生产环境中得删系统库行为

由于在生产环境中需要使用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  这位同学

 

posted @ 2019-02-14 16:43  zfno11  阅读(547)  评论(0编辑  收藏  举报