完美解決golang go get私有倉(cāng)庫(kù)的問(wèn)題
解決golang go get gitlab私有倉(cāng)庫(kù)的問(wèn)題(1.13)
1. 問(wèn)題描述
require ( git.xxxxxxx.com/middle/user v0.0.1 )
go mod tidy 導(dǎo)入包失敗
go get git.xxxxxxx.com/middle/user 失敗
go build 有CHECKSUM過(guò)程,無(wú)法編譯
2. 現(xiàn)象分析
go get 不支持代碼支持之外的倉(cāng)庫(kù)。并且git 調(diào)用鏈過(guò)程采取了https
下載過(guò)程如果機(jī)器設(shè)置了GOPROXY,會(huì)導(dǎo)致下載失敗
編譯過(guò)程會(huì)導(dǎo)致CHECKSUM失敗
3. 物料
物料 | 說(shuō)明 |
---|---|
git.xxxxxxx.com | 私有倉(cāng)庫(kù) |
middle/user.git | 用戶服務(wù)模塊 |
方案
1、給釋出的倉(cāng)庫(kù)打tag比如v0.0.1,這樣倉(cāng)庫(kù)地址就可以被識(shí)別
2、export GOPRIVATE=git.xxxxxxx.com
go build的時(shí)候系統(tǒng)就不會(huì)用GOPROXY以及不再校驗(yàn)SUM
3、調(diào)整git https===>ssh,注意username換成自己的用戶名
[url "username@git.xxxxxxx.com"] insteadOf = https://git.xxxxxxx.com
結(jié)論
這個(gè)問(wèn)題,google 堪稱一絕,夠任性
補(bǔ)充:go get拉取私有項(xiàng)目,遇到 404 Not Found解決辦法
問(wèn)題
利用go module進(jìn)行包管理的時(shí)候,要獲取遠(yuǎn)程倉(cāng)庫(kù)的最新包,使用go get+項(xiàng)目名獲取,提示404 Not Found,如圖:
原因及解決辦法 原因
這是由于go get在進(jìn)行獲取遠(yuǎn)程包的時(shí)候,沒(méi)有指定用戶以及密碼,導(dǎo)致沒(méi)有權(quán)限,故失敗
辦法
go get時(shí)添加“-insecure”參數(shù),如圖:
補(bǔ)充:golang 配置私有倉(cāng)庫(kù)
配置使用ssh 訪問(wèn)的倉(cāng)庫(kù)
1. go mod 根據(jù)go.mod拉取依賴庫(kù)時(shí)
會(huì)使用https的方式。為了方便我們也可以通過(guò)配置git 全局配置來(lái)使用 ssh的方式拉取依賴,下面是配置 https轉(zhuǎn)換為ssh的方式:
git config --global url."git@gitee.com:".insteadOf https://gitee.com/
2. 配置環(huán)境變量
來(lái)指定私有倉(cāng)庫(kù),用于不走代理的方式
go env -w GOPRIVATE=gitee.com
這里配置私有倉(cāng)庫(kù)是gitee
3. 設(shè)置代理
go env -w GOPROXY=goproyx.io
常見錯(cuò)誤:
1. 錯(cuò)誤一
abc@Genricde helloworld % go get -u gitee.com/abc/helloworld/v3 go: gitee.com/abc/helloworld/v3@v3.0.1-5 requires gitee.com/abc/tsab@v0.0.0-20210208082057-adbeb3ca5366: 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
這種錯(cuò)誤為沒(méi)有配置 git 的https轉(zhuǎn)換為 ssh
2. 錯(cuò)誤二
go: gitee.com/abc/helloworld@v0.0.0-20210121064045-46ac6dd9cdce requires gitee.com/abc/helloworld@v0.0.0-20210208023819-88ebb8c504ae/go.mod: verifying module: gitee.com/abc/helloworld@v0.0.0-20210208023819-88ebb8c504ae/go.mod: reading https://goproxy.io/sumdb/sum.golang.org/lookup/gitee.com/abc/tsab@v0.0.0-20210208023819-88ebb8c504ae: 410 Gone server response: not found: gitee.com/abc/helloworld@v0.0.0-20210208023819-88ebb8c504ae: 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
這種錯(cuò)誤是GOPRIVATE 設(shè)置錯(cuò)誤,使得go去驗(yàn)證庫(kù)的sum
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
- Go語(yǔ)言操作mysql數(shù)據(jù)庫(kù)簡(jiǎn)單例子
- Golang的os標(biāo)準(zhǔn)庫(kù)中常用函數(shù)的整理介紹
- Golang標(biāo)準(zhǔn)庫(kù)syscall詳解(什么是系統(tǒng)調(diào)用)
- 解析Go 標(biāo)準(zhǔn)庫(kù) http.FileServer 實(shí)現(xiàn)靜態(tài)文件服務(wù)
- 深入解析Go語(yǔ)言的io.ioutil標(biāo)準(zhǔn)庫(kù)使用
- Go編寫定時(shí)器與定時(shí)任務(wù)詳解(附第三方庫(kù)gocron用法)
- 解決Go語(yǔ)言數(shù)據(jù)庫(kù)中null值的問(wèn)題
- 一步步教你打造高效可靠的Go庫(kù)
相關(guān)文章
Go 代碼規(guī)范錯(cuò)誤處理示例經(jīng)驗(yàn)總結(jié)
這篇文章主要為大家介紹了Go 代碼規(guī)范錯(cuò)誤處理示例實(shí)戰(zhàn)經(jīng)驗(yàn)總結(jié),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08Go微服務(wù)項(xiàng)目配置文件的定義和讀取示例詳解
這篇文章主要為大家介紹了Go微服務(wù)項(xiàng)目配置文件的定義和讀取示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06Go語(yǔ)言實(shí)現(xiàn)ssh&scp的方法詳解
這篇文章主要為大家詳細(xì)介紹了如何利用Go語(yǔ)言實(shí)現(xiàn)ssh&scp,文中的示例代碼講解詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴可以了解一下2022-10-10如何使用Goland IDE go mod 方式構(gòu)建項(xiàng)目
這篇文章主要介紹了如何使用Goland IDE go mod 方式構(gòu)建項(xiàng)目,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10基于Golang開發(fā)一個(gè)輕量級(jí)登錄庫(kù)/框架
幾乎每個(gè)項(xiàng)目都會(huì)有登錄,退出等用戶功能,而登錄又不單僅僅是登錄,我們要考慮很多東西。所以本文就來(lái)用Golang開發(fā)一個(gè)輕量級(jí)登錄庫(kù)/框架吧2023-05-05