centos7安装node11一次艰难的升级之旅
起因在jenkins中设置了node21,随后jenkins开始自动下载nodejs,但正当使用时发现nodejs报错了,如下所示:21:47:24node:/lib64/libm.so.6:vers
on
2025/09/17
起因
在jenkins中设置了node21,随后jenkins开始自动下载nodejs,但正当使用时发现nodejs报错了,如下所示:21:47:24 node: /lib64/libm.so.6: version `GLIBC_2.27' not found (required by node) 21:47:24 node: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by node) 21:47:24 node: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by node) 21:47:24 node: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by node) 21:47:24 node: /lib64/libc.so.6: version `GLIBC_2.27' not found (required by node) 21:47:24 node: /lib64/libc.so.6: version `GLIBC_2.28' not found (required by node) 21:47:24 node: /lib64/libc.so.6: version `GLIBC_2.25' not found (required by node) 21:47:24 node: /lib64/libm.so.6: version `GLIBC_2.27' not found (required by node) 21:47:24 node: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by node) 21:47:24 node: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by node) 21:47:24 node: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by node) 21:47:24 node: /lib64/libc.so.6: version `GLIBC_2.27' not found (required by node)
异常解决
根据错误提示内容,需要安装GLIBC_2.28以上版本,查阅文章内容得知,需要先升级gcc1.升级GCC
升级前需要安装scl源yum install -y centos-release-scl bison
然后开始升级gcc
yum install -y devtoolset-11-gcc devtoolset-11-gcc-c++ devtoolset-11-binutils
安装后需要配置环境变量
echo "source /opt/rh/devtoolset-11/enable" >> /etc/profile
source /etc/profile
2.升级cmake
gun官方仓库下载慢,可使用阿里云地址 https://mirrors.aliyun.com/gnu/
make -v
cd ~
wget https://mirrors.aliyun.com/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
make -v
3.升级mpc
wget https://mirrors.aliyun.com/gnu/mpc/mpc-1.3.1.tar.gz
tar -zxvf mpc-1.3.1.tar.gz
cd mpc-1.3.1
./configure --prefix=/usr
make -j4
sudo make install
4.升级mpfr
wget https://mirrors.aliyun.com/gnu/mpfr/mpfr-4.2.0.tar.gz
tar -zxvf mpfr-4.2.0.tar.gz
cd mpfr-4.2.0
./configure --prefix=/usr
make -j4
sudo make install
sudo ln -s /mpfr-4.2.0/src/.libs/libmpfr.so.6 /usr/lib64/libmpfr.so.6
5.升级gmp
wget https://gmplib.org/download/gmp/gmp-6.2.1.tar.xz
tar -Jxvf gmp-6.2.1.tar.xz
cd gmp-6.2.1
./configure --prefix=/usr
make -j4
sudo make install
6.升级libffi
wget https://mirrors.aliyun.com/centos-vault/7.6.1810/os/x86_64/Packages/libffi-3.0.13-18.el7.x86_64.rpm
rpm -ivh libffi-3.0.13-18.el7.x86_64.rpm
wget https://mirrors.aliyun.com/centos-vault/7.8.2003/os/x86_64/Packages/libffi-devel-3.0.13-19.el7.x86_64.rpm
rpm -ivh libffi-devel-3.0.13-19.el7.x86_64.rpm
7.升级到python3
wget https://mirrors.aliyun.com/python-release/source/Python-3.8.0.tgz
tar -zxf Python-3.8.0.tgz
cd Python-3.8.0
mkdir build
cd build
../configure --enable-optimizations
make -j4
make install
/usr/bin/python -v
ll /usr/bin/python*
mv /usr/bin/python /usr/bin/python2.7
ln -s /root/Python-3.8.0/build/python /usr/bin/python
python -v
参考文章:
升级到Python-3.8.0
8.升级glibc
wget https://mirrors.aliyun.com/gnu/glibc/glibc-2.34.tar.gz
tar -xf glibc-2.34.tar.gz
cd glibc-2.34
mkdir build
cd build
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin --disable-sanity-checks --disable-werror --enable-obsolete-nsl
make -j4
make install
参考文章:
Centos7 升级 Glibc-2.28
CentOS 7.9 升级 GLibc 2.34
9.升级libstdc++.so.6
wget https://cdn.frostbelt.cn/software/libstdc%2B%2B.so.6.0.26
cp libstdc++.so.6.0.26 /usr/lib64/
cd /usr/lib64/
ln -snf ./libstdc++.so.6.0.26 libstdc++.so.6
参考文章:
CentOS7升级glibc至2.28
验证
strings /lib64/libc.so.6 | grep ^GLIBC
find / -name "libstdc++.so*"
strings /usr/lib64/libstdc++.so.6 | grep CXXABI
strings /lib64/libstdc++.so.6 | grep GLIBCXX
可能会遇到下面问题
查看/lib64目录下的libc-2.17.so,此时可能ls已经无法使用gcc: relocation error: /lib64/libc.so.6: symbol __tunable_get_val, version GLIBC_PRIVATE not defined in file ld-linux-x86-64.so.2 with link time reference
sln /lib64/libc[按下Tab键]
系统会提示补全文件名
libc-2.**.so
完成替换
LD_PRELOAD=/lib64/libc-2.28.so sln /root/glibc-2.34/build/libc.so.6 /lib64/libc.so.6
LD_PRELOAD=/lib64/libc-2.28.so sln /root/glibc-2.34/build/dlfcn/libdl.so.2 /lib64/libdl.so.2
LD_PRELOAD=/lib64/libc-2.28.so sln /root/glibc-2.34/build/nptl/libpthread.so.0 /lib64/libpthread.so.0
LD_PRELOAD=/lib64/libc-2.28.so sln /root/glibc-2.34/build/elf/ld-linux-x86-64.so.2 /usr/lib64/ld-linux-x86-64.so.2
修改源码glibc-2.34/scripts/test-installation.pl找到下面代码位置,增加nss_test2等代码/usr/bin/ld: cannot find -lnss_test2
#add $name ne “nss_test2”
vim glibc-2.34/scripts/test-installation.pl
next if ($build_mathvec == 0 && $name eq "mvec");
if ($name ne "nss_ldap" && $name ne "db1"
&& $name ne "thread_db"
&& $name ne "nss_test1" && $name ne "nss_test2" && $name ne "libgcc_s") {
