在CentOS上使用NVM管理Node版本

在CentOS上使用NVM管理Node版本

Node.js是一个流行的JavaScript运行时环境,可以让你在服务器端运行JavaScript代码。Node.js有很多不同的版本,每个版本都有自己的特性和修复。如果你想在同一台机器上使用不同的Node.js版本,或者在不同的项目中切换Node.js版本,你可能需要一个工具来帮助你管理这些版本。这个工具就是NVM(Node Version Manager)。

NVM是一个命令行工具,可以让你安装和切换不同的Node.js版本。NVM不会影响系统自带的Node.js,而是将每个版本和对应的模块安装在你的用户目录下。这样,你就可以在不同的终端或者项目中使用不同的Node.js版本,而不用担心版本冲突或者权限问题。

本文将介绍如何在CentOS上安装和使用NVM来管理Node.js版本。

安装NVM

要在CentOS上安装NVM,你需要先确保你有curl或者wget以及git命令。如果没有,你可以用以下命令安装:

1
sudo yum install curl wget git

如图所示(笔者因为提前装过,可能界面不一样):

然后,你可以用以下命令来下载并运行NVM的安装脚本:

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

或者

1
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash

又或者

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

这个命令会将NVM的代码克隆到~/.nvm目录下,并且在你的.bashrc文件中添加一些配置代码。

如果以上方法失败,您可以手动下载NVM安装脚本,然后运行它。在浏览器中打开以下链接,然后将其下载到您的服务器:

NVM Install Script (v0.39.1)

下载后,使用以下命令运行脚本:

1
bash install.sh

为了让NVM生效,你需要重新加载.bashrc文件,或者重新打开一个终端。你可以用以下命令来重新加载.bashrc文件:

1
source ~/.bashrc

或者,你也可以直接执行.bashrc文件中添加的配置代码:

1
2
3
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # 这个命令会加载nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # 这个命令会加载nvm的自动补全功能

若以上几种方法因网络原因无法安装,可以试试下面这个方法:

克隆NVM存储库:使用Git克隆NVM存储库。执行以下命令:

1
git clone https://ghproxy.com/https://github.com/nvm-sh/nvm.git ~/.nvm

这将克隆NVM存储库到您的主目录下的 ~/.nvm 文件夹中。

如图所示:
设置环境变量:

为了使NVM工作,您需要添加NVM的初始化脚本到您的shell配置文件,如 ~/.bashrc(如果您使用Bash)或 ~/.zshrc(如果您使用Zsh)。

使用文本编辑器打开您的配置文件:

如果您使用Bash:

1
nano ~/.bashrc

如果您使用Zsh:

1
2

nano ~/.zshrc

在文件的末尾,添加以下行:

1
2
3
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

保存文件并关闭文本编辑器。

应用配置更改:执行以下命令以使配置更改生效:

1
2
source ~/.bashrc  # 如果您使用Bash
source ~/.zshrc # 如果您使用Zsh

现在,你可以用以下命令来检查NVM是否安装成功:

1
nvm --version

如果看到NVM的版本号,说明安装成功了。

使用NVM安装Node.js

有了NVM之后,你就可以方便地安装和切换不同的Node.js版本了。要查看可用的Node.js版本列表,你可以用以下命令:

1
nvm ls-remote

这个命令会显示所有远程可用的Node.js版本。如果你想查看已经安装在本地的Node.js版本列表,你可以用以下命令:

1
nvm ls

这个命令会显示所有已经安装在本地的Node.js版本

使用特定Node.js版本

安装完成后,您可以使用nvm use命令来切换到所需的Node.js版本:

要安装一个指定的Node.js版本,比如14.18.1,你可以用以下命令:

1
nvm install 14.18.1

这个命令会下载并安装指定的Node.js版本,并且自动设置为当前使用的版本。

node版本的切换

要切换到一个已经安装的Node.js版本,比如12.22.7,你可以用以下命令:

1
nvm use 12.22.7

这个命令会切换到指定的Node.js版本,并且更新相关的环境变量。

查看当前使用的Node.js版本

要查看当前使用的Node.js版本,你可以用以下命令:

1
nvm current

这个命令会显示当前使用的Node.js版本

卸载一个已经安装的Node.js版本

要卸载一个已经安装的Node.js版本,比如10.24.1,你可以用以下命令:

1
nvm uninstall 10.24.1

这个命令会卸载指定的Node.js版本,并且删除相关的文件

创建NVM别名

NVM还提供了一些方便的别名,让你可以快速地切换到一些特定的Node.js版本。比如,你可以用以下命令来切换到最新的稳定版(LTS):

1
nvm use --lts

或者,你可以用以下命令来切换到最新的版本:

1
nvm use node

设置默认Node.js版本

如果您希望某个Node.js版本成为默认版本,可以使用以下命令:

你可以自己创建一些自定义的别名,比如,你可以用以下命令来创建一个叫做default的别名,指向14.18.1版本:

1
nvm alias default 14.18.1

这样,每次你打开一个新的终端,NVM都会自动切换到这个别名指向的版本。

查看所有可用的别名

要查看所有可用的别名,你可以用以下命令:

1
nvm alias

删除别名

要删除一个已经创建的别名,你可以用以下命令:

1
nvm unalias default

验证Node.js安装

最后,您可以使用以下命令来验证Node.js的安装和版本:

1
node -v

若出现对应的node.js版本,则表示安装成功。

若出现下图情况,我的建议是:请降低node版本(。

该错误是由于您的系统缺少所需的GLIBC库版本引起的,而Node.js二进制文件需要这些库。解决此问题的方法之一是在拥有所需GLIBC库版本的CentOS系统上重新编译Node.js,但这可能比较复杂。以下是一种解决方案:

  1. 使用Docker:如果您的服务器上不容易满足Node.js二进制文件的GLIBC库要求,您可以考虑使用Docker容器来运行Node.js。Docker容器内部的环境可以独立于主机环境,并且可以轻松包含所需的库和依赖项。

    首先,安装Docker并启动Docker服务:

    1
    2
    bashCopy codesudo yum install docker
    sudo systemctl start docker

    然后,使用Docker Hub上的Node.js镜像来运行Node.js容器。以下是一个示例命令,运行Node.js 14版本:

    1
    2
    bashCopy code
    docker run -it node:14

    这将启动一个Node.js容器,您可以在其中使用Node.js而无需担心GLIBC库的问题。

  2. 升级CentOS:另一种解决方法是升级您的CentOS系统以满足Node.js的GLIBC库要求。这可能涉及升级到CentOS 8.x 或更高版本。请注意,升级操作可能会影响您的系统,因此请务必备份数据和配置文件,并在进行升级之前详细了解操作的风险和步骤。

    升级CentOS的具体步骤会根据您的当前系统配置和要升级到的版本而有所不同,因此建议查阅相关的CentOS升级文档以获取详细的指导。

选择适合您的情况的解决方案,并根据需要采取相应的措施来解决Node.js的GLIBC库问题。

结束

至此,您已经成功在CentOS上安装了NVM,并可以轻松地管理和切换不同的Node.js版本。这将使您能够更好地适应各种Node.js应用程序的需求。

希望这篇博客对您有所帮助!如果您有任何问题或疑虑,请随时在评论中提出。