← Node.js Windows安装教程 Node.js 入门 →

Linux系统安装Node.js教程:Ubuntu、CentOS、Fedora环境配置与版本管理方案

著
原创 2026-10-11 Node.js 已有人查阅

1.为什么Linux上的安装方式不止一种

Linux发行版生态分散,Debian系用apt,RedHat系用dnf或yum,每个发行版的官方源里塞进去的Node.js版本参差不齐。Ubuntu默认源里的Node.js往往落后好几个大版本,CentOS则需要先启用EPEL才能装到可用的版本。

这就引出一个实际问题:装Node.js不是“一条命令走天下”的事,得先看清楚自己用的是什么发行版,以及项目对版本有没有硬性要求。

Linux是Node.js的核心支持平台之一。服务器端部署、容器化构建、CI流水线里跑的Node.js,绝大多数都落在Linux上。把这个环境搭对,后面的开发才不会反复出问题。

专业术语对照:

  • PPA(PersonalPackageArchive):Ubuntu的个人包档案,用于获取官方源之外的软件版本

  • NodeSource:提供预编译Node.js二进制包的第三方仓库

  • NVM(NodeVersionManager):Node.js版本管理器,支持多版本共存与切换

  • LTS(Long-TermSupport):长期支持版本,维护周期长,适合生产环境

2.先搞清楚三种安装方案的差异

动手之前,先把可选方案摆出来对比,选错了后面会折腾。

方案 适用发行版 版本新鲜度 多版本管理 适用场景
官方包管理器(apt/dnf/yum) 全部 偏旧 不支持 快速搭建、对版本无特殊要求
NodeSource仓库 Debian/Ubuntu、RHEL/CentOS/Fedora 较新 不支持 需要指定大版本(如18.x、20.x)
NVM 全部 任意版本 支持 开发环境、需要切换版本的项目

我的经验判断:如果你只是想在服务器上跑一个固定的Node.js应用,用NodeSource装一个LTS版本就够了,省事。如果你本地开发需要同时维护多个项目,有的跑Node16,有的跑Node20,那NVM是唯一合理的选择。

包管理器直接装的Node.js版本固定,想换版本只能卸载重装,这在多项目并行时很要命。

3.Ubuntu/Debian系:apt+NodeSource安装

这是Ubuntu、Debian、LinuxMint等发行版的通用路径。

第一步:更新包索引

sudo apt update

第二步:注册NodeSource仓库

以LTS版本为例,执行:

curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -

如果要指定大版本,比如Node20:

curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -

这一步会下载并运行NodeSource的配置脚本,自动把仓库地址写入apt的源列表。

第三步:安装Node.js

sudo apt install -y nodejs

注意:通过NodeSource安装时,npm已经包含在nodejs包里,不需要单独执行aptinstallnpm。

第四步:验证

node -v
npm -v

两个命令都返回版本号,说明安装成功。

踩坑提醒:有些老教程会让你先装python-software-properties再add-apt-repositoryppa:chris-lea/node.js。这个PPA早已废弃,chris-lea的仓库多年不更新,里面的Node.js版本停留在0.10时代。别照着旧文章操作,用NodeSource的脚本代替。

4.CentOS/RHEL/Fedora系:dnf与NodeSourceRPM仓库

RedHat系发行版近年来的包管理器从yum迁移到了dnf,CentOSStream、RHEL8+、Fedora都推荐用dnf。

Fedora用户:

sudo dnf install nodejs npm

Fedora官方源里的Node.js版本更新相对及时,通常够用。

CentOS/RHEL用户:

先启用EPEL,再从EPEL装:

sudo dnf install epel-release
sudo dnf install nodejs npm

如果需要更新的大版本,用NodeSource的RPM源:

curl -fsSL https://rpm.nodesource.com/setup_20.x | sudo bash -
sudo dnf install -y nodejs

个人建议:CentOS7已经停止维护,如果还在用这个版本,建议先考虑升级系统或者直接用NodeSource绕过系统源的限制。CentOS7的EPEL仓库里的Node.js版本停留在10.x级别,跑现在前端工具链会报语法错误。

5.NVM:多版本管理的实际用法

如果你的开发场景需要切换Node.js版本,NVM是更合适的方案。

安装NVM:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash

安装脚本会把NVM的初始化代码写入~/.rc。执行以下命令让它立即生效:

source ~/.bashrc

安装Node.jsLTS版本:

nvm install --lts

安装指定版本:

nvm install 18.17.0

切换版本:

nvm use 18.17.0

查看已安装版本:

nvm list

设置默认版本:

nvm alias default 18.17.0

项目反思:我曾经在一个项目里本地用Node20开发,部署到服务器时发现服务器上装的是Node14。某个npm包在14上安装失败,因为它的engines字段要求>=16。如果用NVM管理本地版本,同时在服务器上也用NVM保持版本一致,这类问题可以在早期避免。

6.验证与PATH环境变量排查

安装完成后,node-v和npm-v应该正常输出。如果报commandnotfound,问题多半出在PATH上。

先确认命令实际路径:

which node
which npm

如果which也找不到,说明PATH里没有Node.js的安装目录。

查看当前PATH:

echo $PATH

输出是一串用冒号分隔的目录列表。NodeSource和apt安装的Node.js通常在/usr/bin下,这个目录默认就在PATH里,一般不需要手动配置。NVM安装的路径在~/.nvm/versions/node/<版本>/bin下,NVM的初始化脚本会自动处理。

手动添加PATH(临时方案):

export PATH=$PATH:/usr/local/nodejs/bin

长久生效:把export语句写入~/.rc,然后执行source~/.rc。

7.项目实例:用Express验证环境可用

装完之后,跑一个最小的HTTP服务,确认Node.js和npm都能正常工作。

第一步:创建项目目录

mkdir code号学习编程
cd code号学习编程

第二步:初始化项目并安装Express

npm init -y
npm install express

第三步:编写入口文件

新建code号学习编程.js:

const express = require('express');
const app = express();

app.get('/', (req, res) => {
  res.send('Node.js 运行环境正常');
});

app.listen(3000, () => {
  console.log('服务已启动:http://localhost:3000');
});

第四步:运行

node code号学习编程.js

终端输出服务已启动:http://localhost:3000后,用curl或浏览器访问本机3000端口,看到返回文本就说明整条链路都通了。这比只看版本号更能说明问题:npm能装包,Node.js能执行脚本,网络端口能正常监听。

8.权限问题与npm全局安装

用npminstall-g装全局包时,如果出现EACCES权限错误,说明npm试图往系统目录写文件。

不推荐的方案:sudonpminstall-g。这会把全局包的所有者变成root,后续用普通用户更新或卸载时会出现权限冲突。

推荐的方案:把npm全局目录改到用户目录下。

mkdir ~/.npm-global
npm config set prefix '~/.npm-global'

然后在~/.rc末尾追加:

export PATH=~/.npm-global/bin:$PATH

执行source~/.rc使配置生效。此后npminstall-g装的包都在用户目录下,不需要sudo。

9.本节课程知识要点

  • Ubuntu/Debian推荐用NodeSource仓库安装LTS版本,命令为curl-fsSLhttps://deb.nodesource.com/setup_lts.x|sudo-E-加sudoaptinstallnodejs;

  • CentOS/RHEL先启用EPEL,Fedora直接用dnf;

  • 多版本切换需求用NVM,安装脚本为curl-o-https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh|;

  • 验证用node-v和npm-v,PATH问题用whichnode和echo$PATH排查;

  • 全局包权限问题用npmconfigsetprefix解决,不用sudo;

  • 实际项目用Express跑一个端口监听,确认环境完整可用。

10.常见问题速查

Q:apt装的Node.js版本太旧,能直接升级吗?
A:不建议在apt版本之间来回折腾。要么添加NodeSource仓库后重装,要么用NVM管理版本。

Q:NVM和NodeSource能共存吗?
A:会冲突。NVM修改的是shell层面的PATH,优先级高于系统路径。如果两个都装了,node-v实际调用的可能是NVM管理的版本。确认方法:whichnode,看输出路径是不是~/.nvm/开头。

Q:sudoaptinstallnodejsnpm和只装nodejs有什么区别?
A:通过NodeSource安装时,npm已经在nodejs包里了,单独装npm反而可能从系统源拉取旧版本,造成版本混乱。

Q:LinuxMint用哪个方案?
A:Mint基于Ubuntu,直接按Ubuntu的NodeSource方式操作即可。

← Node.js Windows安装教程:LTS版本下载、npm验证与PATH环境变量配置指南 Node.js入门8个实战示例掌握console、变量、条件判断、函数与fs/path/os模块 →
分享笔记 (共有 篇笔记)
验证码:
微信公众号