在 CentOS 7 上安装 Node.js 20 并升级 GCC、make 和 glibc

在 CentOS 7 上安装 Node.js 20 并升级 GCC、make 和 glibc

📖 前言

在 CentOS 7 上使用 NVM 安装 Node.js 后,可能会遇到如下问题:

bash 复制代码
node: /lib64/libm.so.6: version `GLIBC_2.27' not found (required by node)
node: /lib64/libc.so.6: version `GLIBC_2.25' not found (required by node)
node: /lib64/libc.so.6: version `GLIBC_2.28' 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.20' not found (required by node)
node: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by node)

这是因为 Node.js 20 及更新版本需要更高版本的 glibc(至少 2.27)。本文将介绍如何解决这些问题,升级相关依赖项,并顺利安装 Node.js 20。

🌟 安装 Node.js 20 和升级所需组件

1. 升级 GCC 和 make

CentOS 7 默认的 GCC 版本为 4.x,make 版本为 3.x。在安装 Node.js 20 之前,您需要升级 GCC 和 make 版本。

升级 GCC 到 8.x

bash 复制代码
# 安装 centos-release-scl
yum install -y centos-release-scl

# 安装 devtoolset-8 包来获取较新的 GCC
yum install -y devtoolset-8-gcc*

# 更改 GCC 的默认版本
mv /usr/bin/gcc /usr/bin/gcc-4.8.5
ln -s /opt/rh/devtoolset-8/root/bin/gcc /usr/bin/gcc

# 更新 G++ 到 8.x
mv /usr/bin/g++ /usr/bin/g++-4.8.5
ln -s /opt/rh/devtoolset-8/root/bin/g++ /usr/bin/g++

升级 make 到 4.x

bash 复制代码
# 下载 make 4.3 版本的源码包
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

# 更改 make 链接
cd /usr/bin/ && mv make make.bak
ln -sv /usr/local/make/bin/make /usr/bin/make

2. 更新 glibc 到 2.28

新版的 Node.js 需要更高版本的 glibc(至少 2.27),因此我们需要手动更新 glibc 版本。

下载 glibc 2.28 源码包

bash 复制代码
# 下载 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

配置并编译安装 glibc

bash 复制代码
# 配置 glibc 编译环境
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin

# 安装缺失的工具,如 make 和 bison
yum install -y make bison

# 编译并安装 glibc
make && make install

可能出现的错误:

• 如果遇到 bison 版本过低的错误,可以使用以下命令安装 bison:

bash 复制代码
yum install -y bison

3. 升级 libstdc++.so.6

在升级 glibc 后,我们还需要更新 libstdc++.so.6 库。执行以下步骤来升级 libstdc++:

bash 复制代码
# 删除旧版本的 libstdc++.so.6
rm -f /usr/lib64/libstdc++.so.6

# 下载高版本的 libstdc++
wget http://ftp.gnu.org/gnu/gcc/gcc-8.3.0/libstdc++-8.3.0.tar.gz

# 解压并安装新版本的 libstdc++
tar -xvzf libstdc++-8.3.0.tar.gz
cd libstdc++-8.3.0
./configure --prefix=/usr/local
make && make install

# 添加软连接
ln -s /usr/local/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6

🚀 验证 Node.js 安装

升级完 glibc 和相关库后,可以继续安装 Node.js 20 并验证安装情况。

1. 使用 NVM 安装 Node.js 20

首先安装 NVM(如果未安装):

bash 复制代码
# 安装 NVM
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash

# 加载 nvm 配置
source ~/.bashrc

# 安装 Node.js 20
nvm install 20

2. 验证 Node.js 版本

# 检查 Node.js 版本
node -v

# 检查 npm 版本
npm -v

🎯 总结

通过升级 GCC、make 和 glibc,并安装高版本的 libstdc++,您可以在 CentOS 7 上成功安装和运行 Node.js 20,解决因 glibc 版本不兼容导致的问题。以上步骤涵盖了所有的必要操作,确保您能顺利进行开发与部署。

希望本文能够帮助您解决安装 Node.js 20 时遇到的依赖问题,提升您的开发效率!🌟

这是完整的解决方案,希望对您有所帮助!

相关推荐
柏慧通云报餐3 小时前
智慧食堂食材溯源数字化方案|采购 - 入库 - 餐桌全链路记录体系落地实践
大数据·运维·人工智能
北风催呀催3 小时前
HuggingFace下载镜像加速技巧
linux·huggingface
河北清兮网络科技4 小时前
直播APP商用开发深度解析:为什么模板系统无法支撑规模化直播平台
运维·网络·人工智能·小程序·短剧app
MicrosoftCloud4 小时前
性能排查 02|vmstat、iostat、mpstat、sar 怎么读?性能四件套的分工与判读阈值
linux·ubuntu·vmstat·性能监控·iostat·sysstat
夜之眷属4 小时前
JVM实战:服务器堆外内存去哪了(NMT实测)
java·服务器·jvm·后端·性能优化
运维行者_4 小时前
PHP性能监控怎么做?从响应时间到慢函数的6个关键指标
运维·服务器·开发语言·网络·支持向量机·php·接口隔离原则
AR-26710-4 小时前
Linux Day16——日志
linux·运维
小HANN4 小时前
华为云企业网站上云实战|从零搭建高可用WordPress(ECS+RDS+ELB+弹性伸缩+云监控全流程落地)
linux·运维·服务器·经验分享
eBest数字化转型方案5 小时前
经销商对账自动化:从五本账模型到票据识别的工程实现
运维·自动化
Elastic 中国社区官方博客5 小时前
AWS 自动化根因分析:从 CloudWatch 告警到完成故障诊断,仅需 36 秒
大数据·运维·elasticsearch·自动化·aws