1. 程式人生 > 程式設計 >Golang執行go get私有庫提示"410 Gone" 的問題及解決辦法

Golang執行go get私有庫提示"410 Gone" 的問題及解決辦法

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

錯誤記錄

如果你在用go get 私有庫碰到如下類似錯誤:

Golang執行go get私有庫提示"410 Gone" 的問題及解決辦法

解決方法

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

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

我們知道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),可以通過下面命令將其關閉:

go env -w GOSUMDB=off

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

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

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

知識點補充:

go get超時解決辦法

go get gopkg.in/yaml.v2超時,發現被牆了,解決辦法如下:

1、安裝golang.org/x/net

$ mkdir -p $GOPATH/src/golang.org/x/
$ git clone https://github.com/golang/net.git $GOPATH/src/golang.org/x/net
$ go install net

2、安裝gopkg.in/yaml.v2

$ go get gopkg.in/yaml.v2

總結

以上就是Golang執行go get私有庫提示"410 Gone" 的問題及解決辦法的詳細內容,更多關於go get私有庫的資料請關注我們其它相關文章!