登录
首页 >  Golang >  Go问答

没有获得最新的标签时执行"go run"

来源:stackoverflow

时间:2024-03-23 23:09:33 239浏览 收藏

在使用 `go run` 命令获取 `gqlgen` 工具时,尽管期望获取最新标签,但用户却意外地获得了不存在于存储库中的标签 `v0.9.1-dev`。原因是 `go run` 无法运行特定版本的二进制文件。

问题内容

我正在 go 中使用 graphql,并尝试使用熟悉的 go run 命令获取 gqlgen 工具。

我期望它检索最新的可用标签,但我却以某种方式得到了一个似乎根本不存在于存储库中的标签:

$ go run github.com/99designs/gqlgen version
v0.9.1-dev

我希望以上内容按照最新标签返回

v0.13.0

我的工作站上安装了 go 版本:

$ go version
go version go1.15.5 darwin/amd64

有人知道发生了什么事吗?

更新:禁用 goproxy 没有帮助

update2:事实证明,版本被硬编码到 version.go 中,正如您在此处看到的那样,但即使 go run 获取主版本而不是最新标签,您仍然期望输出根据 master 分支为 0.13.0-dev 相反,我怀疑标签版本有一些字符串排序,这些标签的 0.9.* 高于 0.1*.*


解决方案


go run 目前不支持运行特定版本的二进制文件,但请注意,有一个 accepted Go proposal 可在 go 命令的未来版本中添加该功能。

从 go 1.16 开始,您可以改为 go 安装特定版本的二进制文件,然后从其安装位置运行该二进制文件($(go env gobin)$(go env gopath)/bin) .

$ GOBIN=~/bin go install github.com/99designs/gqlgen@latest
$ ~/bin/gqlgen ...

我认为版本命令在构建时配置错误,并且 v0.9.1-dev 不是构建时的标签。

本篇关于《没有获得最新的标签时执行"go run"》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>