centos7安装nodejs18.17步骤
摘要: 本文详细介绍了在CentOS 7.7.1908(无稳定DNS)环境下安装Node.js 18.17.1的完整步骤。通过配置阿里云vault源、使用devtoolset-9编译工具链,从源码编译安装Node.js,确保兼容性。关键步骤包括: 强制DNS配置(如8.8.8.8) 精确匹配CentOS 7.7的阿里云仓库 通过devtoolset-9启用GCC 9支持C++17 源码编译并指定安
以下是 在 CentOS 7.7.1908(无外网 DNS 或 DNS 不稳定)环境下,从零安装兼容的 Node.js 18(v18.17.1)的完整、可靠步骤,按顺序执行即可:
✅ 前提确认
- 系统:
CentOS Linux release 7.7.1908 (Core) - 网络:可访问公网 IP(如
ping 8.8.8.8成功) - 目标:安装 Node.js v18.17.1(最后一个兼容 CentOS 7 的 LTS 版本)
🔧 第一步:配置 DNS(避免解析失败)
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf
(可选)防止被覆盖:
sudo chattr +i /etc/resolv.conf
🔧 第二步:清理并配置阿里云 vault 源(精确匹配 7.7.1908)
# 备份旧 repo
sudo mkdir -p /etc/yum.repos.d/backup
sudo mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/ 2>/dev/null || true
# 创建 Base 源
sudo tee /etc/yum.repos.d/CentOS-Base.repo <<'EOF'
[base]
name=CentOS-7.7.1908 - Base
baseurl=https://mirrors.aliyun.com/centos-vault/7.7.1908/os/$basearch/
gpgcheck=0
enabled=1
[updates]
name=CentOS-7.7.1908 - Updates
baseurl=https://mirrors.aliyun.com/centos-vault/7.7.1908/updates/$basearch/
gpgcheck=0
enabled=1
[extras]
name=CentOS-7.7.1908 - Extras
baseurl=https://mirrors.aliyun.com/centos-vault/7.7.1908/extras/$basearch/
gpgcheck=0
enabled=1
EOF
# 创建 SCL 源(用于 devtoolset)
sudo tee /etc/yum.repos.d/CentOS-SCLo.repo <<'EOF'
[centos-sclo-rh]
name=CentOS-7.7.1908 - SCLo rh
baseurl=https://mirrors.aliyun.com/centos-vault/7.7.1908/sclo/x86_64/rh/
gpgcheck=0
enabled=1
[centos-sclo-sclo]
name=CentOS-7.7.1908 - SCLo sclo
baseurl=https://mirrors.aliyun.com/centos-vault/7.7.1908/sclo/x86_64/sclo/
gpgcheck=0
enabled=1
EOF
# 清理缓存
sudo yum clean all
sudo rm -rf /var/cache/yum
sudo yum makecache
🔧 第三步:安装编译依赖(新版 GCC)
# 安装开发工具集(含 GCC 9)
sudo yum install -y devtoolset-9
# 安装其他依赖
sudo yum install -y python3 openssl-devel
🔧 第四步:启用 GCC 9 并下载 Node.js 源码
# 启用新版编译器(开启新 shell)
scl enable devtoolset-9 bash
# 验证 GCC 支持 C++17
g++ --version # 应 ≥ 9.0
# 下载 Node.js 18.17.1 源码(不是二进制!)
cd /home/admin
mkdir -p node && cd node
wget https://nodejs.org/dist/v18.17.1/node-v18.17.1.tar.gz
tar -xf node-v18.17.1.tar.gz
cd node-v18.17.1
🔧 第五步:编译并安装 Node.js
./configure --prefix=/home/admin/node/node-v18.17.1
make -j$(nproc) # 编译(约 10~30 分钟)
make install # 安装到指定目录
🔧 第六步:配置环境变量
echo 'export PATH=/home/admin/node/node-v18.17.1/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
✅ 第七步:验证安装
node --version # 输出 v18.17.1
npm --version # 正常显示版本
which node # /home/admin/node/node-v18.17.1/bin/node
✅ 无
GLIBC或CXXABI错误,完全兼容 CentOS 7。
🧼(可选)清理
# 删除源码和压缩包(节省空间)
rm -rf /home/admin/node/node-v18.17.1 /home/admin/node/node-v18.17.1.tar.gz
💡 说明
- 不要使用
.tar.xz二进制包(不兼容 CentOS 7) - 不要使用 NodeSource 脚本或 RPM(已不支持 CentOS 7)
- 必须从源码编译 + GCC 9
按此流程操作,即可在 任何 CentOS 7.7 机器 上成功部署 Node.js 18。
你用 admin 账号通过 源码编译 安装了 Node.js 18.17.1,路径为:/home/admin/node/node-v18.17.1/bin/node
但 root 用户的 PATH 未包含该路径,所以 root 仍使用旧版(如 /usr/local/bin/node 指向 v16.15.0)。
✅ 第八步,为root用户配置:
✅ 方案 1:为 root 用户添加 PATH(推荐)
让 root 也使用新版 Node:
# 切换到 root
sudo -i
# 将 Node 路径加到 root 的 PATH
echo 'export PATH=/home/admin/node/node-v18.17.1/bin:$PATH' >> ~/.bashrc
# 重载配置
source ~/.bashrc
# 验证
node --version # 应输出 v18.17.1
which node # /home/admin/node/node-v18.17.1/bin/node
✅ 优点:无需移动文件,权限清晰。
⚠️ 注意:确保/home/admin对 root 可读(默认是)。
✅ 方案 2:全局替换软链接(谨慎)
如果系统其他服务依赖 node 命令,可更新全局软链接:
# 删除旧链接
sudo rm -f /usr/local/bin/node /usr/local/bin/npm
# 创建新链接
sudo ln -s /home/admin/node/node-v18.17.1/bin/node /usr/local/bin/node
sudo ln -s /home/admin/node/node-v18.17.1/bin/npm /usr/local/bin/npm
✅ 所有用户(包括 root)都会使用新版。
⚠️ 风险:如果路径权限或 SELinux 限制,可能失败。
✅ 方案 3:将 Node 安装到系统目录(最干净)
重新编译时指定 --prefix=/usr/local(需 root 权限):
# 在源码目录(需 admin 有权限)
cd /home/admin/node/node-v18.17.1
# 启用 GCC 9
scl enable devtoolset-9 bash
# 重新配置安装到 /usr/local
sudo ./configure --prefix=/usr/local
sudo make -j$(nproc)
sudo make install
✅ 自动覆盖
/usr/local/bin/node,所有用户生效。
❌ 缺点:需重新编译。
🔍 当前快速验证 root 状态:
sudo -i
echo $PATH
which node
node --version
✅ 推荐操作:
采用方案 1(为 root 添加 PATH),安全、简单、可逆:
echo 'export PATH=/home/admin/node/node-v18.17.1/bin:$PATH' | sudo tee -a /root/.bashrc
sudo -i 'source ~/.bashrc && node --version'
完成后,root 和 admin 都将使用 Node.js v18.17.1。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)