416 字
2 分钟
version 'GLIBC_2.28' not found 解决方案

version ‘GLIBC_2.28’ not found 解决方案#

问题:CentOS-7服务器部署 nodenpm 时,报错 ‘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/
作者
imxizhen
发布于
2025-04-16
许可协议
CC BY-NC-SA 4.0