首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >` `go install`,`gov.endor install +local`和`gov.endor install +vendor,^program` `的区别是什么?

` `go install`,`gov.endor install +local`和`gov.endor install +vendor,^program` `的区别是什么?
EN

Stack Overflow用户
提问于 2017-07-10 17:55:03
回答 1查看 3.8K关注 0票数 0

使用govendor时,go installgovendor install +localgovendor install +vendor,^program有什么不同

govendor install +vendor,^program说要构建并安装我所有的供应商软件包。但是,它将安装在什么位置?它会将我的项目和供应商的命令可执行文件安装到$GOPATH/bin,将我的项目和供应商的包对象安装到$GOPATH/pkg吗?

govendor install +local建议只在存储库中构建所有内容。那么这到底是什么意思呢?它会创建vendor/binvendor/pkg吗?

如果我在我的项目中运行go install呢?这与上面的两个命令有什么不同?

EN

回答 1

Stack Overflow用户

发布于 2017-07-11 02:25:08

Go最初是以一种全新的依赖管理和工作空间文件夹结构的想法出现的。有一个严格的层次结构,项目将位于其中(在$gopath/src/site.com/user/project中),而其他项目将简单地导入所有其他项目的最新版本。这样做的问题是,如果某个上游项目更改了API,那么您的项目将莫名其妙地崩溃。这就是供应商的用武之地。

供应商是项目中的一个子目录,其中包含项目导入的$gopath/src下的所有内容。不同之处在于,当上游项目引入新功能和/或修复时,供应商不会更新。因此,您必须自己更新它。当go查找导入(最新版本)时,它将首先检查供应商,然后在您的$gopath中查找最新版本,防止构建莫名其妙地中断。

go install将您的$gopath依赖项更新为最新版本;即所有新项目和没有供应商的项目都将使用的版本。

govendor install +vendor,^program会更新您的特定项目供应商依赖项。这应该在单独的提交中完成;你应该go test; govendor; git commit; go test,这样你就可以检查更新是否破坏了你的项目。

显然,govendor install +local只是构建了这个项目。

另外,你应该使用godep而不是govendor。It IHMO有更好的工作流程;你的$gopath有最新版本,然后你就可以用godep update更新你的项目了。这也应该是golang 1.10中的标准。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45008976

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档