Golang-執行go get私有庫提示」410 Gone「 解決辦法

以前沒有使用過私有庫,今天正好碰到,把解決方法整理一下git

 

錯誤記錄

若是你在用go get 私有庫碰到以下相似錯誤:github

 

 

 

解決方法

$ export GO111MODULE=on
$ export GOPROXY=direct
$ export GOSUMDB=off

 

關於GO111MODULE 和GOPROXY,都比較熟悉,而GOSUMDB 的說明以下:golang

咱們知道go會在go module啓用時在本地創建一個go.sum文件,用來存儲依賴包特定版本的加密校驗和。同時,Go維護下載的軟件包的緩存,並在下載時計算並記錄每一個軟件包的加密校驗和。在正常操做中,go命令對照這些預先計算的校驗和去檢查某repo下的go.sum文件,而不是在每次命令調用時都從新計算它們。數據庫

在平常開發中,特定module版本的校驗和永遠不會改變。每次運行或構建時,go命令都會經過本地的go.sum去檢查其本地緩存副本的校驗和是否一致。若是校驗和不匹配,則go命令將報告安全錯誤,並拒絕運行構建或運行。在這種狀況下,重要的是找出正確的校驗和,肯定是go.sum錯誤仍是下載的代碼是錯誤的。若是go.sum中還沒有包含已下載的module,而且該模塊是公共module,則go命令將查詢Go校驗和數據庫以獲取正確的校驗和數據存入go.sum。若是下載的代碼與校驗和不匹配,則go命令將報告不匹配並退出。緩存

Go 1.13提供了GOSUMDB環境變量用於配置Go校驗和數據庫的服務地址(和公鑰),其默認值爲」sum.golang.org」,這也是Go官方提供的校驗和數據庫服務(大陸gopher可使用sum.golang.google.cn)。安全

出於安全考慮,建議保持GOSUMDB開啓。但若是由於某些因素,沒法訪問GOSUMDB(甚至是sum.golang.google.cn),能夠經過下面命令將其關閉:google

 

go env -w GOSUMDB=off

 

GOSUMDB關閉後,僅能使用本地的go.sum進行包的校驗和校驗了。加密

 

 

 

參數考文章:https://github.com/golang/go/issues/35164spa

              https://tonybai.com/2019/10/27/some-changes-in-go-1-13/code

相關文章
相關標籤/搜索