go下載安裝指定版本的包
背景
跑集成測試的時候,需要在機器上拉取一個依賴庫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 mod, 於是借助於go get 和 go install 來實現,中間通過git checkout來切換到指定版本
實現方式
以github.com/onsi/gomega這個包為例
- go get -d -v github.com/onsi/gomega/...
只是拉取純拉取該包,-d代表只拉取,不編譯安裝; -v表示顯示詳情; 包路徑最后的...表示拉取該包的子包(依賴) - git checkout v1.10.4
切換到需要的穩定版本 - go install -a -v github.com/onsi/gomega/...
編譯安裝,-a 代表強制編譯安裝(即使已經存在最新的安裝包)