侧边栏壁纸
  • 累计撰写 94 篇文章
  • 累计创建 100 个标签
  • 累计收到 10 条评论

目 录CONTENT

文章目录

用nvm来管理node版本【Centos系统】

汤圆学Java
2022-05-31 / 0 评论 / 0 点赞 / 240 阅读 / 5,633 字
温馨提示:
本文最后更新于 2022-10-11,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

前言

因为项目中的两个node项目使用了不同的node版本,所以需要用到node的版本管理工具nvm;

nvm全称 node version manager ,意思就是node版本管理器;

今天主要以Centos环境来介绍;

目录

  1. 安装nvm
  2. 遇到的问题
  3. nvm相关命令

正文

1. 安装nvm

命令如下:

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

这条命令的意思是:下载install.sh安装脚本,然后通过bash命令运行该脚本,即bash install.sh

安装成功后,有几个路径需要注意:

  • nvm的安装路径默认为:~/.nvm,如下所示

    image-20220525164027600

  • nvm的路径配置文件为:~/.bashrc,如下所示:最下面的三行就是nvm相关配置

image-20220525163823526

.bashrc文件:用来加载你的配置,bash 在每次启动时都会加载 .bashrc 文件的内容。每个用户的 home 目录都有这个 shell 脚本。它用来存储并加载你的终端配置和环境变量。

2. 遇到的问题

这里安装nvm时遇到了几个问题:

问题一:卡在如下位置,最后提示连接超时

=> Downloading nvm from git to '/root/.nvm'
=> Initialized empty Git repository in /root/.nvm/.git/
error: The requested URL returned error: 403 Forbidden while accessing https://github.com/nvm-sh/nvm.git/info/refs

fatal: HTTP request failed
Failed to clone nvm repo. Please report this!

这个就是纯纯的网络问题,多尝试几次就可以了;

问题二:提示无法识别 git -c命令(该命令用来设置git的环境变量),报错如下所示:

# 。。。省略
Unknown option: -c
usage: git [--version] [--exec-path[=GIT_EXEC_PATH]] [--html-path]
           [-p|--paginate|--no-pager] [--no-replace-objects]
           [--bare] [--git-dir=GIT_DIR] [--work-tree=GIT_WORK_TREE]
           [--help] COMMAND [ARGS]
Failed to checkout the given version v0.39.1. Please report this!

原因是我的git版本过低 1.7.1:

[root@iZ25rlowqlfZ .nvm]# git --version
git version 1.7.1

git -c 是在较新版本中才有的命令,目前最新的git版本为2.36.1

所以这里面临两个选择:

  • 一个是升级git版本:但是因为我是Centos6.5系统,通过yum install git升级时,发现只支持到1.7.1,如下所示:

    [root@iZ25rlowqlfZ ~]# yum install git
    # 。。。省略
    Error Downloading Packages:
      perl-Git-1.7.1-10.el6_10.noarch: failure: Packages/perl-Git-1.7.1-10.el6_10.noarch.rpm from updates: [Errno 256] No more mirrors to try.
      git-1.7.1-10.el6_10.x86_64: failure: Packages/git-1.7.1-10.el6_10.x86_64.rpm from updates: [Errno 256] No more mirrors to try.
    
    

    git官网也有提示::

    image-20220525161817934

    意思是目前 Red Hat 和 CentOS等系统 只提供了旧版本的git镜像,只能通过源码编译或者去第三方库拉取;

    感觉这种方式有点麻烦,所以放弃了

  • 另一个是删除install.sh脚本中对应的git -c命令:因为查看了一下脚本中相关的git -c命令,发现不影响nvm的使用,相关代码如下:

     command git -c advice.detachedHead=false --git-dir="$INSTALL_DIR"/.git --work-tree="$INSTALL_DIR" checkout -f --quiet FETCH_HEAD || {
        nvm_echo >&2 "Failed to checkout the given version $NVM_VERSION. Please report this!"
        exit 2
    

    这里的advice.detachedHead=false意思是:不提示 detachedHead 相关的信息,它类似于一个警告信息,默认是开启的;

    关于 detachedHead 可以参考这篇文章:Git中的detached状态

    删除后的脚本如下所示:

    command git --git-dir="$INSTALL_DIR"/.git --work-tree="$INSTALL_DIR" checkout -f --quiet FETCH_HEAD || {
      nvm_echo >&2 "Failed to checkout the given version $NVM_VERSION. Please report this!"
      exit 2
    

    接着再次运行该脚本:

    [root@iZ25rlowqlfZ D]# bash install.sh 
    => nvm is already installed in /root/.nvm, trying to update using git
    => Your version of git is out of date. Please update it!
    => Compressing and cleaning up git repository
    
    => nvm source string already in /root/.bashrc
    => bash_completion source string already in /root/.bashrc
    /usr/bin/env: node: No such file or directory
    => Close and reopen your terminal to start using nvm or run the following to use it now:
    
    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
    

    可以看到,这次成功安装了nvm;

3. nvm相关命令

查看所有的node版本nvm ls

[root@iZ25rlowqlfZ .nvm]# nvm ls
            N/A
iojs -> N/A (default)
node -> stable (-> N/A) (default)
unstable -> N/A (default)

可以看到,此时本地安装的node版本为空,下面就需要安装对应的版本;

安装之前可以先查看远程仓库有哪些node版本nvm ls remote

[root@iZ25rlowqlfZ ~]# nvm ls-remote
# 。。。省略
       v16.12.0
       v16.13.0   (LTS: Gallium)
       v16.13.1   (LTS: Gallium)
       v16.13.2   (LTS: Gallium)
       v16.14.0   (LTS: Gallium)
       v16.14.1   (LTS: Gallium)
       v16.14.2   (LTS: Gallium)
       v16.15.0   (Latest LTS: Gallium)
# 。。。省略    
        v18.1.0
        v18.2.0

其中还提示了是否为 LTS 长期支持版本;

安装对应的node版nvm install version

先安装一个10.24,如下所示:

[root@iZ25rlowqlfZ .nvm]# nvm install 10.24
Downloading and installing node v10.24.1...
Downloading https://nodejs.org/dist/v10.24.1/node-v10.24.1-linux-x64.tar.xz...
######################################################################## 100.0%
Computing checksum with sha256sum
Checksums matched!
Now using node v10.24.1 (npm v6.14.12)

再安装一个12.16,如下所示:

[root@iZ25rlowqlfZ .nvm]# nvm install 12.16
Downloading and installing node v12.16.3...
Downloading https://nodejs.org/dist/v12.16.3/node-v12.16.3-linux-x64.tar.xz...
######################################################################## 100.0%
Computing checksum with sha256sum
Checksums matched!
Now using node v12.16.3 (npm v6.14.4)
Creating default alias: default -> 12.16 (-> v12.16.3)

此时查看node版本node -v

[root@iZ25rlowqlfZ .nvm]# node -v
v12.16.3

说明后安装的会代替前面安装的,被选中作为node的默认版本;

查看node安装路径which node

[root@iZ25rlowqlfZ ~]# which node
/root/.nvm/versions/node/v12.16.3/bin/node

可以看到,node安装在.nvm目录下,不同的版本安装在不同的versions目录下;

这样很明显的一个好处就是:各个node版本安装的依赖,都存放在各自的目录,互不影响

切换node版本nvm use version

[root@iZ25rlowqlfZ lib]# nvm use 10.24
Now using node v10.24.1 (npm v6.14.12)

这样就从12.16切换到了10.24;

如果不清楚都安装了哪些版本,可以通过上面的nvm ls查看:

[root@iZ25rlowqlfZ lib]# nvm ls
->     v10.24.1
       v12.16.3
default -> 12.16 (-> v12.16.3)
iojs -> N/A (default)
unstable -> N/A (default)
node -> stable (-> v12.16.3) (default)
stable -> 12.16 (-> v12.16.3) (default)
lts/* -> lts/gallium (-> N/A)
lts/argon -> v4.9.1 (-> N/A)
lts/boron -> v6.17.1 (-> N/A)
lts/carbon -> v8.17.0 (-> N/A)
lts/dubnium -> v10.24.1
lts/erbium -> v12.22.12 (-> N/A)
lts/fermium -> v14.19.3 (-> N/A)
lts/gallium -> v16.15.0 (-> N/A)

可以看到,此时选中的是10.24,但是默认版本是12.16,因为12.16是后安装的,所以被选为默认版本;

此时如果重新开一个终端,运行node -v会发现又变回了默认版本12.16;

设置node默认版本nvm alias default version

[root@iZ25rlowqlfZ ~]# nvm alias default 10.24
default -> 10.24 (-> v10.24.1)

可以看到,此时默认版本设置为10.24,不过需要重启终端才会生效;

总结

  • 安装:wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
    • nvm的安装路径默认为:~/.nvm
    • nvm的路径配置文件为:~/.bashrc
  • 问题:
    • 如果提示连接超时,多试几次即可
    • 如果提示无法识别git -c命令,可以升级git到最新版本2.36.1;或者删除掉install.sh中的git -c相关的那个配置
  • 命令:
    • 查看所有的node版本nvm ls
    • 查看远程仓库有哪些node版本nvm ls-remote
    • 安装对应的node版nvm install version
    • 查看node版本node -v
    • 查看node安装路径which node
    • 切换node版本nvm use version
    • 设置node默认版本nvm alias default version

参考

0

评论区