416 字
2 分钟
version 'GLIBC_2.28' not found 解决方案
version ‘GLIBC_2.28’ not found 解决方案
问题:CentOS-7
服务器部署 node
或 npm
时,报错 ‘GLIBC…’ Not Found
[root@imxizhen ~]# node -v
node: /lib64/libm.so.6: version 'GLIBC_2.27' not found (required by node)
node: /lib64/libc.so.6: version 'GLIBC_2.28' not found (required by node)
node: /lib64/libc.so.6: version 'GLIBC_2.25' not found (required by node)
原因:CentOS
低版本系统的 GLIBC
版本过低
[root@imxizhen ~]# ldd --version
ldd (GNU libc) 2.17
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.
我们发现系统中 GLIBC 版本仅为 17,而报错中显示我们缺失,25,27,28。而 GLIBC是向下兼容的,安装高版本的同时会安装低版本,所以我们只需要安装 GLIBC_2.28 即可。
解决
1、替换yum源
mkdir -p /etc/yum.repos.d/bak/imxizhen;
cp -rf /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak/imxizhen/;
wget -SO /etc/yum.repos.d/Base.repo 'lxz.new1cloud.com/yum/CentOS-7.repo';
wget -SO /etc/yum.repos.d/CentOS-SCLo-scl.repo 'lxz.new1cloud.com/yum/CentOS-SCLo-scl.repo';
cp -rf /etc/resolv.conf /etc/resolv.conf.bak.imxizhen;
echo 'nameserver 114.114.114.114' > /etc/resolv.conf;
yum clean all && yum makecache;
2、升级 GCC
yum install -y centos-release-scl* bison;
wget -SO /etc/yum.repos.d/CentOS-SCLo-scl.repo 'lxz.new1cloud.com/yum/CentOS-SCLo-scl.repo';
yum install -y devtoolset-8-gcc*;
ln -s /opt/rh/devtoolset-8/root/bin/gcc /usr/bin/gcc;
ln -s /opt/rh/devtoolset-8/root/bin/g++ /usr/bin/g++;
3、升级 make
mkdir -p /usr/local/src;
wget -SO /usr/local/src/make-4.3.tar.gz 'http://ftp.gnu.org/gnu/make/make-4.3.tar.gz';
cd /usr/local/src && tar -xzvf make-4.3.tar.gz && cd make-4.3/;
./configure --prefix=/usr/local/make;
make && make install;
cd /usr/bin/ && mv make make.bak;
ln -sv /usr/local/make/bin/make /usr/bin/make;
4、更新 libstdc++.so.6.0.26
wget -SO /usr/lib64/libstdc++.so.6.0.26 'http://cdn.frostbelt.cn/software/libstdc%2B%2B.so.6.0.26';
cd /usr/lib64/;
ln -snf ./libstdc++.so.6.0.26 libstdc++.so.6;
5、升级 glibc
wget -SO /usr/local/src/glibc-2.28.tar.gz 'http://ftp.gnu.org/gnu/glibc/glibc-2.28.tar.gz';
tar -zxvf /usr/local/src/glibc-2.28.tar.gz -C /usr/local/src/;
cd /usr/local/src/glibc-2.28/ && mkdir build && cd build;
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin;
make && make install;
6、测试是否升级成功
node -v;
npm -v;
7、升级node、npm版本
# 使用 n 工具更新 Node.js(适用于非 Windows 系统)
# 清除 npm 缓存:
npm cache clean -f;
# 全局安装 n 工具:
npm install -g n;
# 更新到最新稳定版:
n stable;
# 验证更新:
node -v;
# 升级npm
npm install -g npm;
8、回滚yum源
mv -f /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak/;
cp -rf /etc/yum.repos.d/bak/imxizhen/*.repo /etc/yum.repos.d/;
cp -rf /etc/resolv.conf.bak.imxizhen /etc/resolv.conf;
yum clean all && yum makecache;
version 'GLIBC_2.28' not found 解决方案
https://imxizhen.asia/posts/linux/updateglibcversion/