zoukankan      html  css  js  c++  java
  • 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 的国外官网,所以,你懂的。
    特性:
    • go 写的
    • 不支持使用 https://golang.google.cn/dl/ 镜像
    • 没有说是否支持 windows。但是鉴于 windows 的 NTFS symbolic link 的权限限制,作者没有做特殊处理的话,应该是不支持的
    • 不支持 arm64 mac
    特性
    • shell 写的
    • 不支持使用 https://golang.google.cn/dl/ 镜像
    • 最初设计是用来管理 go path 项目的,而不是只管理 go sdk 的版本。所以功能过于复杂
    • 没有说是否支持 windows。
    • mac 系统下安装还需要 command line tools & mercurial,非常麻烦。
    特性
    特性

    2.5 go 官方方案: Managing Go installations

    特性
    • 需要先下载一个 go sdk,然后才能安装其他版本,所以会遇到先有鸡还是先有蛋的问题。
    • 不支持使用 https://golang.google.cn/dl/ 镜像
    • go 命令会加上版本号后缀,这样 shell script, Makefile 使用 go 的地方会遇到问题
    • 支持 windows 系统
    • 支持 arm64 mac
     
  • 相关阅读:
    阶段性总结---初始阶段
    微信授权以及微信支付所遇到的坑(完善)
    CSS3学习
    Playing with String(codeforces 305E)
    Treblecross(uva 10561)
    序列操作(bzoj 1858)
    传送带(bzoj 1857)
    字符串(bzoj 1856)
    刷题比赛(洛谷 1707)
    大楼(bzoj 2165)
  • 原文地址:https://www.cnblogs.com/cmicat/p/15674000.html
Copyright © 2011-2022 走看看