Centos7 安装 Node18

久违的更新,之前是做老师那的项目比较忙,之后是准备秋招,再之后是准备考研,研一上嘛又因为比较摆,没什么能写的内容,这篇的内容其实也是半年前就写好初稿了,只是后面忘了来着

centos7 因为 glibc 版本太低无法安装 node18,如果想要在 centos7 上使用 node18 就只能自行升级这些库了

需要注意的是,glibc 这种属于系统比较底层的库,自行升级有极大的风险,建议除非必须在 Centos 7 上使用 Node18,否则请勿轻易尝试,建议多找些教程对比使用,尽管以下步骤我是成功在两台服务器上尝试过,都没出现问题,但不排除是我没有发现和遇到

首先是安装一些前置的库

yum install bison -y
yum -y install wget bzip2 gcc gcc-c++ glibc-headers

然后就是升级下make

wget http://ftp.gnu.org/gnu/make/make-4.2.1.tar.gz
tar -zxvf make-4.2.1.tar.gz
cd make-4.2.1
mkdir build
cd build
../configure --prefix=/usr/local/make && make && make install
export PATH=/usr/local/make/bin:$PATH
ln -s /usr/local/make/bin/make /usr/local/make/bin/gmake
make -v #查看下版本是否升级成功

然后是升级 gcc 版本

yum install -y devtoolset-8-gcc devtoolset-8-gcc-c++ devtoolset-8-binutils
echo "source /opt/rh/devtoolset-8/enable" >> /etc/profile
source /etc/profile
gcc --version # 查看 gcc 版本
wget https://ftp.gnu.org/gnu/glibc/glibc-2.28.tar.xz
xz -d glibc-2.28.tar.xz
tar -xvf glibc-2.28.tar
cd glibc-2.28
mkdir build

在编译开始前,最好修改 scripts/test-installation.pl 在其中添加图中代码,以避免编译 nss_test2 报错

截屏2023-11-22 15.10.44

cd /root/glibc-2.28/build
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin --enable-obsolete-nsl
make
make install

需要注意的是如果上面 make 时有关于 make 或 gcc 版本相关的报错,请重新检查 make 和 gcc 的版本,有时候会因为各种莫名其妙的问题导致用的还是旧版的,此时可以尝试重新执行 install 之后的那两步,重新配置环境变量,确保版本没问题

更新之后,如果重新打开终端可能会有一些字符集相关的 warning,所以需要在继续在build目录下执行以下代码,安装字符集

make localedata/install-locales

经过上面的步骤你就能够使用宝塔面板安装node了,但是运行 node 会发现有报错,类似以下这种

node: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found

你还需要升级 libstdc 库才能正常使用

sudo wget http://www.vuln.cn/wp-content/uploads/2019/08/libstdc.so_.6.0.26.zip
unzip libstdc.so_.6.0.26.zip
cp libstdc++.so.6.0.26 /lib64/
cd /lib64

# 把原来的命令做备份
cp libstdc++.so.6 libstdc++.so.6.bak
rm -f libstdc++.so.6

# 重新链接
ln -s libstdc++.so.6.0.26 libstdc++.so.6
strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX #查看是否安装成功

之后你就可以正常的使用 node18 了