golang多版本管理器

voidint · · 4318 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

[g](https://github.com/voidint/g)是一个Linux、macOS、Windows下的命令行工具,可以提供一个便捷的多版本go环境的管理和切换。 ## 特性 - 支持列出可供安装的go版本号 - 支持列出已安装的go版本号 - 支持在本地安装多个go版本 - 支持卸载已安装的go版本 - 支持在已安装的go版本之间自由切换 ## 安装 ### 自动化安装 - Linux/macOS(适用于bash、zsh) ```shell # 建议安装前清空`GOROOT`、`GOBIN`等环境变量 $ wget -qO- https://raw.githubusercontent.com/voidint/g/master/install.sh | bash $ echo "unalias g" >> ~/.bashrc # 可选。若其他程序(如'git')使用了'g'作为别名。 $ source ~/.bashrc # 或者 source ~/.zshrc ``` ### 手动安装 - 下载对应平台的[二进制压缩包](https://github.com/voidint/g/releases)。 - 将压缩包解压至`PATH`环境变量目录下,如`/usr/local/bin`。 - 编辑shell环境配置文件(`~/.bashrc`、`~/.zshrc`...) ```shell $ cat>>~/.bashrc<<EOF export GOROOT="${HOME}/.g/go" export PATH="${HOME}/.g/go/bin:$PATH" export G_MIRROR=https://golang.google.cn/dl/ EOF ``` ## 使用 查询当前可供安装的`stable`状态的go版本 ```shell $ g ls-remote stable 1.11.9 1.12.4 ``` 安装目标go版本`1.12.4` ```shell $ g install 1.12.4 Installed successfully $ go version go version go1.12.4 darwin/amd64 ``` 查询已安装的go版本 ```shell $ g ls 1.12.4 ``` 查询可供安装的所有go版本 ```shell $ g ls-remote 1 1.2.2 1.3 1.3.1 ... // 省略若干版本 1.11.7 1.11.8 1.11.9 1.12 1.12.1 1.12.2 1.12.3 1.12.4 ``` 安装目标go版本`1.11.9` ```shell $ g install 1.11.9 Installed successfully $ go version go version go1.11.9 darwin/amd64 ``` 切换到另一个已安装的go版本 ```shell $ g ls 1.11.9 1.12.4 $ g use 1.12.4 go version go1.12.4 darwin/amd64 ``` 卸载一个已安装的go版本 ```shell g uninstall 1.11.9 Uninstall successfully ``` ## FAQ - 环境变量`G_MIRROR`有什么作用? 由于中国大陆无法自由访问Golang官网,导致查询及下载go版本都变得困难,因此可以通过该环境变量指定一个镜像站点(如`https://golang.google.cn/dl/`),g将从该站点查询、下载可用的go版本。 - 支持源代码编译安装吗? 不支持 ## 鸣谢 感谢[nvm](https://github.com/nvm-sh/nvm)、[n](https://github.com/tj/n)、[rvm](https://github.com/rvm/rvm)等工具提供的宝贵思路。

有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

4318 次点击  
加入收藏 微博
1 回复  |  直到 2019-05-20 15:01:21
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传