完美解决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
Go缓冲channel和非缓冲channel的区别说明
Apr 25 Golang
对Golang中的FORM相关字段理解
May 02 Golang
解决golang post文件时Content-Type出现的问题
May 02 Golang
Go标准容器之Ring的使用说明
May 05 Golang
Go语言实现Snowflake雪花算法
Jun 08 Golang
Go 语言下基于Redis分布式锁的实现方式
Jun 28 Golang
详解Go语言Slice作为函数参数的使用
Jul 02 Golang
golang实现浏览器导出excel文件功能
Mar 25 Golang
Golang 1.18 多模块Multi-Module工作区模式的新特性
Apr 11 Golang
Go语言编译原理之变量捕获
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
PHP3 safe_mode 失效漏洞
2006/10/09 PHP
PHP Memcached应用实现代码
2010/02/08 PHP
自己写的php curl库实现整站克隆功能
2015/02/12 PHP
PHP解析RSS的方法
2015/03/05 PHP
Javascript & DHTML 实例编程(教程)DOM基础和基本API
2007/06/02 Javascript
JQuery的html(data)方法与<script>脚本块的解决方法
2010/03/09 Javascript
js最简单的拖拽效果实现代码
2010/09/24 Javascript
基于jquery实现的鼠标拖拽元素复制并写入效果
2011/08/23 Javascript
jquery常用特效方法使用示例
2014/04/25 Javascript
Javascript获取当前时间函数和时间操作小结
2014/10/01 Javascript
13 款最热门的 jQuery 图像 360 度旋转插件推荐
2014/12/09 Javascript
元素绑定click点击事件方法
2015/06/08 Javascript
浅谈JavaScript异常处理语句
2015/06/26 Javascript
jQuery插件formValidator实现表单验证
2016/05/23 Javascript
JavaScript中关键字 in 的使用方法详解
2016/10/17 Javascript
微信小程序 获取相册照片实例详解
2016/11/16 Javascript
jquery dialog获取焦点的方法
2017/02/09 Javascript
jquery中关于bind()方法的使用技巧分享
2017/03/30 jQuery
vue 如何添加全局函数或全局变量以及单页面的title设置总结
2017/06/01 Javascript
Vue中qs插件的使用详解
2020/02/07 Javascript
解决vue加scoped后就无法修改vant的UI组件的样式问题
2020/09/07 Javascript
[01:21]DOTA2新纪元-7.0新版本即将开启!
2016/12/11 DOTA
Python中利用函数装饰器实现备忘功能
2015/03/30 Python
学习Django知识点分享
2019/09/11 Python
python 制作网站小说下载器
2021/02/20 Python
css3 给页面加个半圆形导航条主要利用旋转和倾斜样式
2014/02/10 HTML / CSS
html5 canvas的绘制文本自动换行的示例代码
2018/09/17 HTML / CSS
北美领先的智能产品购物网站:Wellbots
2018/06/11 全球购物
C#实现启动一个进程
2016/10/01 面试题
创立科技Java面试题
2015/11/29 面试题
2014高中生入党思想汇报范文
2014/09/13 职场文书
班子四风对照检查材料思想汇报
2014/09/29 职场文书
花木兰观后感
2015/06/10 职场文书
开学典礼观后感
2015/06/15 职场文书
观看安全警示教育片心得体会
2016/01/15 职场文书
Django操作cookie的实现
2021/05/26 Python