在 Ubuntu 上升级 Node.js,真正难的通常不是命令本身,而是先判断自己该用“系统级安装”还是“用户级多版本管理”。这篇文章把两种最常见方案拆开讲:什么时候该选 NodeSource,什么时候更适合 NVM,以及每种方式的关键命令、适用场景和验证方法,方便你按自己的开发习惯直接落地。
先判断:你该用哪种更新方式
Ubuntu 上更新 Node.js,最常见的是两条路线:
- NodeSource 存储库:适合想固定一个版本线的用户,比如长期使用
18.x或20.x,并希望继续通过apt管理系统里的 Node.js。 - NVM(Node Version Manager):适合一台机器上同时跑多个项目、而且项目所需 Node.js 版本不一致的情况。它支持按需安装、切换和设置默认版本,灵活性更高。
如果你的机器更偏向服务器、构建机或单一开发环境,NodeSource 通常更直接;如果你经常在新旧项目之间切换,NVM 往往更省事。
方法一:用 NodeSource 更新,适合固定版本管理
NodeSource 提供现成的稳定版软件源,适合希望一次装好并保持版本明确的用户。尤其当你已经确定要使用某个大版本,例如 20.x,这种方式会比较顺手。

先清理旧版本,避免包冲突
如果你之前是通过 apt 安装的 Node.js,建议先卸载旧包,再进行更新:

sudo apt-get remove --purge nodejs npm
sudo apt-get autoremove
这一步的目的很简单:减少旧包残留带来的依赖冲突,避免新旧版本混装。
添加 NodeSource 软件源
在执行命令前,先去 NodeSource 确认你想要的版本号,比如 18.x 或 20.x。下面以 20.x 为例:
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
这条命令会自动完成软件源配置和密钥添加,省去手工编辑源列表的步骤。
安装并验证版本
软件源配置完成后,更新本地索引并安装 Node.js:
sudo apt-get update
sudo apt-get install -y nodejs
安装完成后,检查版本是否已经切换成功:
node -v
npm -v
如果输出类似 v20.9.0 和 10.2.4,通常就说明安装已经生效。
这一方案的优点是路径清晰、便于统一管理;缺点是它更适合单版本使用,不太适合频繁切换不同 Node.js 版本的开发环境。
方法二:使用 NVM,适合多版本切换
如果你手上既有老项目,又要兼顾新项目,那 NVM 往往比系统软件源更实用。它把 Node.js 的安装和切换交给当前用户环境管理,不容易和系统级依赖混在一起。
先移除旧的 apt 安装版本
为了避免命令路径混乱,开始前同样建议先清理通过 apt 安装的 Node.js 和 npm:
sudo apt-get remove --purge nodejs npm
sudo apt-get autoremove
安装 NVM 并重新加载 Shell
以 v0.39.7 为例,可以这样安装 NVM:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
安装完成后,需要重新加载 Shell 配置文件,让 nvm 命令立即可用:
source ~/.bashrc
# 或 source ~/.zshrc
然后检查 NVM 是否安装成功:
nvm -v
能正常输出版本号,就说明 NVM 已经可以使用。
安装、切换并设置默认版本
接下来就可以用 NVM 安装 Node.js。常见有两种方式:
- 安装最新稳定版:
nvm install node - 安装 LTS 长期支持版:
nvm install --lts
对应命令如下:
nvm install node
nvm install --lts
安装后,切换到目标版本:
nvm use node
# 或 nvm use --lts
如果你希望新终端默认进入这个版本,可以继续设置别名:
nvm alias default node
最后仍然建议执行版本检查:
node -v
npm -v
NVM 的核心优势在于切换方便,特别适合前端开发、全栈开发或维护多个历史项目的场景。
更新时的几个实用提醒
两种方式都能完成 Node.js 更新,但使用习惯会直接影响后续体验。
- 如果你需要长期锁定某个版本线,例如
18.x或20.x,优先考虑 NodeSource。 - 如果你经常在不同项目之间切换版本,NVM 会更灵活,也更适合个人开发环境。
- 遇到权限问题时,NodeSource 相关命令通常会用到
sudo;而 NVM 一般不需要 root 权限,这也是它更轻量的一点。
简单说,服务器或单一环境更偏向 NodeSource,开发机和多项目环境更偏向 NVM。先选对路线,再执行更新,后面基本就不会绕弯路。







