【问题标题】:Why does go get fail with "invalid version: unknown revision"?为什么 go 会因“无效版本:未知修订版”而失败?
【发布时间】:2021-08-13 02:54:03
【问题描述】:

我发布了一个 Go 模块的更新,将版本升级到 v1.1.0。我创建了一个名为v1.1.0 的标签并将标签推送到 GitHub。

https://github.com/depp/bytesize/releases/tag/v1.1.0

但是,我不能在我的其他项目中使用这个包。我收到一条错误消息,上面写着“无效版本:未知版本 v1.1.0”。我不知道为什么修订是“未知的”,因为它被标记了。

$ go get github.com/depp/bytesize@v1.1.0                    
go: downloading github.com/depp/bytesize v1.1.0
go get github.com/depp/bytesize@v1.1.0: github.com/depp/bytesize@v1.1.0: verifying module: github.com/depp/bytesize@v1.1.0: reading https://sum.golang.org/lookup/github.com/depp/bytesize@v1.1.0: 410 Gone
    server response: not found: github.com/depp/bytesize@v1.1.0: invalid version: unknown revision v1.1.0
[Exit: 1]

【问题讨论】:

  • 导出 GOPRIVATE=github.com/depp
  • 它不是私有模块。

标签: go go-modules go-get


【解决方案1】:

标签在调用go get一次后被推送,导致Go模块代理缓存中毒。

来自https://proxy.golang.org/

请注意,如果有人在推送标签之前请求版本,则镜像缓存可能需要长达 30 分钟才能过期,并且有关该版本的新数据可用。

在缓存过期之前解决此问题的方法是使用GOPRIVATE 环境变量指示go get 绕过缓存直接获取此模块。

来自https://golang.org/cmd/go/

GOPRIVATE、GONOPROXY、GONOSUMDB

glob 模式的逗号分隔列表(在 Go 的 path.Match 的语法中) 应始终直接获取的模块路径前缀 或者不应该与校验和数据库进行比较。

解决方法是:

$ GOPRIVATE=github.com/depp/bytesize go get github.com/depp/bytesize@v1.1.0

请注意,如果您已经在使用 GOPRIVATE,则需要添加模块而不是完全覆盖该值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-11
    • 2020-03-29
    • 1970-01-01
    相关资源
    最近更新 更多