ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

go sdk 多版本管理方案

2021-12-10 22:02:02  阅读:272  来源: 互联网

标签:shell cn golang google 版本 go sdk


不同的工程使用的 go sdk 是不一样的,为了避免线上和开发机结果不一致,需要把开发机的 sdk 版本设置成和打包机一致。GoLand IDE 里面很好处理,只要下载 go sdk zip 或者 .tar.gz 压缩包的版本,然后解压,IDE 里面对于不同的工程选择不同的 sdk 文件夹就好了。命令行需要用工具手动切换,会麻烦一些。

1 推荐的方案

如果你可以接受全局切换 go sdk,选择方案1。如果你需要不同 shell 进程使用不同的 go sdk,选择方案2。

1.1 方案1:voidint / g

如果可以接受全局切换 go sdk,建议使用这个方案。   特性:
  • go 写的
  • 支持 windows 系统,通过 NTFS Junction Points 实现 link,所以不会遇到权限问题。
  • 支持 arm64 mac
  • 支持设置 mirror,可以设置镜像为 https://golang.google.cn/dl/ ,然后就可以在墙内流畅下载 go sdk 了。
  • 看了下代码,下载完成之后,会检查 checksum。
  • 是通过爬虫直接检索 golang 官网获取版本信息的,所以不需要每次 go sdk 发布新版本,这个软件也更新到新版本。
  • 因为是通过把符号链接直接改了,所以改完会对所有的 shell 进程生效。也就是说,这个修改是全局的。

1.2 方案2:自己下载官网上的 .tar.gz 或者 .zip 压缩包,然后解压处理

如果想要一个 shell 一个 go sdk 版本,可以使用这个方案。   优点:
  • 不同的 shell 进程可以使用不同的 go sdk 版本,无穷高的灵活度。windows 下面的 powershell 似乎也能一个 shell 进程设置一个环境变量。
  • 可以自行从 google cn 下载压缩包,所以不会遇到各种连接问题。
  • 出新的版本,立刻就能从官网下载到。官网改版后,使用爬虫抓取网页获取链接的那些工具会挂掉,但是自己下载没问题。
  • 不需要安装第三方工具。
缺点:
  • 操作起来实在是太麻烦了。
  注意,不要下载 .msi, .pkg 这种安装包,这种一台电脑只能安装一个版本。应该使用 .zip, .tar.gz 压缩包,自己解压缩。 国内可以使用下面的地址下载,不会出现连不上的问题: https://golang.google.cn/dl/
  macOS 系统可以按照下面的步骤操作: 1. 下载 .tar.gz 请从 google cn 下载压缩包: https://golang.google.cn/dl/ 2. 校验 sha256sum
openssl sha256 ${file}
3. 移除 com.apple.quarantine 来解决 GateKeeper 阻止应用运行的问题: 
xattr -rd com.apple.quarantine ${file_or_directory}
4. 解压缩 5. 把解压缩后的文件移动到 ~/sdk/ 目录下面 6. 修改 shell 配置文件,加上手动切换 go sdk 的 function
PATH_BASE="$PATH"

function use_go_1_17_4 () {
    export GOROOT="${HOME}/sdk/go1.17.4"
    export PATH="$GOROOT/bin:${PATH_BASE}"
}

function use_go_1_14_1 () {
    export GOROOT="${HOME}/sdk/go1.14.1"
    export PATH="$GOROOT/bin:${PATH_BASE}"
}

# 设置为默认使用 go 1.14.1
use_go_1_14_1
在 shell 里面切换 go 版本。
# 终端执行这个命令,会把当前 shell 切换到 1.17.4
use_go_1_17_4

# 终端执行这个命令,会把当前 shell 切换到 1.14.1
use_go_1_14_1

2 不推荐的方案

下面的方案都需要连接 golang 的国外官网,所以,你懂的。

2.1 kevincobain2000 / gobrew

特性:
  • go 写的
  • 不支持使用 https://golang.google.cn/dl/ 镜像
  • 没有说是否支持 windows。但是鉴于 windows 的 NTFS symbolic link 的权限限制,作者没有做特殊处理的话,应该是不支持的
  • 不支持 arm64 mac

2.2 moovweb / gvm

特性
  • shell 写的
  • 不支持使用 https://golang.google.cn/dl/ 镜像
  • 最初设计是用来管理 go path 项目的,而不是只管理 go sdk 的版本。所以功能过于复杂
  • 没有说是否支持 windows。
  • mac 系统下安装还需要 command line tools & mercurial,非常麻烦。

2.3 syndbg / goenv

特性

2.4 asdf-vm / asdf

特性

2.5 go 官方方案: Managing Go installations

特性
  • 需要先下载一个 go sdk,然后才能安装其他版本,所以会遇到先有鸡还是先有蛋的问题。
  • 不支持使用 https://golang.google.cn/dl/ 镜像
  • go 命令会加上版本号后缀,这样 shell script, Makefile 使用 go 的地方会遇到问题
  • 支持 windows 系统
  • 支持 arm64 mac
 

标签:shell,cn,golang,google,版本,go,sdk
来源: https://www.cnblogs.com/cmicat/p/15674000.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有