完美解决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中semaphore(信号量)源码
Apr 03 Golang
go结构体嵌套的切片数组操作
Apr 28 Golang
golang goroutine顺序输出方式
Apr 29 Golang
Golang标准库syscall详解(什么是系统调用)
May 25 Golang
Go语言设计模式之结构型模式
Jun 22 Golang
Go语言读取txt文档的操作方法
Jan 22 Golang
golang生成vcf通讯录格式文件详情
Mar 25 Golang
Golang 字符串的常见操作
Apr 19 Golang
Golang 遍历二叉树
Apr 19 Golang
Golang jwt身份认证
Apr 20 Golang
Go 内联优化让程序员爱不释手
Jun 21 Golang
Go语言怎么使用变长参数函数
Jul 15 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 gzip压缩输出的实现方法
2013/04/27 PHP
三种php连接access数据库方法
2013/11/11 PHP
PHP永久登录、记住我功能实现方法和安全做法
2015/04/27 PHP
php文件上传及下载附带显示文件及目录功能
2017/04/27 PHP
Jquery中显示隐藏的实现代码分析
2011/07/26 Javascript
JavaScript高级程序设计 读书笔记之十一 内置对象Global
2012/03/07 Javascript
event.currentTarget与event.target的区别介绍
2012/12/31 Javascript
jquery修改网页背景颜色通过css方法实现
2014/06/06 Javascript
js设置cookie过期当前时间减去一秒相当于立即过期
2014/09/04 Javascript
AngularJS入门教程之Hello World!
2014/12/06 Javascript
javascript变量声明实例分析
2015/04/25 Javascript
举例讲解JavaScript substring()的使用方法
2015/11/09 Javascript
微信小程序 出现错误:{"baseresponse":{"errcode":-80002,"errmsg":""}}解决办法
2017/02/23 Javascript
zTree节点文字过多的处理方法
2017/11/24 Javascript
jQuery实现鼠标滑过商品小图片上显示对应大图片功能【测试可用】
2018/04/27 jQuery
js实现的格式化数字和金额功能简单示例
2019/07/30 Javascript
小程序调用微信支付的方法
2019/09/26 Javascript
Vue双向绑定实现原理与方法详解
2020/05/07 Javascript
JavaScript Window浏览器对象模型原理解析
2020/05/30 Javascript
[01:29]2017 DOTA2国际邀请赛官方英雄手办展示
2017/03/18 DOTA
[40:29]2018DOTA2亚洲邀请赛 4.7总决赛 LGD vs Mineski 第一场
2018/04/10 DOTA
[01:11:11]Alliance vs RNG 2019国际邀请赛淘汰赛 败者组BO1 8.20.mp4
2020/07/19 DOTA
解决Shell执行python文件,传参空格引起的问题
2018/10/30 Python
Python3.5 Json与pickle实现数据序列化与反序列化操作示例
2019/04/29 Python
python使用minimax算法实现五子棋
2019/07/29 Python
Python注释、分支结构、循环结构、伪“选择结构”用法实例分析
2020/01/09 Python
python GUI库图形界面开发之PyQt5计数器控件QSpinBox详细使用方法与实例
2020/02/28 Python
django之导入并执行自定义的函数模块图解
2020/04/01 Python
英国剑桥包中文官网:The Cambridge Satchel Company中国
2018/11/06 全球购物
行政助理的岗位职责
2014/02/18 职场文书
法律进学校实施方案
2014/03/15 职场文书
2015年元旦标语大全
2014/12/09 职场文书
小学重阳节活动总结
2015/03/24 职场文书
帝企鹅日记观后感
2015/06/10 职场文书
世界无敌的ICOM IC-R9500宽频接收机
2022/03/25 无线电
js作用域及作用域链工作引擎
2022/07/07 Javascript