推荐使用NodeSource仓库安装指定LTS版本,因其更新及时、npm随nodejs一同安装且路径标准;次选nvm管理多版本,适合开发机;系统包管理器安装虽快但版本陈旧、命令名和路径不规范,易导致node/npm不可用。

直接装 nodejs 和 npm 包通常能跑起来,但大概率不是你想要的版本,甚至 npm 命令根本不存在——这是 Linux 发行版包管理器的常见坑。
用系统包管理器安装(快但不推荐)
Ubuntu/Debian 上执行 sudo apt install nodejs npm 看似最省事,但 Ubuntu 22.04 默认装的是 nodejs v18.19.x + npm v8.19.x,而 Debian 12 更老(v18.16.x + v9.5.x)。CentOS/RHEL 7/8 的 nodejs 包可能连 npm 都不附带,得额外 sudo yum install npm 才行。
问题不止于旧:系统包常把 node 命令软链成 /usr/bin/nodejs,导致很多脚本直接报 command not found: node;npm 也常因权限或路径问题无法全局安装包。
- Ubuntu 用户遇到
npm -v报错,大概率是没装npm包(只装了nodejs) - Debian 用户执行
node -v提示“no such file”,检查which node是否输出空,再试nodejs -v - 所有发行版都建议跳过这步,除非你明确需要系统级、只读、不升级的极简环境
用 NodeSource 仓库装指定 LTS 版本(推荐大多数场景)
这是平衡速度、稳定性和可控性的首选。NodeSource 提供 v18.x、v20.x、v22.x 等多个 LTS 分支,更新及时,且 npm 随 nodejs 一起安装,命令名和路径都标准。
以 Ubuntu/Debian 安装 v20.x LTS 为例:
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash - sudo apt-get install -y nodejs
CentOS/RHEL 8+ 改用 dnf:
curl -fsSL https://rpm.nodesource.com/setup_lts.x | sudo bash - sudo dnf install -y nodejs
装完立刻验证:
-
node --version应输出类似v20.12.2 -
npm --version应输出类似10.2.4 -
which node应返回/usr/bin/node(不是/usr/bin/nodejs)
注意:setup_lts.x 指向当前最新 LTS;若需固定 v20.12.x,改用 setup_20.x;换 v22.x 就用 setup_22.x。
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
用 nvm 管理多版本(开发机/项目隔离必备)
当你同时维护多个项目,一个用 v18,一个要 v22,一个还在跑 v16,系统级安装就完全失效。这时必须上 nvm。
安装与基础使用:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash source ~/.bashrc # 或 ~/.zshrc(如果你用 zsh) nvm install --lts nvm use --lts
关键点:
-
nvm install --lts装的是当前官方标记为 LTS 的最新版(2026 年 4 月是 v20.12.2) -
nvm use只对当前 shell 有效;加nvm alias default 'lts/*'才能让新终端默认启用 -
nvm ls查本地已装版本,nvm ls-remote --lts查可装的 LTS 列表 - 别用
sudo跑nvm命令——它专为用户级安装设计,sudo 会破坏路径和权限
手动解压二进制包(离线/定制路径/容器内适用)
适用于无外网、不能用 root、或需严格控制安装路径(如 /opt/node)的场景。官网下载的 .tar.xz 包自带 node 和 npm 二进制,无需编译。
步骤(以 v20.12.2 x64 为例):
wget https://nodejs.org/dist/v20.12.2/node-v20.12.2-linux-x64.tar.xz sudo tar -xf node-v20.12.2-linux-x64.tar.xz -C /opt sudo ln -s /opt/node-v20.12.2-linux-x64/bin/node /usr/local/bin/node sudo ln -s /opt/node-v20.12.2-linux-x64/bin/npm /usr/local/bin/npm
验证前确保 /usr/local/bin 在 $PATH 中(通常默认在);若用非 root 用户解压到家目录,则软链改用 ln -s ~/node-v20.12.2-linux-x64/bin/node ~/bin/node,并确认 ~/bin 已加入 PATH。
这个方式最干净,但也最“裸”:没有自动更新机制,版本升级全靠手动删旧解新;npm 全局安装的包默认落在 ~/.npm-global,需额外配 npm config set prefix '~/.npm-global' 并加 ~/.npm-global/bin 到 PATH 才能直接调用。
真正容易被忽略的不是“怎么装”,而是装完后 npm 全局命令(比如 pm2、yarn)为什么找不到——八成是 npm 安装的 bin 目录没进 $PATH,或者用了系统包管理器却没意识到它把 node 和 npm 拆到了不同路径。

















