Centos上安装nvm

1. 前言

Node Version Manager (NVM) 是一种广泛使用的工具,允许开发人员在单台计算机上管理 Node.js 的多个版本。它的重要性怎么强调都不为过,因为 Nodejs 应用程序有时可能是依赖特定版本运行,然而不同的项目可能需要不同的 Nodejs 版本。NVM 提供的灵活性确保了不同项目同时运行在同一台机的开发过程的顺利进行,允许开发人员在 Node 版本之间无缝切换。在 macOS 上,有多种安装 NVM 的方法,但最流行、最有效的方法之一是使用 Homebrew,这是 macOS 著名的包管理器。

本指南将引导您完成使用 yum 在 centOS 7.9 上安装 NVM 的详细步骤,让您轻松设置灵活的 Node.js 开发环境。

先决条件

  1. 需要安装 git
  2. 需要安装 curl 或者 wget

删除现有 Nodejs 版本

可以参考我的博客安装并配置 nodejs尾部”在 Centos 上卸载 nodejs”章节所述的方法删除 Nodejs.

安装 nvm

以管理员身份

1
2
3
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash
# 或者
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash

由于网络阻塞的原因, 如果自动安装步骤运行不了, 可以手动步骤替代.

  1. 下载安装文件

    在某台能下载安装文件的机器下载安装包, 并上传到服务器的/tmp 目录

    安装文件位于https://github.com/nvm-sh/nvm/archive/refs/tags/v0.39.5.tar.gz

  2. 安装

    1
    sudo tar -xvf /tmp/nvm-0.39.5.tar.gz -C /usr/local

配置 nvm

在配置 nvm 之前, 我们要理解官网上的这句话

nvm is a version manager for node.js, designed to be installed per-user, and invoked per-shell. nvm works on any POSIX-compliant shell (sh, dash, ksh, zsh, bash), in particular on these platforms: unix, macOS, and windows WSL.

其中的 per user and invoked per-shell 非常重要.

当我们从手动安装 nodejs 的方式, 切换到 nvm 来管理的时候, 可能会不适应.

因为 nodejs 的安装是 per system 的, 就是安装一套 nodejs, 系统上的所有用户都可以公用, 而且大多数软件都是这种方式.

但是 nvm 在这方面有所颠覆, 它是 per user 的, 就是系统上有 10 个用户, 我们得分别使用nvm install x.y.z 十次.

如果我们不转变思想, 依然按照 per system 的理解去安装与配置 nodejs, 后面使用起来会遇到很多奇奇怪怪的问题.

当然 per user 这种方式有好处也有坏处, 好处是它能做到真正的软件的多版本共存, 当然多版本共存本来就是软件管理实践中一种新的尝试.

无论哪种新的实践, 初期都会有这样或者那样的问题.

缺点也是显而易见的, 就是占用系统空间比较多, 不仅 nodejs 本身会被安装多次, 就连 nodejs 依赖包也会重复多份, 这就有些夸张了.

毕竟 nvm 现在的版本号依然是 0.35.x 还没有到达 1.0 阶段.

“per shell”也很好理解, 不同的 shell 进程可以使用各种独立的, 不同与其他 shell 的 nodejs 版本以及配置, 如果多版本能做到这种粒度, 在功能上已经非常完美了. 如果在性能上再有所改善, 例如让磁盘空间占用更小一点, 内存占用更小一点, cpu 性能损耗更小一些, 那就完美了.

开始配置

接下来,在用户主目录中创建一个 .nvm 目录, 将来 nodejs 的各版本, 以及依赖包都会安装在这个目录下, 以实现用户隔离.

1
mkdir ~/.nvm

vim $HOME/.bash_profile

1
2
3
4
5
6
7
8
9
10
11
12

export NVM_DIR="$HOME/.nvm"
# 配置 nvm 镜像, 加快下载nodejs的速度
export NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node
# 加载nvm相关命令
[ -s "/usr/local/nvm-0.39.5/nvm.sh" ] && source "/usr/local/nvm-0.39.5/nvm.sh"
# 加载nvm命令补全配置
[ -s "/usr/local/nvm-0.39.5/etc/bash_completion" ] && source "/usr/local/nvm-0.39.5/bash_completion"

# 设置默认node版本
nvm use 16

使用 NVM

首先,查看可以安装哪些 Node 版本。要查看可用版本,请键入:

1
2
nvm ls-remote

现在,您可以安装上面输出中列出的任何版本。您还可以使用别名,例如 node 表示最新版本,lts 表示最新 LTS 版本等。

1
2
3
sudo nvm install node     ## 安装最新版本
# 或者
sudo nvm install 17 ## 安装 Node.js 17.X 版本

安装后,可以验证安装的内容:

1
nvm ls

如果您的系统上安装了多个版本,您可以随时将任何版本设置为默认版本。要将节点 18.X 设置为默认版本,只需使用:

1
2
3

nvm use 17

同样,您可以安装其他版本(例如 Node 12、15 和 18 版本)并在它们之间切换。

更多 nvm 命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

# 查看帮助
nvm --help

nvm uninstall 17

# 使用特定版本的node运行脚本
nvm run 6.10.3 app.js

# 使用特定版本的node运行脚本并将path指向该版本的node
nvm exec 4.8.3 node app.js

# 设置默认的node版本
nvm alias default 16.14.2

# 如果您只想返回使用系统版本的Node,则无需卸载NVM。
# 在这种情况下,请运行命令
nvm use system

配置 Nodejs

由于不知名的原因, 国内访问 npm 仓库会很慢, 所以需要设置镜像, 淘宝为我们提供了很好的镜像源.

1
2
3
4
5
6
7
8
9
10
设置淘宝镜像
npm config set registry https://registry.npmmirror.com
# 或者使用华为镜像
# npm config set registry https://mirrors.huaweicloud.com/repository/npm/
# 或者使用腾讯镜像
# npm config set registry http://mirrors.cloud.tencent.com/npm/
// 配置后可通过下面方式来验证是否成功
npm config get registry
// 或
npm info express

参考文档

nvm github