完美解决golang go get私有仓库的问题


Posted in Golang onMay 05, 2021

解决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 "username@git.xxxxxxx.com"]
    insteadOf = https://git.xxxxxxx.com

结论

这个问题,google 堪称一绝,够任性

补充:go get拉取私有项目,遇到 404 Not Found解决办法

问题

利用go module进行包管理的时候,要获取远程仓库的最新包,使用go get+项目名获取,提示404 Not Found,如图:

完美解决golang go get私有仓库的问题

原因及解决办法 原因

这是由于go get在进行获取远程包的时候,没有指定用户以及密码,导致没有权限,故失败

办法

go get时添加“-insecure”参数,如图:

完美解决golang go get私有仓库的问题

补充:golang 配置私有仓库

配置使用ssh 访问的仓库

1. go mod 根据go.mod拉取依赖库时

会使用https的方式。为了方便我们也可以通过配置git 全局配置来使用 ssh的方式拉取依赖,下面是配置 https转换为ssh的方式:

git config --global url."git@gitee.com:".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/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

这种错误为没有配置 git 的https转换为 ssh

2. 错误二

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

这种错误是GOPRIVATE 设置错误,使得go去验证库的sum

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。如有错误或未考虑完全的地方,望不吝赐教。

Golang 相关文章推荐
go:垃圾回收GC触发条件详解
Apr 24 Golang
Go使用协程交替打印字符
Apr 29 Golang
golang日志包logger的用法详解
May 05 Golang
go mod 安装依赖 unkown revision问题的解决方案
May 06 Golang
GoLang中生成UUID唯一标识的实现
May 08 Golang
浅谈Golang 切片(slice)扩容机制的原理
Jun 09 Golang
使用GO语言实现Mysql数据库CURD的简单示例
Aug 07 Golang
golang 语言中错误处理机制
Aug 30 Golang
如何解决goland,idea全局搜索快捷键失效问题
Apr 03 Golang
Go语言grpc和protobuf
Apr 13 Golang
Golang jwt身份认证
Apr 20 Golang
Golang ort 中的sortInts 方法
Apr 24 Golang
golang gopm get -g -v 无法获取第三方库的解决方案
May 05 #Golang
go类型转换及与C的类型转换方式
May 05 #Golang
Golang: 内建容器的用法
May 05 #Golang
Go标准容器之Ring的使用说明
May 05 #Golang
go语言中GOPATH GOROOT的作用和设置方式
go设置多个GOPATH的方式
May 05 #Golang
浅谈golang 中time.After释放的问题
May 05 #Golang
You might like
php图片合成方法(多张图片合成一张)
2017/11/25 PHP
jQuery AjaxQueue改进步骤
2011/10/06 Javascript
js正则表达exec与match的区别说明
2014/01/29 Javascript
JQuery为页面Dom元素绑定事件及解除绑定方法
2014/04/23 Javascript
JavaScript的原型继承详解
2015/02/15 Javascript
删除javascript所创建子节点的方法
2015/05/21 Javascript
javaScript中push函数用法实例分析
2015/06/08 Javascript
javascript关于继承解析
2016/05/10 Javascript
JavaScript获取URL中参数querystring的方法详解
2016/10/11 Javascript
Bootstrap 模态框实例插件案例分析
2016/12/28 Javascript
JS获取鼠标位置距浏览器窗口距离的方法示例
2017/04/11 Javascript
基于BootStrap multiselect.js实现的下拉框联动效果
2017/07/28 Javascript
解决vue 路由变化页面数据不刷新的问题
2018/03/13 Javascript
vue 实现边输入边搜索功能的实例讲解
2018/09/16 Javascript
小程序实现左滑删除功能
2018/10/30 Javascript
实例详解带参数的 npm script
2019/05/28 Javascript
利用layer实现表单完美验证的方法
2019/09/26 Javascript
详解vue中使用axios对同一个接口连续请求导致返回数据混乱的问题
2019/11/06 Javascript
Vue发布订阅模式实现过程图解
2020/04/30 Javascript
vue style width a href动态拼接问题的解决
2020/08/07 Javascript
Python中尝试多线程编程的一个简明例子
2015/04/07 Python
pytorch中交叉熵损失(nn.CrossEntropyLoss())的计算过程详解
2020/01/02 Python
python实现串口通信的示例代码
2020/02/10 Python
Web前端绘制0.5像素的几种方法
2017/08/11 HTML / CSS
H5 canvas实现贪吃蛇小游戏
2017/07/28 HTML / CSS
印度最大的酒店品牌网络:OYO Rooms
2016/07/24 全球购物
美国家喻户晓的保健品品牌:Vitamin World(维他命世界)
2016/08/19 全球购物
新英格兰最大的特色礼品连锁店:The Paper Store
2018/07/23 全球购物
《在家里》教后反思
2014/03/01 职场文书
《鸿门宴》教学反思
2014/04/22 职场文书
文明演讲稿范文
2014/05/12 职场文书
幼儿教师求职信
2014/05/24 职场文书
医德医魂心得体会
2014/09/11 职场文书
教师三严三实心得体会
2014/10/11 职场文书
2015年征兵工作总结
2015/07/23 职场文书
导游词之烟台威海蓬莱
2019/11/14 职场文书