转到列表:查询“最新”没有匹配的版本

问题描述

我正在尝试在 opentelemetry-collector-contrib 项目上运行 go list -mod=readonly -m -u -json all 命令。

它失败并出现以下错误

$ go list -mod=readonly -m -u -json all
go list -m: loading module retractions for github.com/DataDog/datadog-agent/pkg/trace/[email protected]: no matching versions for query "latest"
go list -m: loading module retractions for github.com/influxdata/line-protocol/[email protected]: no matching versions for query "latest"
$ echo $?
1

我使用的是 go 1.16.5:

$ go version
go version go1.16.5 linux/amd64

我已经用 go clean -modcache 清理了 go 缓存,结果相同。

我找到了两个模块 https://pkg.go.dev/

似乎 github.com/DataDog/datadog-agent/pkg/trace/exportable 的确切版本存在,但 github.com/influxdata/line-protocol 的版本不存在,但无论如何都报告相同的错误

我不知道 golang 在这里期望什么以及如何开始对问题进行故障排除。

有人可以帮忙吗?

解决方法

由于在 Go 1.16 的 retract 中引入了 go.mod 指令,这似乎是一个错误 (https://github.com/golang/go/issues/45305)。事实上,如果您省略 -m 标志,该命令运行良好。

如问题线程中所述,您可以添加 -e 标志以在出现错误的情况下继续:

$ go list -mod=readonly -m -u -e -json all

{
    "Path": "github.com/open-telemetry/opentelemetry-collector-contrib","Main": true,"Dir": "/Users/me/go/opentelemetry-collector-contrib","GoMod": "/Users/me/go/opentelemetry-collector-contrib/go.mod","GoVersion": "1.16"
}
... much more

关于 -e 标志,go help list

-e 标志改变了错误包的处理方式,那些错误包 无法找到或格式错误。 [...] 使用 -e 标志,list 命令永远不会将错误打印到标准 错误,而是用通常的方式处理错误的包 印刷。错误的包将有一个非空的 ImportPath 和 一个非零的 Error 字段;其他信息可能会或可能不会丢失 (归零)。

它应该在 Go 1.17 中得到修复,现在仍处于测试版。