完美解决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 相关文章推荐
Golang Gob编码(gob包的使用详解)
May 07 Golang
Golang全局变量加锁的问题解决
May 08 Golang
Go timer如何调度
Jun 09 Golang
再次探讨go实现无限 buffer 的 channel方法
Jun 13 Golang
Golang的继承模拟实例
Jun 30 Golang
Go语言并发编程 sync.Once
Oct 16 Golang
Go 语言中 20 个占位符的整理
Oct 16 Golang
详解Golang如何优雅的终止一个服务
Mar 21 Golang
golang三种设计模式之简单工厂、方法工厂和抽象工厂
Apr 10 Golang
golang生成并解析JSON
Apr 14 Golang
Golang解析JSON对象
Apr 30 Golang
Python测试框架pytest核心库pluggy详解
Aug 05 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 socket 模拟POST 请求实例代码
2016/07/18 PHP
PHP实现的大文件切割与合并功能示例
2018/04/10 PHP
php array_map()函数实例用法
2021/03/03 PHP
HTML IMG标签 onload 内存溢出导致浏览器CPU占用过高
2021/03/09 Javascript
JavaScript 事件属性绑定带参数的函数
2009/03/13 Javascript
JavaScript通过select动态更换图片的方法
2015/03/23 Javascript
JQuery中基础过滤选择器用法实例分析
2015/05/18 Javascript
纯javascript实现的小游戏《Flappy Pig》实例
2015/07/27 Javascript
javascript性能优化之DOM交互操作实例分析
2015/12/12 Javascript
jQuery遮罩层效果实例分析
2016/01/14 Javascript
js 求时间差的实现代码
2016/04/26 Javascript
jQuery EasyUI学习教程之datagrid点击列表头排序
2016/07/09 Javascript
js仿百度切换皮肤功能(html+css)
2016/07/10 Javascript
jQuery制作input提示内容(兼容IE8以上)
2017/07/05 jQuery
jQuery列表检索功能实现代码
2017/07/17 jQuery
Vue.js 的移动端组件库mint-ui实现无限滚动加载更多的方法
2017/12/23 Javascript
Nodejs中crypto模块的安全知识讲解
2018/01/03 NodeJs
详解基于Koa2开发微信二维码扫码支付相关流程
2018/05/16 Javascript
JS基于封装函数实现的表格分页完整示例
2018/06/26 Javascript
python运行时强制刷新缓冲区的方法
2019/01/14 Python
python使用参数对嵌套字典进行取值的方法
2019/04/26 Python
python实现读取excel文件中所有sheet操作示例
2019/08/09 Python
python多进程并行代码实例
2019/09/30 Python
基于Python3.6中的OpenCV实现图片色彩空间的转换
2020/02/03 Python
解决echarts中饼图标签重叠的问题
2020/05/16 Python
python 使用xlsxwriter循环向excel中插入数据和图片的操作
2021/01/01 Python
美国创意礼品网站:UncommonGoods
2017/02/03 全球购物
自考毕业生自我鉴定
2013/11/04 职场文书
百度吧主申请感言
2014/01/12 职场文书
争先创优心得体会
2014/09/12 职场文书
新闻通讯稿模板
2015/07/22 职场文书
Python图片检索之以图搜图
2021/05/31 Python
JavaScript实现简单拖拽效果
2021/09/15 Javascript
mysql分组后合并显示一个字段的多条数据方式
2022/01/22 MySQL
Appium中scroll和drag_and_drop根据元素位置滑动
2022/02/15 Python
彻底弄懂Python中的回调函数(callback)
2022/06/25 Python