安装 LTS 版 Node 的几种方式
前置条件:本文所有操作默认在 Ubuntu Server 以非 root 用户身份进行。
若你使用其它 Linux 发行版或其它相关条件不同时,可参考本文操作流程,细节需适当变化。
方式一 - 使用 n
n 本身就是个 node package 因此要先有个可用的 node。
1. 安装默认 sourcelist 的 node 以及 npm
sudo apt-get install npm -y
2. 全局安装 n
sudo npm install -g n
全局安装的 n 默认会放到 /usr/local/lib/node_modules/
这是个需要 root 权限的目录,因此需要 sudo。
3. 安装 LTS 的 Node
sudo n lts
由于是全局安装的 LTS 版 Node,此处依然要 sudo。
4. 使新 Node 生效
安装成功后,会告诉我们 node 的存放目录变化了。
此时两种处理选择:更新本次 shell 对 node 的引用,或者 logout 重新登录一次。
Note: the node command changed location and the old location may be remembered in your current shell.
old : /usr/bin/node
new : /usr/local/bin/node
If "node --version" shows the old version then start a new shell, or reset the location hash with:
hash -r (for bash, zsh, ash, dash, and ksh)
rehash (for csh and tcsh)
其它 n 技巧
- 查看所有可用版本
n ls-remote --all
方式二 - 使用 nvm 安装 Node
1. 下载并安装 nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
由于是 github 相关的域名,可能会遇到 dns 的问题,可以手动将本地的备用 DNS 改成 8.8.8.8 解决问题。
例如 Win11 > 网络和 Internet > WLAN > WIFI名称 > DNS 服务器分配 > 编辑 > 手动 > 备用 DNS > 8.8.8.8
下载很慢的话,可以尝试在 /etc/resolv.conf 追加一个 nameserver 8.8.8.8 示例如下:
nameserver 127.0.0.53
nameserver 8.8.8.8
nameserver 114.114.114.114
不要屏蔽默认的 nameserver 127.0.0.53,会导致 apt update 时有 mirrors 相关的网络错误,以及不可预期的网络问题。
改乱了也不怕,重启时会自动恢复默认 nameserver 不用担心。
或者直接通过 https://www.ip-lookup.org/location/raw.githubusercontent.com 查询该域名的真实 IP 并将其添加到 /etc/hosts
可能还会遇到 GnuTLS recv error (-110): The TLS connection was non-properly terminated. 原因未明。
安装成功后关闭命令行窗口,重启一个,测试nvm是否安装成功:
nvm -v
如果没有条件重启窗口,可以执行以下命令立即使用 nvm:
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
安装 LTS 稳定版 Node
nvm install --lts
3. 其它用户共享使用 nvm
前置条件:
- 用户 A 安装好了 nvm 以及 LTS 版的 node
- 用户 B 未装过 nvm 及 node
- 用户 A 的 ~/.nvm 目录权限开放
默认装好 node 以后只有本用户有 nvm/node/npm 等命令,其它用户会报错:bash: line 138: npm: command not found
此时用户 B 可执行一行命令获得 nvm 能力:export NVM_DIR="$HOME/.nvm" && [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
由于 LTS 版的 node 在用户 A 使用 nvm 时已下载安装过,因此用户 B 可以紧接着直接 nvm use --lts 即可。
最终,用户 B 可以正常使用 nvm/node/npm 等命令了。
方式三 - 更新官方 deb 源并安装
change the version as needed ./nsolid_setup_deb.sh 20
curl -SLO https://deb.nodesource.com/nsolid_setup_deb.sh
chmod 500 nsolid_setup_deb.sh
./nsolid_setup_deb.sh 21
apt-get install nodejs -y
https://github.com/nodesource/distributions#installation-scripts