go: go.mod file indicates go 1.20, but maximum version supported by tidy is 1.19

690 阅读2分钟

原因

当前使用的go版本与项目的go.mod所用的go版本不一致导致

解决方案

使用Go 版本管理工具进行解决,这里推荐 g

g是一个适用于 Linux、macOS 和 Windows 的命令行工具,提供Go环境多个版本的便捷管理和切换。

g 安装和使用

特征

  • 支持列出可供安装的 Go 版本
  • 支持列出已安装的 Go 版本
  • 支持本地安装多个版本的Go
  • 支持卸载已安装的 Go 版本
  • 支持在已安装的 Go 版本之间自由切换
  • 支持清除包文件缓存
  • 支持自动更新软件(>= 1.5.0)
  • 支持软件干净卸载(>= 1.5.0)

安装

自动安装

  • Linux/macOS(bash/zsh)

    # It is recommended to clear the `GOROOT`, `GOBIN`, and other environment variables before installation.
    $ curl -sSL https://raw.githubusercontent.com/voidint/g/master/install.sh | bash
    $ echo "unalias g" >> ~/.bashrc # Optional. If other programs (such as `git`) have used `g` as an alias.
    $ source "$HOME/.g/env"
    
  • Windows(pwsh)

    $ iwr https://raw.githubusercontent.com/voidint/g/master/install.ps1 -useb | iex
    

手动安装(适用于Linux/macOS)

  • 创建目录g(推荐~/.g:)

  • 从releases下载二进制压缩文件并将其解压到bing目录的子目录中(即~/.g/bin)。

  • 将必要的环境变量写入~/.g/env文件中。

    $ cat >~/.g/env <<'EOF'
    #!/bin/sh
    # g shell setup
    export GOROOT="${HOME}/.g/go"
    export PATH="${HOME}/.g/bin:${GOROOT}/bin:$PATH"
    export G_MIRROR=https://golang.google.cn/dl/
    EOF
    
  • 导入~/.g/envshell 环境配置文件(例如~/.bashrc~/.zshrc...)。

    $ cat >>~/.bashrc <<'EOF'
    # g shell setup
    if [ -f "${HOME}/.g/env" ]; then
        . "${HOME}/.g/env"
    fi
    EOF
    
  • 启用环境变量。

    $ source ~/.bashrc # source ~/.zshrc
    

手动安装(适用于 Windows PowerShell)

  • 创建目录:mkdir ~/.g/bin

  • 从releases下载Windows版本的二进制压缩文件,解压后放入~/.g/bin目录下。

  • 默认的二进制文件名为g.exe,如果您已经使用了gGit 命令的缩写,则可以更改g.exe为其他名称,例如gvm.exe.

  • 运行命令code $PROFILE,该命令将使用VSCode打开默认的PowerShell配置文件。

  • 将以下内容添加到默认的PowerShell配置文件中:

    $env:GOROOT="$HOME.g\go"
    $env:Path=-join("$HOME.g\bin;", "$env:GOROOT\bin;", "$env:Path")
    
  • 再次打开PowerShell终端,就可以使用gorgvm命令了。

用法

查询当前可用的稳定版 Go 进行安装:

$ g ls-remote stable
  1.19.10
  1.20.5

要安装特定版本的 Go(例如 1.20.5):

$ g install 1.14.7
Downloading 100% [===============] (92/92 MB, 12 MB/s)               
Computing checksum with SHA256
Checksums matched
Now using go1.20.5

查询已安装的 Go 版本列表:

$ g ls
  1.19.10
* 1.20.5

列出所有可供安装的 Go 版本:

$ g ls-remote
  1
  1.2.2
  1.3
  1.3.1
  ...    
  1.19.10
  1.20rc1
  1.20rc2
  1.20rc3
  1.20
  1.20.1
  1.20.2
  1.20.3
  1.20.4
* 1.20.5

要切换到另一个已安装的 Go 版本:

$ g use 1.19.10
go version go1.19.10 darwin/arm64

要卸载特定已安装的 Go 版本:

$ g uninstall 1.19.10
Uninstalled go1.19.10

要清除 Go 安装的包文件缓存:

$ g clean 
Remove go1.18.10.darwin-arm64.tar.gz
Remove go1.19.10.darwin-arm64.tar.gz
Remove go1.20.5.darwin-arm64.tar.gz

查看g自身版本信息:

g version 1.5.0
build: 2023-01-01T21:01:52+08:00
branch: master
commit: cec84a3f4f927adb05018731a6f60063fd2fa216

要更新g软件本身:

$ g self update
You are up to date! g v1.5.0 is the latest version.

要卸载g软件本身:

$ g self uninstall
Are you sure you want to uninstall g? (Y/n)
y
Remove /Users/voidint/.g/bin/g
Remove /Users/voidint/.g