gpt4 book ai didi

go - `go install` 、 `govendor install +local` 和 `govendor install +vendor,^program` 有什么区别?

转载 作者:数据小太阳 更新时间:2023-10-29 03:24:47 30 4
gpt4 key购买 nike

使用govendor时,go installgovendor install +localgovendor install +vendor,^program有什么区别?

govendor install +vendor,^program 表示构建并安装我所有的 vendor 包。但是它将安装到什么地方?它会将我的项目和 vendor 的命令可执行文件安装到 $GOPATH/bin 并将我的项目和 vendor 的包对象安装到 $GOPATH/pkg 吗?

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

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

最佳答案

Go 以一种全新的依赖管理和工作区文件夹结构的理念首次问世。项目所在位置有严格的层次结构(在 $gopath/src/site.com/user/project 中),其他项目只需导入所有其他项目的最新版本。这样做的问题是,如果某些上游项目更改了 API,那么您的项目将莫名其妙地中断。这是 vendor 进来的地方。

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

go install 更新你的 $gopath 依赖到最新版本;所有新项目和没有 vendor 的项目都将使用的版本。

govendor install +vendor,^program 更新您的特定项目 vendor 依赖项。这应该在单独的提交中完成;你应该 去测试;总督;提交; go test 以便您可以检查更新是否破坏了您的项目。

govendor install +local 显然只是构建项目。

此外,恕我直言,您应该使用 godep 而不是 govendor。它 IHMO 有更好的工作流程;你的 $gopath 有最新版本,然后你可以用 godep update 更新你的项目。它也应该是 golang 1.10 中的标准。

关于go - `go install` 、 `govendor install +local` 和 `govendor install +vendor,^program` 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45008976/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com