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

如何正确运行monibuca实例

作者头像
我不是码神
发布2022-07-28 15:55:51
9070
发布2022-07-28 15:55:51
举报
文章被收录于专栏:流媒体技术

对于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
复制
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 删除。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档