Linux 使用 nvm 安装 node

2023-10-18 15:45:00 浏览数 (2)

在之前,写过一篇文章(https://cloud.tencent.com/developer/article/2186375),但是有点久了,加上有一些内容或许已经变更,因此决定重新写一篇

下载并安装

nvm 的官方仓库地址:https://github.com/nvm-sh/nvm

可以直接从仓库的 Releases 下载相关版本,但是我比较懒,为了更新合下载方便,我选择直接使用 git 克隆仓库

我希望把他安装在系统的根目录,以便所有用户都可以使用

代码语言:javascript复制
cd /  # 切换到根目录

克隆代码(由于当前账号无权限直接操作跟目录,所以使用 sudo 提权)

代码语言:javascript复制
ubuntu@VM-0-12-ubuntu:/$ sudo git clone https://github.com/nvm-sh/nvm.git
Cloning into 'nvm'...
remote: Enumerating objects: 9094, done.
remote: Counting objects: 100% (9094/9094), done.
remote: Compressing objects: 100% (3216/3216), done.
remote: Total 9094 (delta 5825), reused 8980 (delta 5774), pack-reused 0
Receiving objects: 100% (9094/9094), 3.36 MiB | 27.71 MiB/s, done.
Resolving deltas: 100% (5825/5825), done.
ubuntu@VM-0-12-ubuntu:/$ 

重命名文件夹 来隐藏他 将他从 nvm 改成 .nvm

代码语言:javascript复制
sudo mv ./nvm/ ./.nvm

修改 .nvm 文件夹的权限,以便所有用户都能读写和执行

代码语言:javascript复制
sudo chmod 777 -R ./.nvm/

现在 nvm 已经安装成功了 接下来就是需要配置环境变量

为所有用户配置全局变量

如果你希望所有用户都可用,你需要在 /etc/bash.bashrc 中配置全局 Bash 配置文件

代码语言:javascript复制
sudo vim /etc/bash.bashrc

在文件末尾加入

代码语言:javascript复制
export NVM_DIR="/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && . "$NVM_DIR/bash_completion"

注意第一行变量中的 nvm 路径,我这里安装是在 根目录下的 .nvm 文件夹中,如果你的是 nvm-0.39.1 这种其他名字的文件夹(比如手动从 Release 下载的) 或者有嵌套文件夹,那么请修改为你自己刚刚将 nvm 下载到的位置

重新加载全局配置文件

代码语言:javascript复制
source /etc/bash.bashrc

为单个用户配置全局变量

如果你不希望所有用户都可以用,而是只有单独的用户可以用,或是你将他安装在了用户目录中,作为用户独立的软件,那么和配置全局变量的步骤一样

编辑用户主目录下 .bashrc 文件(没有则新建)

代码语言:javascript复制
vim ~/.bashrc

同样,在文件的末尾加上

代码语言:javascript复制
export NVM_DIR="/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && . "$NVM_DIR/bash_completion"

注意第一行变量中的 nvm 路径,我这里安装是在 根目录下的 .nvm 文件夹中,如果你的是 nvm-0.39.1 这种其他名字的文件夹(比如手动从 Release 下载的) 或者有嵌套文件夹,那么请修改为你自己刚刚将 nvm 下载到的位置

重新加载用户的配置文件

代码语言:javascript复制
source ~/.bashrc

使用 nvm 安装 node

我这里安装 18.x 版本的为例

代码语言:javascript复制
ubuntu@VM-0-12-ubuntu:/$ nvm install 18
Downloading and installing node v18.17.1...
Downloading https://nodejs.org/dist/v18.17.1/node-v18.17.1-linux-x64.tar.xz...
################################################################################################################################ 100.0%Computing checksum with sha256sum
Checksums matched!
Now using node v18.17.1 (npm v9.6.7)
Creating default alias: default -> 18 (-> v18.17.1)
ubuntu@VM-0-12-ubuntu:/$ nvm use 18
Now using node v18.17.1 (npm v9.6.7)
ubuntu@VM-0-12-ubuntu:/$ 
查看已安装版本
代码语言:javascript复制
nvm ls
安装node
代码语言:javascript复制
nvm install <version>

例(安装版本为16.14.0的node)

代码语言:javascript复制
nvm install 16.14.0

国内服务器如果速度慢可以更换为淘宝源

代码语言:javascript复制
export NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node/
切换node版本
代码语言:javascript复制
nvm use <version>

例(切换为1919.810版本的node)

代码语言:javascript复制
nvm use 1919.810

一些小问题

比起 npm 我更倾向于使用 yarn 但是由于正常安装出来的 yarn 的 bin 文件不在环境变量中,导致 yarn 安装出来的包无法使用全局命令。因此我们需要手动添加

安装 yarn

代码语言:javascript复制
ubuntu@VM-0-12-ubuntu:/$ npm install yarn -g

added 1 package in 895ms

用 yarn 安装全局包(这里以 pm2 为例)

代码语言:javascript复制
ubuntu@VM-0-12-ubuntu:/$ yarn global add pm2
yarn global v1.22.19
[1/4] Resolving packages...
warning pm2 > @pm2/io > @opencensus/propagation-b3 > uuid@3.4.0: Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.
warning pm2 > @pm2/io > @opencensus/core > uuid@3.4.0: Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.
warning pm2 > @pm2/io > @opencensus/propagation-b3 > @opencensus/core > uuid@3.4.0: Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.
[2/4] Fetching packages...
[3/4] Linking dependencies...
[4/4] Building fresh packages...
success Installed "pm2@5.3.0" with binaries:
      - pm2
      - pm2-dev
      - pm2-docker
      - pm2-runtime
Done in 12.36s.
ubuntu@VM-0-12-ubuntu:/$ 

使用 pm2

代码语言:javascript复制
ubuntu@VM-0-12-ubuntu:/$ pm2
Command 'pm2' not found, did you mean:
  command 'pmi' from deb powermanagement-interface (0.3.21)
  command 'wm2' from deb wm2 (4 svn20090216-4build1)
  command 'pm' from deb powerman (2.3.5-1build2)
  command 'tpm2' from deb tpm2-tools (5.2-1build1)
  command 'gm2' from deb gm2 (4:11.2.0-1ubuntu1)
  command 'pmg' from deb python3-pymatgen (2022.0.17 dfsg1-1build1)
  command 'pms' from deb pms (0.42-1build4)
  command 'pmw' from deb pmw (1:4.50-1)
  command 'pom2' from deb libpod-pom-perl (2.01-3)
  command 'pmc' from deb linuxptp (3.1.1-3)
Try: sudo apt install <deb name>
ubuntu@VM-0-12-ubuntu:/$ 

没有找到命令,我们需要添加到环境变量

yarn 的软件目录位于当前账号主目录的文件夹中 按照上方安装时的教程将他添加进 bashrc 配置文件中(根据实际情况修改)

代码语言:javascript复制
export PATH=$PATH:/home/ubuntu/.yarn/bin

添加后刷新配置文件,运行正常

解决特殊网络环境下连接质量的问题

npm 换源

代码语言:javascript复制
npm config get registry // 查看当前源地址
npm config set registry https://registry.npm.taobao.org // 淘宝源
npm config set registry https://registry.npmmirror.com // 淘宝源(新域名)
npm config set registry https://mirrors.huaweicloud.com/repository/npm // 华为源

npm 设置代理

代码语言:javascript复制
npm config set proxy=http://127.0.0.1:11451
npm config set https-proxy=https://127.0.0.1:11451

npm config delete proxy 
npm config delete https-proxy

yarn 换源

代码语言:javascript复制
yarn config get registry  // 查看当前源地址
yarn config set registry https://registry.npm.taobao.org  // 淘宝源
yarn config set registry https://registry.npmmirror.com // 淘宝源(新域名)
yarn config set registry https://mirrors.huaweicloud.com/repository/npm  // 华为源

yarn 设置代理

代码语言:javascript复制
yarn config set proxy http://127.0.0.1:11451
yarn config set https-proxy https://127.0.0.1:11451

yarn config delete proxy  
yarn config delete https-proxy

nvm 换源

代码语言:javascript复制
export NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node/ // 淘宝源

0 人点赞