【问题标题】:go get fails for hashicorp/levant去获取 hashcorp/levant 失败
【发布时间】:2020-08-21 23:59:28
【问题描述】:

我继承了一个构建 docker 镜像并使用 hashicorp/levant 库进行部署的构建脚本。大约一年来,我们一直在运行 go get github.com/jrasell/levant 来获取 levant 库。在过去的几天里,repo URL 被合并到 Hashicorp 的组织下,我们将脚本更改为使用 go get github.com/hashicorp/levant 拉取。但无论哪种方式,我们都会得到这个多重分配错误。这是什么意思,'go' 不只是基本上拉 git repo 吗?

../go/src/github.com/hashicorp/levant/template/render.go:28:11: cannot assign 
*"github.com/hashicorp/nomad/vendor/github.com/hashicorp/nomad/api".Job to job 
(type *"github.com/hashicorp/nomad/api".Job) in multiple assignment

【问题讨论】:

    标签: go go-get


    【解决方案1】:

    首先,go get 适用于包,而不是存储库。

    除了拉取它们go get 还编译和安装它们,这就是你的错误弹出的时间。

    更多信息在这里:

    https://nanxiao.gitbooks.io/golang-101-hacks/content/posts/go-get-command.html

    【讨论】:

      【解决方案2】:

      我建议你使用 Go modules

      hashicorp/levant 确实有 go.{mod,sum} 文件,因此您应该忘记使用 go get 方式。

      最好做一个克隆并遵循 go 模块的方式,即,

      git clone git@github.com:hashicorp/levant.git
      go test ./...
      go build ./...
      

      这些步骤不仅可以克隆你的 repo,还可以带来构建/测试包所需的依赖包。

      注意:您应该有 Go v1.11+

      【讨论】:

      • 谢谢...但是使用这种方法 levant/commands.go:7:2: cannot find package "github.com/hashicorp/levant/command" in any来自:/opt/hostedtoolcache/go/1.14.7/x64/src/github.com/hashicorp/levant/command(来自 $GOROOT)/home/runner/go/src/github.com/hashicorp/levant/command(从 $GOPATH) levant/commands.go:8:2: 在以下任何一个中找不到包“github.com/hashicorp/levant/version”:/opt/hostedtoolcache/go/1.14.7/x64/src/github.com /hashicorp/levant/version(来自 $GOROOT)/home/runner/go/src/github.com/hashicorp/levant/version(来自 $GOPATH)
      • 你实际上是在哪里克隆这个?要么在GOPATH 之外进行,或者如果你在GOPATH 内克隆它,请确保具有类似于:$GOPATH/src/github.com/hashicorp/levant 的结构,然后尝试go build ./...
      猜你喜欢
      • 1970-01-01
      • 2019-07-23
      • 1970-01-01
      • 2021-11-17
      • 2012-08-08
      • 2022-06-14
      • 1970-01-01
      • 1970-01-01
      • 2021-09-14
      相关资源
      最近更新 更多