动态库升级即可解决问题。
1、查看当前Linux服务器gcc版本中包含哪些库
strings /usr/lib64/libstdc++.so.6 | grep GLIBC
或
strings /usr/lib/libstdc++.so.6 | grep GLIBC
2.下载所需要的libstdc++.so.6.0.24版本。
通过网盘分享的文件:【批量下载】libstdc.so.6.0等.zip
链接: https://pan.baidu.com/s/1hEf2uJYY-CdY4rouBK-wdg?pwd=vp65 提取码: vp65
3.把libstdc++.so.6.0.24拷贝到/usr/lib64目录下。
cp libstdc++.so.6.0.24 /usr/lib64/
4.删除原来的libstdc++.so.6符号连接。
cd /usr/lib64
rm -rf libstdc++.so.6
备注:如果有必要请备份
5.新建新符号连接。
ln -s libstdc++.so.6.0.24 libstdc++.so.6
6、执行npm -v
还是报错,继续解决
8、查看系统内安装的glibc版本 然后再根据分析可得知 新版的node v18开始 都需要GLIBC_2.27支持,可是目前系统内却没有那么高的版本
strings /lib64/libc.so.6 |grep GLIBC_
GLIBC_2.2.5
...
GLIBC_2.17
....
解决办法
①更新glibc
根据提示 安装所需要的glibc-2.28
wget http://ftp.gnu.org/gnu/glibc/glibc-2.28.tar.gz
tar xf glibc-2.28.tar.gz
cd glibc-2.28/ && mkdir build && cd build
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
可能出现的错误
上步更新glibc 可能会发生错误。 如果没有错误 下边这一步 不用看。
②make问题
configure: error:
*** These critical programs are missing or too old: make bison compiler
*** Check the INSTALL file for required versions.
解决办法:升级gcc与make
# 升级GCC(默认为4 升级为8)</span>
yum install -y centos-release-scl
yum install -y devtoolset-8-gcc*
③可能会报错:Cannot find a valid baseurl for repo: centos-sclo-rh/x86_64
为 SCL 仓库手动配置国内镜像源(如果你确实需要 SCL)
阿里云等镜像站仍然保留了 CentOS 7 的 SCL 仓库归档,可以手动修复 repo 文件。
备份原文件
sudo cp /etc/yum.repos.d/CentOS-SCLo-scl.repo /etc/yum.repos.d/CentOS-SCLo-scl.repo.bak
sudo cp /etc/yum.repos.d/CentOS-SCLo-scl-rh.repo /etc/yum.repos.d/CentOS-SCLo-scl-rh.repo.bak
替换为阿里云的 SCL 源
编辑 /etc/yum.repos.d/CentOS-SCLo-scl-rh.repo,将所有 baseurl 替换为阿里云地址,并注释掉 mirrorlist:
centos-sclo-rh
name=CentOS-7 - SCLo rh
baseurl=https://mirrors.aliyun.com/centos/7/sclo/$basearch/rh/
gpgcheck=1
enabled=1
gpgkey=https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-SIG-SCLo
同样,编辑 /etc/yum.repos.d/CentOS-SCLo-scl.repo:
centos-sclo-sclo
name=CentOS-7 - SCLo sclo
baseurl=https://mirrors.aliyun.com/centos/7/sclo/$basearch/sclo/
gpgcheck=1
enabled=1
gpgkey=https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-SIG-SCLo
清理缓存并重建
sudo yum clean all
sudo yum makecache
⚠️ 注意:虽然阿里云目前仍保留这些目录,但 CentOS 7 已 EOL,不再有安全更新。建议尽快迁移至受支持的系统(如 Rocky Linux 7/8、AlmaLinux 或 CentOS Stream)。
④继续安装
yum install -y devtoolset-8-gcc*
mv /usr/bin/gcc /usr/bin/gcc-4.8.5
ln -s /opt/rh/devtoolset-8/root/bin/gcc /usr/bin/gcc
mv /usr/bin/g++ /usr/bin/g++-4.8.5
ln -s /opt/rh/devtoolset-8/root/bin/g++ /usr/bin/g++
# 升级 make(默认为3 升级为4)
wget http://ftp.gnu.org/gnu/make/make-4.3.tar.gz
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
这时 所有的问题 都已经解决完毕 再重新执行上一步 更新glibc即可
cd /root/glibc-2.28/build ../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
make 和 make install在linux中就是安装软件的意思 简单这么理解就好。 这个过程较长,大约半小时左右。
make && make install
⑤验证下 是不是好了
npm -v

其它报错:
一、RPM数据库损坏:error: rpmdb: BDB0113Thread/process失败: BDB1507如何修复?
1、备份现有数据库文件:
进入RPM数据库目录并备份相关文件:
确保备份完整后再进行后续操作。
cd /var/lib/rpm
cp * ~/rpm_backup/
2、重建RPM数据库:
使用以下命令尝试重建数据库:
rpm --rebuilddb
如果成功,验证是否恢复正常。
3、清理残留文件:
若重建失败,删除`__db*`文件后重试:
rm -f /var/lib/rpm/__db*
然后再次运行`rpm --rebuilddb`。