完美解决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 http使用踩过的坑与填坑指南
Apr 27 Golang
golang goroutine顺序输出方式
Apr 29 Golang
go mod 安装依赖 unkown revision问题的解决方案
May 06 Golang
深入理解go缓存库freecache的使用
Feb 15 Golang
Golang使用Panic与Recover进行错误捕获
Mar 22 Golang
Golang MatrixOne使用介绍和汇编语法
Apr 19 Golang
Golang解析JSON对象
Apr 30 Golang
深入理解 Golang 的字符串
May 04 Golang
Golang实现可重入锁的示例代码
May 25 Golang
详解Go语言中Get/Post请求测试
Jun 01 Golang
Golang gRPC HTTP协议转换示例
Jun 16 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实现微信公众平台账号自定义菜单类
2014/12/02 PHP
PHP针对伪静态的注入总结【附asp与Python相关代码】
2017/08/01 PHP
PHP实现按之字形顺序打印二叉树的方法
2018/01/16 PHP
Laravel 5.4.36中session没有保存成功问题的解决
2018/02/19 PHP
兼容FF和IE的动态table示例自写
2013/10/21 Javascript
使用JS实现jQuery的addClass, removeClass, hasClass函数功能
2014/10/31 Javascript
JS实现动态给图片添加边框的方法
2015/04/01 Javascript
Angular Module声明和获取重载实例代码
2016/09/14 Javascript
angularjs实现搜索的关键字在正文中高亮出来
2017/06/13 Javascript
vue.js源代码core scedule.js学习笔记
2017/07/03 Javascript
AngularJS 的$timeout服务示例代码
2017/09/21 Javascript
Vue Router去掉url中默认的锚点#
2018/08/01 Javascript
解决在vue项目中webpack打包后字体不生效的问题
2018/09/01 Javascript
在小程序Canvas中使用measureText的方法示例
2018/10/19 Javascript
原生JS使用Canvas实现拖拽式绘图功能
2019/06/05 Javascript
js实现拖动缓动效果
2020/01/13 Javascript
node.js 使用 net 模块模拟 websocket 握手进行数据传递操作示例
2020/02/11 Javascript
Vue性能优化的方法
2020/07/30 Javascript
[07:52]2014DOTA2 TI逗比武士游V社解说背后的故事
2014/07/10 DOTA
python使用PyGame绘制图像并保存为图片文件的方法
2015/04/24 Python
解决python文件字符串转列表时遇到空行的问题
2017/07/09 Python
使用Python & Flask 实现RESTful Web API的实例
2017/09/19 Python
TensorFlow实现简单卷积神经网络
2018/05/24 Python
python将字母转化为数字实例方法
2019/10/04 Python
Python实现AI换脸功能
2020/04/10 Python
python中reload重载实例用法
2020/12/15 Python
学生会竞选自荐信
2013/10/12 职场文书
电子商务专业学生的自我鉴定
2013/11/28 职场文书
人力资源部经理岗位职责规定
2014/02/23 职场文书
敬老院活动总结
2014/04/28 职场文书
2014最新党员违纪检讨书
2014/10/12 职场文书
典型事迹材料范文
2014/12/29 职场文书
教师党员自我评价范文
2015/03/04 职场文书
2019已经过半,你知道年中工作总结该怎么写吗?
2019/07/03 职场文书
python实现web邮箱扫描的示例(附源码)
2021/03/30 Python
MySQL之DML语言
2021/04/05 MySQL