完美解决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语言map与string的相互转换的实现
Apr 07 Golang
Go语言使用select{}阻塞main函数介绍
Apr 25 Golang
golang如何去除多余空白字符(含制表符)
Apr 25 Golang
解决Golang中ResponseWriter的一个坑
Apr 27 Golang
golang 实现两个结构体复制字段
Apr 28 Golang
golang协程池模拟实现群发邮件功能
May 02 Golang
golang 实现时间戳和时间的转化
May 07 Golang
Go 语言结构实例分析
Jul 04 Golang
victoriaMetrics库布隆过滤器初始化及使用详解
Apr 05 Golang
Go并发4种方法简明讲解
Apr 06 Golang
Golang实现可重入锁的示例代码
May 25 Golang
Go语言测试库testify使用学习
Jul 23 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 skymvc 一款轻量、简单的php
2011/06/28 PHP
PHP swfupload图片上传的实例代码
2013/09/30 PHP
php用正则判断是否为数字的方法
2016/03/25 PHP
完美的php分页类
2017/10/24 PHP
php实现有序数组旋转后寻找最小值方法
2018/09/27 PHP
WEB高性能开发之疯狂的HTML压缩
2010/06/19 Javascript
js/jQuery对象互转(快速操作dom元素)
2013/02/04 Javascript
对Jquery中的ajax再封装,简化操作示例
2014/02/12 Javascript
Javascript写入txt和读取txt文件示例
2014/02/12 Javascript
js中的caller和callee属性介绍和例子
2014/06/07 Javascript
jQuery插件Flexslider实现图片轮播、图文结合滑动切换效果
2020/04/16 Javascript
Node.js数据库操作之查询MySQL数据库(二)
2017/03/04 Javascript
使用jQuery卸载全部事件的思路详解
2017/04/03 jQuery
Ionic + Angular.js实现验证码倒计时功能的方法
2017/06/12 Javascript
在vue项目中引用Iview的方法
2018/09/14 Javascript
JS获取月的第几周和年的第几周实例代码
2018/12/05 Javascript
使用Python的Supervisor进行进程监控以及自动启动
2014/05/29 Python
Python中支持向量机SVM的使用方法详解
2017/12/26 Python
在python中将字符串转为json对象并取值的方法
2018/12/31 Python
Python中常用的8种字符串操作方法
2019/05/06 Python
python快速编写单行注释多行注释的方法
2019/07/31 Python
Python 线程池用法简单示例
2019/10/02 Python
Python编程快速上手——选择性拷贝操作案例分析
2020/02/28 Python
python去除删除数据中\u0000\u0001等unicode字符串的代码
2020/03/06 Python
通过Python扫描代码关键字并进行预警的实现方法
2020/05/24 Python
Python字符串格式化常用手段及注意事项
2020/06/17 Python
Boden英国官网:英国知名原创时装品牌
2018/11/06 全球购物
销售总监工作职责
2013/11/21 职场文书
最新的互联网创业计划书
2014/01/10 职场文书
理财学专业自荐书
2014/06/28 职场文书
优秀班组申报材料
2014/12/25 职场文书
2015年食品安全工作总结
2015/05/15 职场文书
初一军训感言
2015/08/01 职场文书
党性教育心得体会(共6篇)
2016/01/21 职场文书
vue3中的组件间通信
2021/03/31 Vue.js
忆童年!用Python实现愤怒的小鸟游戏
2021/06/07 Python