完美解决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语言中切片与内存复制 memcpy 的实现操作
Apr 27 Golang
go结构体嵌套的切片数组操作
Apr 28 Golang
Go语言中break label与goto label的区别
Apr 28 Golang
彻底理解golang中什么是nil
Apr 29 Golang
解决golang在import自己的包报错的问题
Apr 29 Golang
解决golang post文件时Content-Type出现的问题
May 02 Golang
Golang: 内建容器的用法
May 05 Golang
解决Goland 同一个package中函数互相调用的问题
May 06 Golang
go语言中http超时引发的事故解决
Jun 02 Golang
再次探讨go实现无限 buffer 的 channel方法
Jun 13 Golang
golang为什么要统一错误处理
Apr 03 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实现扫描二维码根据浏览器类型访问不同下载地址
2014/10/15 PHP
php 一维数组的循环遍历实现代码
2017/04/10 PHP
PHP完全二叉树定义与实现方法示例
2017/10/09 PHP
JS getMonth()日期函数的值域是0-11
2010/02/15 Javascript
jQuery.autocomplete 支持中文输入(firefox)修正方法
2011/03/10 Javascript
js加强的经典分页实例
2013/03/15 Javascript
jquery实现简单的拖拽效果实例兼容所有主流浏览器(优化篇)
2013/06/28 Javascript
jquery mobile实现拨打电话功能的几种方法
2013/08/05 Javascript
iframe调用父页面函数示例详解
2014/07/17 Javascript
如何在Angular.JS中接收并下载PDF
2016/11/26 Javascript
ES6中Proxy代理用法实例浅析
2017/04/06 Javascript
Vue.js实现一个todo-list的上移下移删除功能
2017/06/26 Javascript
详解使用vuex进行菜单管理
2017/12/21 Javascript
layui从数据库中获取复选框的值并默认选中方法
2018/08/15 Javascript
[01:42]TI4西雅图DOTA2前线报道 第一顿早饭哦
2014/07/08 DOTA
Python各类图像库的图片读写方式总结(推荐)
2018/02/23 Python
python实现数独游戏 java简单实现数独游戏
2018/03/30 Python
Python针对给定列表中元素进行翻转操作的方法分析
2018/04/27 Python
为什么str(float)在Python 3中比Python 2返回更多的数字
2018/10/16 Python
pycharm 在windows上编辑代码用linux执行配置的方法
2018/10/27 Python
Python饼状图的绘制实例
2019/01/15 Python
Django实现文件上传和下载功能
2019/10/06 Python
详解如何用python实现一个简单下载器的服务端和客户端
2019/10/28 Python
Django 项目通过加载不同env文件来区分不同环境
2020/02/17 Python
Django 实现 Websocket 广播、点对点发送消息的代码
2020/06/03 Python
英国在线汽车和面包车零件商店:Car Parts 4 Less
2018/08/15 全球购物
拾金不昧的表扬信
2014/01/16 职场文书
社区十八大感言
2014/01/19 职场文书
电气工程自动化求职信
2014/03/14 职场文书
精神文明建设标语
2014/06/16 职场文书
好人好事演讲稿
2014/09/01 职场文书
国庆节促销广告语2014
2014/09/19 职场文书
党的群众路线教育实践活动个人对照检查材料(四风)
2014/11/05 职场文书
详解vue身份认证管理和租户管理
2021/05/25 Vue.js
JVM钩子函数的使用场景详解
2021/08/23 Java/Android
SQLServer RANK() 排名函数的使用
2022/03/23 SQL Server