完美解決golang go get私有倉庫的問題
解決golang go get gitlab私有倉庫的問題(1.13)
1. 問題描述
require ( git.xxxxxxx.com/middle/user v0.0.1 )
go mod tidy 導入包失敗
go get git.xxxxxxx.com/middle/user 失敗
go build 有CHECKSUM過程,無法編譯
2. 現象分析
go get 不支持代碼支持之外的倉庫。並且git 調用鏈過程采取瞭https
下載過程如果機器設置瞭GOPROXY,會導致下載失敗
編譯過程會導致CHECKSUM失敗
3. 物料
物料 | 說明 |
---|---|
git.xxxxxxx.com | 私有倉庫 |
middle/user.git | 用戶服務模塊 |
方案
1、給釋出的倉庫打tag比如v0.0.1,這樣倉庫地址就可以被識別
2、export GOPRIVATE=git.xxxxxxx.com
go build的時候系統就不會用GOPROXY以及不再校驗SUM
3、調整git https===>ssh,註意username換成自己的用戶名
[url "[email protected]"] insteadOf = https://git.xxxxxxx.com
結論
這個問題,google 堪稱一絕,夠任性
補充:go get拉取私有項目,遇到 404 Not Found解決辦法
問題
利用go module進行包管理的時候,要獲取遠程倉庫的最新包,使用go get+項目名獲取,提示404 Not Found,如圖:
原因及解決辦法 原因
這是由於go get在進行獲取遠程包的時候,沒有指定用戶以及密碼,導致沒有權限,故失敗
辦法
go get時添加“-insecure”參數,如圖:
補充:golang 配置私有倉庫
配置使用ssh 訪問的倉庫
1. go mod 根據go.mod拉取依賴庫時
會使用https的方式。為瞭方便我們也可以通過配置git 全局配置來使用 ssh的方式拉取依賴,下面是配置 https轉換為ssh的方式:
git config --global url."[email protected]:".insteadOf https://gitee.com/
2. 配置環境變量
來指定私有倉庫,用於不走代理的方式
go env -w GOPRIVATE=gitee.com
這裡配置私有倉庫是gitee
3. 設置代理
go env -w GOPROXY=goproyx.io
常見錯誤:
1. 錯誤一
abc@Genricde helloworld % go get -u gitee.com/abc/helloworld/v3 go: gitee.com/abc/helloworld/[email protected] requires gitee.com/abc/[email protected]: invalid version: git fetch -f origin refs/heads/*:refs/heads/* refs/tags/*:refs/tags/* in /Users/abc/developer/golang/pkg/mod/cache/vcs/742008abb4987f237c93efc5ddde7db6dd8d1841fe94aea076046d86a92e26a7: exit status 128: fatal: could not read Username for ‘https://gitee.com’: terminal prompts disabled
這種錯誤為沒有配置 git 的https轉換為 ssh
2. 錯誤二
go: gitee.com/abc/[email protected] requires gitee.com/abc/[email protected]/go.mod: verifying module: gitee.com/abc/[email protected]/go.mod: reading https://goproxy.io/sumdb/sum.golang.org/lookup/gitee.com/abc/[email protected]: 410 Gone server response: not found: gitee.com/abc/[email protected]: invalid version: git fetch -f origin refs/heads/*:refs/heads/* refs/tags/*:refs/tags/* in /tmp/gopath/pkg/mod/cache/vcs/742008abb4987f237c93efc5ddde7db6dd8d1841fe94aea076046d86a92e26a7: exit status 128: fatal: could not read Username for ‘https://gitee.com’: terminal prompts disabled
這種錯誤是GOPRIVATE 設置錯誤,使得go去驗證庫的sum
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。如有錯誤或未考慮完全的地方,望不吝賜教。
推薦閱讀:
- golang gopm get -g -v 無法獲取第三方庫的解決方案
- 手把手教你vscode配置golang開發環境的步驟
- golang 在windows中設置環境變量的操作
- go常用指令之go mod詳解
- Mac下Vs code配置Go語言環境的詳細過程