前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何正确运行monibuca实例

如何正确运行monibuca实例

作者头像
我不是码神
发布于 2022-07-28 07:55:51
发布于 2022-07-28 07:55:51
96800
代码可运行
举报
文章被收录于专栏:流媒体技术流媒体技术
运行总次数:0
代码可运行

对于golang新手来说,经常会出现无法编译一个github上的项目,主要原因是http://golang.org域名被墙,导致无法正常下载依赖项,另外go module还有GOPATH等一些概念不熟悉导致的。本人以http://github.com/langhuihui/monibuca为例,画了一个图,帮助初学者快速顺利启动一个项目。

什么是mod模式?

默认情况下GO111MODULE = “”代表mod模式处于自动状态

即如果当前目录下含有go.mod文件,那么就会自动进入mod模式,否则就是非mod模式。

如果手动设置了GO111MODULE = on 那么就会一直处于mod模式。

如果设置了GO111MODULE = off 那么就关闭了mod模式。

mod模式下,go工程的所有依赖都会被下载到$GOPATH/pkg/mod下面。并且是多版本共存的状态。

例如在windows下执行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
set GO111MODULE=on
go get github.com/langhuihui/monibuca

就会临时开启mod模式并将这个项目下载到

%GOPATH%\pkg\mod\http://github.com\langhuihui\monibuca@v1.2.14

同时该项目所有依赖项也会被下载到pkg

另外一种常规做法:

使用git clone github.com/langhuihui/monibuca 到任意目录下,由于该项目已经包含了go.mod,所以,我们只需要到目录下执行go run main.go即可启动实例。也可以先使用go build编译出exe文件,后再运行exe文件。此时会下载所有依赖项。

mod模式下如何更新依赖项?

在实例目录下,执行go get -u即可更新所有依赖项,更新完毕后需要重新执行go build。

单独更新某个依赖项:

例如更新engine:go get -u github.com/Monibuca/engine/v2

更新到指定版本:go get -u github.com/Monibuca/engine/v2@v2.1.9

更新完成后,会更新当前目录下的go.mod文件。

非mod模式

非mod模式下,所有的依赖库都会下载到GOPATH下的src目录,并且不区分版本。

非mod模式下(当前目录没有go.mod)执行go get http://github.com/langhuihui/monibuca会将这个库下载到

GOPATH/src/http://github.com/langhuihui/monibuca下面。我们可以直接在这个目录进行开发和调试。

也可以直接git clone到这个目录,然后删除go.mod或者GO111MODULE = off关闭mod模式,后执行go get,就会开始下载依赖项到GOPATH/src目录了。

注意:由于http://golang.org域名被墙,导致go get失败,所以需要翻墙。如果无法翻墙,则可以使用mod模式,并配置GOPROXY=goproxy.io,direct 。 注意:GOPROXY只能和mod模式配合使用。

非mod模式下无法翻墙怎么办?

非mod模式下,主要无法下载的是http://golang.org/x/syshttp://golang.org/x/synchttp://golang.org/x/nethttp://golang.org/x/crypto

所以可以在开启mod模式下先下载到pkg目录下,然后将这个四个包复制到src目录下,并去掉目录中的版本号。然后就可以正常go get了。

非mod模式下可以方便对源码进行修改和调试,不用担心修改的源码和引用的源码不一致的情况。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-05-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Go项目管理
包被导入时,会执行init函数,优先于main函数,不能有参数和返回值,建议少用,仅用于全局变量初始化,或者单元测试初始化一些东西
用户9022575
2021/10/01
1K0
Golang学习笔记,从入门到精通,持续记录
Golang官网:https://go.dev/、Golang下载:https://go.dev/、Golang学习文档:https://go.dev/doc/
房东的狗丶
2023/02/17
1.3K0
Go Module详细使用教程,包管理不在难
go modules是 golang 1.11引入的新特性。模块是相关Go包的集合。modules是源代码交换和版本控制的单元。go命令直接支持使用modules,包括记录和解析对其他模块的依赖性。modules替换旧的基于GOPATH的方法来指定在给定构建中使用哪些源文件。
公号:咻咻ing
2020/03/04
20.6K0
Go语言基本环境变量与依赖管理
最近开始系统学习一下Golang这么新语言,记录一下它的基本环境变量配置以及依赖管理方式。编写本文的时候使用的Golang版本为go1.13.5 windows/amd64,其他版本不一定保证适合本文的内容。因为习惯,可能有时候把Go语言称为Go,有时候称为Golang。
Throwable
2020/06/23
9.3K1
Go | 浅谈包管理模式
go的编译器会在 $GOPATH/src 下面寻找对应的模块,src 下的每一个目录都可以对应一个模块,目录中的目录也可以是一个模块
甜点cc
2022/11/16
5330
Go | 浅谈包管理模式
Go——依赖管理
在Go1.5 release的版本的发布vendor目录被添加到除了GOPATH和GOROOT之外的依赖目录查找的解决方法。 查找依赖包路径的解决 当前包下的vendor目录 先上级的目录查找,直到找到scr的vendor目录 在GOPATH下面查找依赖包 在GOROOT目录下查找
羊羽shine
2019/05/29
1.4K0
go mod使用
最近由于换工作,开始交接工作。整理以前的工作内容,由于组内就我一个在做go和大数据。 所以开发没有规划,当时是怎么快怎么来。go也是使用最传统的go path的方式管理的。都是手动管理依赖的。现在交接给他人,需要多人开发,发现很多问题。比如版本问题,各种依赖的问题等等。
若与
2020/05/18
1.6K0
Go语言重新开始,Go Modules 的前世今生与基本使用
2020 年腾讯内部的一份开发者报告显示,Go 语言已经成为腾讯内部第二大后端开发语言,在腾讯每天有大量的 Go 开发者在做业务和平台开发,大量的团队和项目使用也暴露出一些问题,随着 Go Modules 的出现,类似于内部自签发证书、安全审计等这些问题也逐渐得到解决。
Bain
2021/11/02
7970
Go语言重新开始,Go Modules 的前世今生与基本使用
Go mod包依赖管理工具使用详解
对比上面几点: 目前做的最好的也就 maven了,gradle没有使用过,不知道。
OwenZhang
2021/12/08
1K0
Go mod包依赖管理工具使用详解
[Golang]包管理
本文是本人在探索 Go 最新的包管理 Go Modules 的一些总结,希望能够更深入了解 Go 最新的包管理方式,以及在实际环境中将它很好的使用起来。
别打名名
2020/07/28
1.8K0
Go语言重新开始,Go Modules的前世今生与基本使用
2020年腾讯内部的一份开发者报告显示,Go语言已经成为腾讯内部第二大后端开发语言,在腾讯每天有大量的Go开发者在做业务和平台开发,大量的团队和项目使用也暴露出一些问题,随着Go Modules的出现,类似于内部自签发证书、安全审计等这些问题也逐渐得到解决。 笔者在腾讯当前负责腾讯云在Go编程语言使用上的一些问题,2021年初开始负责内部goproxy服务并推广Go Modules使用,这些技术支撑了腾讯云、微信、腾讯视频、腾讯游戏、腾讯音乐、腾讯会议等明星产品,并与公司内部软件源团队、工蜂团队、
腾讯云开发者
2021/11/25
6730
使用 Go Modules 管理依赖
Go Modules 是 Go 语言的一种依赖管理方式,该 feature 是在 Go 1.11 版本中出现的,由于最近在做的项目中,团队都开始使用 go module 来替代以前的 Godep,Kubernetes 也从 v1.15 开始采用 go module 来进行包管理,所以有必要了解一下 go module。go module 相比于原来的 Godep,go module 在打包、编译等多个环节上有着明显的速度优势,并且能够在任意操作系统上方便的复现依赖包,更重要的是 go module 本身的设计使得自身被其他项目引用变得更加容易,这也是 Kubernetes 项目向框架化演进的又一个重要体现。
田飞雨
2019/12/20
1K0
Go依赖模块版本之Module避坑使用详解
对于Go的版本管理主要用过 glide,下面介绍 Go 1.11 之后官方支持的版本管理工具 mod。
sunsky
2020/08/20
4.6K0
go modules:使用 mod 管理项目依赖包,通过vendor实现一键分发编译包
在go语言1.11版本之前,没有modules机制,所有软件包都在安装在$GOPATH/src目录下。不同项目如果引用了同一个软件包的不同版本,就会造成编译麻烦。修改$GOPATH变量是当时一种比较简单的解决方案。
LIYI
2020/03/25
6.6K0
Go Modules 终极入门
Go modules 是 Go 语言中正式官宣的项目依赖解决方案,Go modules(前身为vgo)于 Go1.11 正式发布,在 Go1.14 已经准备好,并且可以用在生产上(ready for production)了,Go 官方也鼓励所有用户从其他依赖项管理工具迁移到 Go modules。
madneal
2020/03/10
1.9K0
Go Modules 终极入门
golang mod 入门
go modules 是 golang 1.11 新加的特性。现在1.12 已经发布了,是时候用起来了。Modules官方定义为:
goodspeed
2020/12/22
8500
Go编程之相关命令工具记录
该命令可以借助代码管理工具通过远程拉取或更新代码包及其依赖包,并自动完成编译和安装,整个过程类似安装App一样;
全栈工程师修炼指南
2022/09/29
6290
go mod 在使用私有gitlab做nginx转发时“go-get=1”错误解决
问题一:依赖的包下载到哪里了? 使用Go的包管理方式,依赖的第三方包被下载到了$GOPATH/pkg/mod路径下。如果你成功运行了本例,可以在您的$GOPATH/pkg/mod 下找到一个这样的包 github.com/astaxie/beego@v1.11.1
机械视角
2019/10/23
2.6K0
Golang Module的使用 顶
注意:go mod 还有一些其他比较有意思的工具,比如可以打印依赖树,比如可以查看哪些模块在哪些包引用了
BGBiao
2019/09/09
1.3K0
石桥码农:如何在本地基于 nideshop 架设一个微信小程序商城?
本文主要基于 nideshop 和 moshopserver 构建,在本地构建,mysql可以用本地的,也可以用云上的。这个项目的意义,主要在于自己学习和研究小程序商城项目的开发。
LIYI
2020/02/13
2.4K0
石桥码农:如何在本地基于 nideshop 架设一个微信小程序商城?
相关推荐
Go项目管理
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验