完美解决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 相关文章推荐
goland 清除所有的默认设置操作
Apr 28 Golang
golang 如何通过反射创建新对象
Apr 28 Golang
golang goroutine顺序输出方式
Apr 29 Golang
解决Golang time.Parse和time.Format的时区问题
Apr 29 Golang
golang 定时任务方面time.Sleep和time.Tick的优劣对比分析
May 05 Golang
Go语言空白表示符_的实例用法
Jul 04 Golang
Go语言实现Base64、Base58编码与解码
Jul 26 Golang
Go语言实现一个简单的并发聊天室的项目实战
Mar 18 Golang
Go语言特点及基本数据类型使用详解
Mar 21 Golang
Golang 实现WebSockets
Apr 24 Golang
Golang实现可重入锁的示例代码
May 25 Golang
Go本地测试解耦任务拆解及沟通详解Go本地测试的思路沟通的重要性总结
Jun 21 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
不支持fsockopen但支持culr环境下下ucenter与modoer通讯问题
2011/08/12 PHP
php+curl 发送图片处理代码分享
2015/07/09 PHP
4种Windows系统下Laravel框架的开发环境安装及部署方法详解
2020/04/06 PHP
jquery给图片添加鼠标经过时的边框效果
2013/11/12 Javascript
node.js中的fs.readFile方法使用说明
2014/12/15 Javascript
JavaScript计算器网页版实现代码分享
2016/07/15 Javascript
js在ie下打开对话窗口的方法小结
2016/10/24 Javascript
详解Vue方法与事件
2017/03/09 Javascript
JavaScript数据结构之广义表的定义与表示方法详解
2017/04/12 Javascript
基于JavaScript实现的希尔排序算法分析
2017/04/14 Javascript
基于Vuejs和Element的注册插件的编写方法
2017/07/03 Javascript
python爬取安居客二手房网站数据(实例讲解)
2017/10/19 Javascript
Angular4集成ng2-file-upload的上传组件
2018/03/14 Javascript
Promise.all中对于reject的处理方法
2018/08/01 Javascript
vuejs 动态添加input框的实例讲解
2018/08/24 Javascript
JavaScript命令模式原理与用法实例详解
2020/03/10 Javascript
vue 动态添加class,三个以上的条件做判断方式
2020/11/02 Javascript
解决nuxt 自定义全局方法,全局属性,全局变量的问题
2020/11/05 Javascript
python optparse模块使用实例
2015/04/09 Python
Python中实现参数类型检查的简单方法
2015/04/21 Python
自动化Nginx服务器的反向代理的配置方法
2015/06/28 Python
快速入手Python字符编码
2016/08/03 Python
PyChar学习教程之自定义文件与代码模板详解
2017/07/17 Python
Python中read()、readline()和readlines()三者间的区别和用法
2017/07/30 Python
python增加矩阵维度的实例讲解
2018/04/04 Python
python类中super() 的使用解析
2019/12/19 Python
Python能做什么
2020/06/02 Python
HTML5 Canvas锯齿图代码实例
2014/04/10 HTML / CSS
关于canvas绘制模糊问题的解决方法
2019/09/24 HTML / CSS
如何将一个描述日期或日期/时间的字符串转换为一个Date对象
2015/10/13 面试题
农药学硕士毕业生自荐信
2013/09/25 职场文书
入党思想汇报怎么写
2014/04/03 职场文书
产品销售计划书
2014/05/04 职场文书
赞美老师的演讲稿
2014/05/22 职场文书
2014年检验员工作总结
2014/11/19 职场文书
红色影片观后感
2015/06/18 职场文书