Linux (Ubuntu/CentOS) 环境下安装Node.js的常用方法

作者:接口漫谈

时间:2026-11-03

浏览:103

详细解析在 Linux (Ubuntu / CentOS) 系统下安装 Node.js 的四种主流方法:NodeSource 官方仓库、NVM 版本管理器、预编译二进制包及系统自带包管理器。包含完整命令、步骤流程图、多版本切换与权限避坑指南。

文章目录
Linux 实战教程 Node.js 运行时 适用系统:Ubuntu 20.04/22.04/24.04 · CentOS 7/8/9 · Rocky Linux

在 Linux 服务器与开发环境中安装 Node.js 主要有四种路径:追求生产稳定与自动化维护的 NodeSource 官方源、追求多版本随时切换与权限隔离的 NVM 版本管理器、适合内网断网与容器定制的 预编译二进制包,以及仅用于临时简易测试的 系统原生仓库。本文直接给出各方案在 Ubuntu(Debian 系)与 CentOS / Rocky Linux(RHEL 系)上的具体安装步骤、关键配置与决策依据。

Linux (Ubuntu/CentOS) 环境下安装Node.js的常用方法
图 0:Linux (Ubuntu / CentOS) 环境下 Node.js 四种主流部署路径总览

一、四种主流安装方式的核心差异与选型路径

不同部署场景对 Node.js 的版本新鲜度、升级周期以及系统操作权限有不同要求。直接使用发行版自带的 apt install nodejs 或 yum install nodejs 虽然最简单,但官方发行版仓库维护策略偏保守,打包的 Node.js 往往滞后于社区 LTS(长期支持版),且通常缺失最新特性与 npm 现代语法支持。

为了避免后续项目依赖安装报错或生产环境版本失配,在执行安装命令前,应先根据服务器定位进行技术选型:

  • 生产服务器与 CI/CD 节点:优先选用 NodeSource 官方源。它通过标准系统包管理器(APT / DNF)托管指定主版本(如 Node.js 20.x LTS),并随系统安全补丁平滑升级。
  • 个人工作站与团队协作机:强烈推荐选用 NVM (Node Version Manager)。各版本 Node.js 安装在当前用户家目录下,无需 root 提权,且能根据不同项目通过单行命令随时切换运行时。
  • 离线内网、安全审计机房或自构建 Docker 镜像:直接下载 官方预编译二进制包(.tar.xz),解压后软链接到系统路径,依赖最少且可精确控制文件落地位置。
  • 边缘简易脚本或无特定版本要求的轻量测试:可直接使用 系统自带源。
Linux (Ubuntu/CentOS) 环境下安装Node.js的常用方法
图 1:Node.js 安装方式选型决策链路

二、方法一:通过 NodeSource 官方源安装(生产环境推荐)

NodeSource 是 Node.js 官方认可的第三方软件仓库维护团队,专门为 Debian、Ubuntu、RHEL、CentOS 等 Linux 发行版提供最新的 Node.js 稳定打包源。通过 NodeSource 安装后,Node.js 和 npm 会注册进系统包管理体系,日常使用 apt upgrade 或 dnf upgrade 即可保持更新。

Linux (Ubuntu/CentOS) 环境下安装Node.js的常用方法
图 2:NodeSource 仓库配置与自动化安装流水线

1. 在 Ubuntu / Debian 系统下的操作步骤

在 Ubuntu 系统中,需要先安装基础证书与传输工具,再通过官方脚本导入 GPG 签名密钥和软件源列表:

# 步骤 1:更新本地索引并安装必要依赖
sudo apt update
sudo apt install -y ca-certificates curl gnupg

# 步骤 2:导入 NodeSource Node.js 20.x LTS 源配置脚本
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -

# 步骤 3:使用 APT 安装 Node.js (自动包含对应版本的 npm)
sudo apt install -y nodejs
说明:脚本会自动在 /etc/apt/sources.list.d/nodesource.list 中写入软件源配置并自动执行 apt update。若需要安装其他版本(例如 18.x 或 22.x),只需将命令中的 setup_20.x 替换为对应版本号即可。

2. 在 CentOS / RHEL / Rocky Linux 系统下的操作步骤

CentOS 7 及后续基于 RHEL 体系的系统(CentOS Stream、Rocky Linux、AlmaLinux)使用 RPM 格式软件源:

# 步骤 1:确认 curl 已就绪
sudo yum install -y curl

# 步骤 2:运行 NodeSource RPM 仓库配置脚本 (以 20.x LTS 为例)
curl -fsSL https://rpm.nodesource.com/setup_20.x | sudo bash -

# 步骤 3:在 CentOS 8/9/Rocky Linux (DNF) 或 CentOS 7 (YUM) 中执行安装
sudo dnf install -y nodejs
# 若在较旧的 CentOS 7 系统中,则执行:
# sudo yum install -y nodejs

安装完成后,检查版本确认安装成功:

# 验证可执行文件
node -v
npm -v

# 示例终端输出:
v20.12.2
10.5.0

三、方法二:使用 NVM 管理器安装(开发与多版本首选)

NVM(Node Version Manager)是基于 Bash/Zsh 的版本管理脚本。它的核心价值在于将 Node.js 完全解耦于全局操作系统,所有文件下载在用户的 ~/.nvm 目录下,不会污染 /usr/bin,也不需要 sudo 权限。这不仅彻底杜绝了 sudo npm install -g 引发的安全漏洞和权限异常,还允许不同项目使用不同版本的 Node 运行时。

Linux (Ubuntu/CentOS) 环境下安装Node.js的常用方法
图 3:NVM 多版本管理运作原理与环境隔离模型

1. 下载并安装 NVM 脚本

在终端中执行官方安装脚本(Ubuntu 与 CentOS 操作一致):

# 下载并执行 NVM 官方安装脚本
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash

该脚本会将仓库克隆到 ~/.nvm,并在当前的 Shell 配置文件(如 ~/.bashrc、~/.bash_profile 或 ~/.zshrc)末尾自动追加环境变量定义。

2. 载入环境变量并验证

为了让当前终端会话识别 nvm 命令,需要重载 Shell 配置文件,或关闭终端重新登录:

# 使配置立即生效
source ~/.bashrc

# 检查 nvm 命令是否可用
command -v nvm

# 示例输出(若正常会输出 "nvm"):
nvm

3. 使用 NVM 安装与管理 Node.js 版本

NVM 允许一键安装指定版本或长期支持版,并动态切换全局指向:

# 1. 安装最新版 LTS (长期支持版)
nvm install --lts

# 2. 安装指定具体版本 (例如 Node.js 18.20.2)
nvm install 18.20.2

# 3. 查看本地已安装的所有 Node.js 版本
nvm ls

# 示例输出:
# ->     v18.20.2
#        v20.12.2
# default -> lts/* (-> v20.12.2)

# 4. 切换当前终端所使用的 Node.js 版本
nvm use 20.12.2

# 5. 设置全局默认使用的版本 (新开终端默认生效)
nvm alias default 20.12.2
提示:在微服务或前端重构场景中,若某一老项目仅兼容 Node 16,而新项目依赖 Node 20,只需在各自项目根目录下创建 .nvmrc 文件并写入版本号(如 16.20.2),进入该目录后执行 nvm use 即可瞬间就绪。

四、方法三:官方预编译二进制包安装(离线与受限环境)

若目标服务器处于无法连通公网的生产隔离机房,或者系统被限制无法添加第三方 PPA / YUM 源,使用预编译二进制包(.tar.xz)是最稳妥的做法。

1. 获取并解压二进制压缩包

在外网机器下载官方预编译包后上传至目标服务器(以 node-v20.12.2-linux-x64.tar.xz 为例):

# 步骤 1:下载官方编译好的 Linux x64 二进制归档包
wget https://nodejs.org/dist/v20.12.2/node-v20.12.2-linux-x64.tar.xz

# 步骤 2:解压到通用的软件存放目录 /usr/local/lib/nodejs/
sudo mkdir -p /usr/local/lib/nodejs
sudo tar -xJvf node-v20.12.2-linux-x64.tar.xz -C /usr/local/lib/nodejs/

# 步骤 3:为方便后续目录管理,建议建立规范命名的软链接
sudo ln -s /usr/local/lib/nodejs/node-v20.12.2-linux-x64 /usr/local/lib/nodejs/current

2. 配置全局系统环境变量

将解压目录下的 bin 路径加入系统 PATH 中。编辑 /etc/profile 或 /etc/profile.d/nodejs.sh:

# 创建专用的 profile 配置文件
sudo tee /etc/profile.d/nodejs.sh << 'EOF'
export NODEJS_HOME=/usr/local/lib/nodejs/current
export PATH=$NODEJS_HOME/bin:$PATH
EOF

# 让全局配置立即在当前终端生效
source /etc/profile.d/nodejs.sh

或者,也可以直接将关键二进制文件符号链接至 /usr/local/bin:

sudo ln -sf /usr/local/lib/nodejs/current/bin/node /usr/local/bin/node
sudo ln -sf /usr/local/lib/nodejs/current/bin/npm /usr/local/bin/npm
sudo ln -sf /usr/local/lib/nodejs/current/bin/npx /usr/local/bin/npx

五、方法四:系统自带包管理器安装(仅用于临时测试)

Ubuntu 和 CentOS 的官方镜像源中均内置了 nodejs 软件包。此方法虽然只需敲击单行命令,但缺点十分明显。

1. 具体操作命令

# Ubuntu / Debian 系统:
sudo apt update
sudo apt install -y nodejs npm

# CentOS 7 / 8 / 9 系统:
sudo yum install -y nodejs npm
# 或在 CentOS 8+/Rocky Linux:
# sudo dnf install -y nodejs
局限性警示:
  1. Ubuntu 20.04 自带源提供的 Node.js 版本多为 10.x 或 12.x,Ubuntu 22.04 提供的多为 12.x,早已超出社区维护期(EOL)。
  2. CentOS 7 官方源中的 Node.js 版本甚至可能停留在 6.x 或 10.x,无法运行任何现代前端构建工具(如 Vite 5+、Webpack 5+ 或 Next.js)。
  3. 在 Ubuntu 上,系统源常常将 npm 单独拆分打包,容易因为系统依赖冲突导致安装失败。

六、安装后的必要配置与常见问题排查

1. 配置 npm 全局安装目录(避免 EACCES 权限错误)

如果使用 NodeSource 或系统包管理器安装,默认的全局模块目录为 /usr/lib/node_modules。当开发者执行 npm install -g pnpm 或 yarn 时,会报出 EACCES: permission denied 错误。许多初学者习惯于滥用 sudo npm install -g,这可能导致恶意 npm 脚本获取系统 root 权限执行任意代码。

推荐的标准解决方案:将 npm 全局目录重定向至普通用户家目录下。

# 1. 创建本地专属全局模块目录
mkdir -p ~/.npm-global

# 2. 配置 npm 使用该目录作为全局安装前缀
npm config set prefix '~/.npm-global'

# 3. 将新路径写入环境变量配置 (~/.bashrc)
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

# 4. 之后无需 sudo 即可安全安装任何全局工具
npm install -g yarn pnpm

2. CentOS 7 上安装 Node.js 18+ 报错 GLIBC 缺失

Node.js 从 18.x 开始要求系统最低提供 GLIBC_2.28 基础 C 库。由于 CentOS 7 官方内核默认附带的是 GLIBC_2.17,直接运行 Node 18 或 20 会抛出:

# 典型错误示例:
node: /lib64/libm.so.6: version `GLIBC_2.27' not found (required by node)
node: /lib64/libc.so.6: version `GLIBC_2.28' not found (required by node)

应对方案:若宿主机仍为 CentOS 7,受 glibc 强约束,建议生产环境最高安装 Node.js 16.x LTS;若必须运行 Node 18+ 或更高版本,应当升级至 CentOS Stream 9、Rocky Linux 9 或 Ubuntu 22.04+,避免手动强行编译 glibc 引发系统关键服务崩溃。

七、四种安装方式横向对比与总结

综合版本新鲜度、日常维护成本、团队权限管理和实际业务环境,四种方式的综合表现如下表及图示所示:

Linux (Ubuntu/CentOS) 环境下安装Node.js的常用方法
图 4:Linux 下四种 Node.js 安装方式综合特性对比矩阵
方案 首选应用场景 优点 局限性
NodeSource 官方源 生产集群、标准云服务器、CI/CD 构建机 与系统 apt/dnf 无缝集成,官方维护 LTS,适合自动化运维脚本批量分发 单机只能绑定一个主版本,需要 root 提权操作
NVM 版本管理器 本地开发机、个人测试机、多版本混合维护 普通用户独立隔离、命令级秒切版本、各版本全局包不互相冲突 对于由 systemd 托管的后台服务守护进程需要额外指定可执行路径
预编译二进制包 内网隔离环境、特殊硬件架构、定制容器 开箱即用无外网依赖、解压即部署、路径自定义 后续版本升级需手动重新解压或切换符号链接
系统原生软件源 简易命令临时校验、非生产性边缘脚本 直接敲命令即装,无需配置任何第三方密钥或脚本 版本严重滞后社区,缺失现代特性,不宜作为项目运行基础

总体而言,开发测试环境首选 NVM,能够轻松应对不同技术栈项目的版本要求;生产环境标准化部署推荐 NodeSource 官方仓库,配合包管理工具实现可靠的生命周期管理。在受限网络下,官方二进制包则是最为稳健的备选方案。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章