当前位置: 首页 > news >正文

Golang 多版本安装小工具G


voidint制作的Golang版本安装管理,非常好用。想装就装,想换版本就换版本

除了一些使用go install的场景可能有不兼容,主要是安装了工具有时候不能直接用。

GitHub - voidint/g: Golang Version Manager​​​​​​​

使用方式很简单,我把作者github的readme抠下来,图没法显示,可以直接看项目首页

https://github.com/voidint/g

​# g

注意:master分支可能处于开发之中并非稳定版本,请通过tag下载稳定版本的源代码,或通过release下载已编译的二进制可执行文件。

g是一个 Linux、macOS、Windows 下的命令行工具,可以提供一个便捷的多版本 go 环境的管理和切换。

特性

  • 支持列出可供安装的 go 版本号
  • 支持列出已安装的 go 版本号
  • 支持在本地安装多个 go 版本
  • 支持卸载已安装的 go 版本
  • 支持在已安装的 go 版本之间自由切换
  • 支持软件自我更新(>= 1.3.0)

安装

自动化安装

  • Linux/macOS(适用于bash、zsh)

    # 建议安装前清空`GOROOT`、`GOBIN`等环境变量
    $ curl -sSL https://raw.githubusercontent.com/voidint/g/master/install.sh | bash
    $ echo "unalias g" >> ~/.bashrc # 可选。若其他程序(如'git')使用了'g'作为别名。
    $ source "$HOME/.g/env"
    

手动安装(linux/mac)

  • 下载release的二进制压缩包

  • 将压缩包解压至PATH环境变量目录下(推荐~/.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/env导入到shell环境配置文件(如~/.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

  • 下载release的windows版本的二进制压缩包, 解压之后放到~/.g/bin目录下

  • 默认二进制文件名是 g.exe, 如果你已经用g这个命令已经用作为 git 的缩写,那么你可以把 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 终端,就可以使用 g 或者 gvm 命令了

使用

查询当前可供安装的stable状态的go版本

$ g ls-remote stable1.13.151.14.7

安装目标go版本1.14.7

$ g install 1.14.7
Downloading 100% |███████████████| (119/119 MB, 9.939 MB/s) [12s:0s]
Computing checksum with SHA256
Checksums matched
Now using go1.14.7

查询已安装的go版本

$ g ls1.7.61.11.131.12.171.13.151.14.6
* 1.14.7

查询可供安装的所有go版本

$ g ls-remote11.2.21.31.3.1...    // 省略若干版本1.14.51.14.6
* 1.14.71.15rc1

切换到另一个已安装的go版本

$ g use 1.14.6
go version go1.14.6 darwin/amd64

卸载一个已安装的go版本

$ g uninstall 1.14.7
Uninstalled go1.14.7

更新 g 软件本身

$ g update
A new version of g(v1.2.2) is available
Downloading 100% |███████████████| (3.7/3.7 MB, 2.358 MB/s)
Computing checksum with SHA256
Checksums matched
Update completed

FAQ

  • 环境变量G_MIRROR有什么作用?

    由于中国大陆无法自由访问 Golang 官网,导致查询及下载 go 版本都变得困难,因此可以通过该环境变量指定一个或多个镜像站点(多个镜像站点之间使用英文逗号分隔),g 将从该站点查询、下载可用的 go 版本。已知的可用镜像站点如下:

    • Go官方镜像站点:https://golang.google.cn/dl/
    • Go语言中文网:https://studygolang.com/dl
    • 阿里云开源镜像站点:https://mirrors.aliyun.com/golang/
  • 环境变量G_EXPERIMENTAL有什么作用?

    当该环境变量的值为true时,将开启所有的实验特性

  • 环境变量G_HOME有什么作用?

    按照惯例,g 默认会将~/.g目录作为其家目录。若想自定义家目录(Windows 用户需求强烈),可使用该环境变量切换到其他家目录。由于该特性还属于实验特性,需要先开启实验特性开关G_EXPERIMENTAL=true才能生效。特别注意,该方案并不十分完美,因此才将其归类为实验特性,详见#18。

  • macOS 系统下安装 go 版本,g 抛出[g] Installation package not found字样的错误提示,是什么原因?

    Go 官方在1.16版本中才加入了对ARM架构的macOS系统的支持。因此,ARM 架构的 macOS 系统下均无法安装1.15及以下的版本的 go 安装包。若尝试安装这些版本,g 会抛出[g] Installation package not found的错误信息。

  • 是否支持网络代理?

    支持。可在HTTP_PROXYHTTPS_PROXYhttp_proxyhttps_proxy等环境变量中设置网络代理地址。

  • 支持哪些 Windows 版本?

    因为g的实现上依赖于符号链接,因此操作系统必须是Windows Vista及以上版本。

  • Windows 版本安装以后不生效?

    这有可能是因为没有把下载安装的加入到 $Path 的缘故,需要手动将 $Path 纳入到用户的环境变量中。为了方便起见,可以使用项目中的 path.ps1 的 PowerShell 脚本运行然后重新启动计算机即可。

  • 支持源代码编译安装吗?

    不支持

鸣谢

感谢nvm、n、rvm等工具提供的宝贵思路。

http://www.lryc.cn/news/59236.html

相关文章:

  • day29—选择题
  • day8 互斥锁/读写锁的概念及使用、死锁的避免
  • 2023-04-13 monetdb-str类型变长存储-分析
  • 011:Mapbox GL两种方式隐藏logo和版权,个性化版权的声明
  • 结合PCA降维的DBSCAN聚类方法(附Python代码)
  • 限流:计数器、漏桶、令牌桶 三大算法的原理与实战(史上最全)
  • Redis用于全局ID生成器、分布式锁的解决方案
  • OpenTex 企业内容管理平台
  • 【0基础学爬虫】爬虫基础之数据存储
  • Redis与本地缓存组合使用(IT枫斗者)
  • 手把手教你学习IEC104协议和编程实现 十 故障事件与复位进程
  • 浅析分布式理论的CAP
  • 使用 TensorFlow 构建机器学习项目:6~10
  • 使用 LXCFS 文件系统实现容器资源可见性
  • SQL LIMIT
  • OpenCV实战之人脸美颜美型(六)——磨皮
  • Java技术栈—重装系统后不重新安装也能正常使用的设置方式
  • 智驾升级!ADB+AFS「起势」
  • 算法记录 | Day27 回溯算法
  • 性能测试总结-根据工作经验总结还比较全面
  • 类型断言[as语法 | <> 语法
  • barret reduction原理详解及硬件优化
  • NLP / LLMs中的Temperature 是什么?
  • c#快速入门~在java基础上,知道C#和JAVA 的不同即可
  • nginx--基本配置
  • R语言中apply系列函数详解
  • 红黑树探险:从理论到实践,一站式掌握C++红黑树
  • CDH6.3.2大数据集群生产环境安装(七)之PHOENIX组件安装
  • 【C++要笑着学】搜索二叉树 (SBTree) | K 模型 | KV 模型
  • 微信小程序开发 | 小程序开发框架