centos7.5安装Node.js 20.5.1后报段错误(吐核)

centos7.5安装Node.js 20.5.1后报段错误

缘起

开发要求安装Node.js 20.5.1以解决dependencyCheck扫描出来的各种安全问题。

安装过程

1、 下载安装Node.js 20.5.1

wget https://nodejs.org/download/release/v20.5.1/node-v20.5.1-linux-x64.tar.gz

tar -xzf node-v20.5.1-linux-x64.tar.gz

chmod -R jenkins:jenkins node-v20.5.1-linux-x64

export PATH=/opt/node-v20.5.1-linux-x64/bin:$PATH


2、 执行node --version查看版本,报错如下:

/lib64/libm.so.6: version GLIBC_2.27' not found (required by node) node: /lib64/libstdc++.so.6: version GLIBCXX_3.4.20’ not found (required by node)
node: /lib64/libstdc++.so.6: version CXXABI_1.3.9' not found (required by node) node: /lib64/libstdc++.so.6: version GLIBCXX_3.4.21’ 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)
node: /lib64/libm.so.6: version GLIBC_2.27' not found (required by node) node: /lib64/libstdc++.so.6: version GLIBCXX_3.4.20’ not found (required by node)
node: /lib64/libstdc++.so.6: version CXXABI_1.3.9' not found (required by node) node: /lib64/libstdc++.so.6: version GLIBCXX_3.4.21’ 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)
node: /lib64/libm.so.6: version GLIBC_2.27' not found (required by node) node: /lib64/libstdc++.so.6: version GLIBCXX_3.4.20’ not found (required by node)
node: /lib64/libstdc++.so.6: version CXXABI_1.3.9' not found (required by node) node: /lib64/libstdc++.so.6: version GLIBCXX_3.4.21’ 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)

查询资料,出现这些错误的原因是你的系统上缺少 Node.js 20.5.3 版本所需的依赖库版本。特别是 GLIBC 和 libstdc++ 版本太低。这通常发生在较旧版本的 Linux 系统上,例如 CentOS 7 或 RHEL 7。

方法一:升级操作系统
考虑升级你的操作系统到一个较新的版本,如 CentOS 8 或 RHEL 8,这些版本自带较新的库。

方法二:安装所需的库
如果你无法升级操作系统,可以尝试手动安装所需的库版本。请注意,这可能比较复杂,并且可能需要构建这些库。

3、按照方案二进行

更新 GLIBC
下载 GLIBC 源代码:

wget http://ftp.gnu.org/gnu/libc/glibc-2.28.tar.gz

解压和编译 GLIBC:

tar -xzf glibc-2.28.tar.gz
cd glibc-2.28
mkdir build
cd build
../configure --prefix=/opt/glibc-2.28 --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin --disable-werror
make -j4
sudo make install

但是执行…/configure --prefix=/opt/glibc-2.28的时候,会由于centos7.5自带的gcc4.7.5版本低,而报错。 需要升级gcc。
安装devtoolset-9

sudo yum install centos-release-scl
sudo yum install devtoolset-9

启用devtoolset-9

scl enable devtoolset-9 bash

再次执行:

../configure --prefix=/opt/glibc-2.28 --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin --disable-werror

make -j4
sudo make install

4. 将编译后的/opt/glibc-2.28导入系统配置

export LD_LIBRARY_PATH=/opt/glibc-2.28/lib:$LD_LIBRARY_PATH

如果你只是在当前shell终端导入这个环境变量,你只是崩溃了当前终端;

如果你将这个语句写入/etc/profile,你将突然面临一次系统崩溃;

导入这个环境变量后,你成功的把系统弄崩溃了!!!! 你执行命令会看到:段错误(吐核).
在这里插入图片描述
除了pwd以外,其他命令都不再好用!

如果你没有开多个终端,而你又修改了/etc/profile,你此时可能是慌张的,崩溃的!

但是天无绝人之路,你还可以sfp到系统,还可以将/etc/profile下载下来再修改,然后再回传覆盖。

你是多么机智!

回过神来,你去检查资料,发现:

这个问题可能是由于在执行ls 命令时,系统尝试加载了新编译的 glibc 库,但是该库与系统原有的库存在兼容性问题,导致发生了段错误。

网上没人告诉你,他们说的centos7安装Node.js 20.xx.xx版本,他们系统可能是7.9的,而不是7.5.

5. CentOS 7.5无法直接安装Node.js 20.5.1版本

主要原因是Node.js 20及更高版本需要glibc 2.28或更高版本,而CentOS 7.5默认安装的是glibc 2.17版本。

由于这是个生产系统,jenkins还在时时刻刻被公司成员运行着,只能回头找个虚拟系统再试试了。

对于开发的需求,沟通后发现,只需要npm 8 以上就可以满足需求,安装了node 16.20.2后,需求即可满足。

记之。

  • 17
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值