【问题标题】:Using -mod flag in go CLI在 go CLI 中使用 -mod 标志
【发布时间】:2021-03-04 17:16:52
【问题描述】:

我正在阅读 godoc,了解如何使我的依赖项保持最新:https://golang.org/ref/mod#build-commands

它说-mod=mod 标志可用于自动更新 go.mod 文件。但我无法使用它。

这是我尝试过的命令:

% go get -mod=mod ./..                                 
flag provided but not defined: -mod
usage: go get [-d] [-t] [-u] [-v] [-insecure] [build flags] [packages]
Run 'go help get' for details.

我显然错过了一些东西,因为我似乎无法让标志工作。

【问题讨论】:

  • 您能告诉我们您使用的是哪个go 版本吗?
  • @shmsr 我使用的是 1.15

标签: go


【解决方案1】:

编辑:这是一个文档错误

经过一些实验,看起来只有相当老的 Go 版本才能理解 go get -mod=,尤其是 1.11 版本。所以文档已经过时了,你可以举报。

在 Go 版本 1.14 或更高版本上官方推荐:自动更新现有的 go.mod 文件并下载依赖项,而不是执行 go get -mod=mod .,只需运行:

go get -d .

为了使示例完整,您现在可以实际构建所有内容并将二进制文件放入$GOBIN(或$GOPATH/bin):

go install

如果仍然无法正常工作,请检查以下几点:

go更新到最新版本

您阅读的在线文档始终是最新的官方版本,而您可能使用的是旧版本。检查您的版本:

go version

以目前的 Go 开发速度,大多数人都在尝试尽快更新。关注https://golang.org/doc/install

旧版本的文档

显然,没有简单的方法可以在线阅读旧文档。相反,我使用godoc 工具在本地进行:

go get -v  golang.org/x/tools/cmd/godoc
godoc -http=127.0.0.1:6060

让上述命令running,然后在浏览器中转到http://127.0.0.1:6060/cmd/go/

通过这种方式,我检查了例如旧文档对-mod 标志的说法。

【讨论】:

  • 她正在谈论更新依赖项,但您的答案还差得很远。
  • @shmsr OP 想要使用新的-mod,并收到错误flag provided but not defined: -mod。我假设他们想使用-mod 并且不要质疑原因。没有足够的数据简单地告诉他们不应该这样做。在我看来,如何处理这个问题的建议完全是 OP 的主题,但更重要的是,也适用于通过搜索引擎到达这里的任何人。
  • @shmsr 为 go1.16 更新,看起来像是文档错误。
  • 是的,昨天提出了这个问题。这里:github.com/golang/go/issues/44760
  • @kubanczyk 感谢您的详细回答。我观察到使用 go get -d 会将依赖项升级到最新版本而不是最新的稳定版本。有没有办法只升级稳​​定版?谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-25
  • 1970-01-01
  • 2015-11-05
  • 1970-01-01
  • 2019-04-21
  • 1970-01-01
相关资源
最近更新 更多