go下载安装指定版本的包-GOPATH模式

背景

跑集成测试的时候,需要在机器上拉取一个依赖库github.com/onsi/gomega, 之前一直用go get github.com/onsi/gomega/...来拉取安装,没有问题,
直到有次报错"src/github.com/onsi/gomega/matchers/match_error_matcher.go:28:52: undefined: errors.Is"。
分析原因可以知道这个go get 每次默认是拉取最新的包去编译安装,刚好这个包几天前有更新,更新后的版本有问题,导致编译不过,所以稳妥起见,还是一直指定拉取一个稳定的版本比较靠谱。
我们的项目里没有使用 go module模式, 于是借助于go get 和 go install 来实现,中间通过git checkout来切换到指定版本

实现方式

以github.com/onsi/gomega这个包为例

  1. go get -d -v github.com/onsi/gomega/...
    拉取该包,-d代表只拉取,不编译安装; -v表示显示详情; 包路径最后的...表示拉取该包的子包(依赖)
  2. git checkout v1.10.4
    切换到需要的稳定版本
  3. go install -a -v github.com/onsi/gomega/...
    编译安装,-a 代表强制编译安装(即使已经存在最新的安装包)
posted @ 2021-01-22 22:42  fireyun  阅读(3629)  评论(0编辑  收藏  举报