cmd/go: 建议使用go mod下载,但不起作用,

vyu0f0g1  于 4个月前  发布在  Go
关注(0)|答案(5)|浏览(40)

我刚才在升级x/tools中的x/mod后遇到了这个问题,从x/tools/gopls模块运行测试时出现了错误:

[gopls]> go test ./internal/regtest/workspace
go: golang.org/x/tools@v0.1.7 requires
        golang.org/x/mod@v0.6.0-dev.0.20220106191415-9b9b3d81d5e3: missing go.sum entry; to add it:
        go mod download golang.org/x/mod
[gopls]> go mod download golang.org/x/mod
[gopls]> go test ./internal/regtest/workspace
go: golang.org/x/tools@v0.1.7 requires
        golang.org/x/mod@v0.6.0-dev.0.20220106191415-9b9b3d81d5e3: missing go.sum entry; to add it:
        go mod download golang.org/x/mod

错误信息建议go mod download可以修复缺失的go.sum条目,但这不起作用。我不得不执行go mod tidy
这个建议能否更准确一些?
这个问题看起来与#46528相似,但不完全相同。如果有其他重复的问题,请道歉。
CC @bcmills@matloob

szqfcxe2

szqfcxe21#

我猜这是在尖端使用了go(接近1.18)?

pxy2qtax

pxy2qtax2#

假设这是在接近1.18的时刻使用的$go at tip$。

是的:$x_1m_0n_1x$

68bkxrlz

68bkxrlz3#

复制:

~/x/tools$ go version
go version devel go1.18-c8b0dcea4a Wed Jan 26 20:51:54 2022 +0000 linux/amd64

~/x/tools$ git status
On branch issue50934-mod-download
nothing to commit, working tree clean

~/x/tools$ git rev-parse HEAD
461d130035e971840054f875ee8e9da69440af8f

~/x/tools$ go get -d golang.org/x/mod@master
go: upgraded golang.org/x/mod v0.5.1 => v0.6.0-dev.0.20220106191415-9b9b3d81d5e3

~/x/tools$ cd gopls

~/x/tools/gopls$ go test ./internal/regtest/workspace
go: golang.org/x/tools@v0.1.8 requires
        golang.org/x/mod@v0.6.0-dev.0.20220106191415-9b9b3d81d5e3: missing go.sum entry; to add it:
        go mod download golang.org/x/mod

~/x/tools/gopls$ go mod download -json golang.org/x/mod
{
        "Path": "golang.org/x/mod",
        "Version": "v0.5.1",
        "Info": "/usr/local/google/home/bcmills/pkg/mod/cache/download/golang.org/x/mod/@v/v0.5.1.info",
        "GoMod": "/usr/local/google/home/bcmills/pkg/mod/cache/download/golang.org/x/mod/@v/v0.5.1.mod",
        "Zip": "/usr/local/google/home/bcmills/pkg/mod/cache/download/golang.org/x/mod/@v/v0.5.1.zip",
        "Dir": "/usr/local/google/home/bcmills/pkg/mod/golang.org/x/mod@v0.5.1",
        "Sum": "h1:OJxoQ/rynoF0dcCdI7cLPktw/hR2cueqYfjm43oqK38=",
        "GoModSum": "h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro="
}
agyaoht7

agyaoht74#

这是一个关于replacego mod download和懒加载模块之间的边缘情况交互。我认为发生的事情是:

  • 由于golang.org/x/mod的版本在gopls/go.modgo mod download中被明确列出,因此go mod download认为该版本(v0.5.1)是准确的,不会加载完整的模块图。
  • 然而,go test ./internal/regtest/workspace确实加载了x/tools/go.mod,因为它从x/tools加载了一个包,而加载包会触发对模块依赖项的抽查。这个抽查揭示了模块图中的两个错误:一个是图的根节点上的x/mod版本不是选定的版本,另一个是模块图中的一些节点缺少校验和。
  • 由于我们没有成功加载模块依赖项,我们报告了校验和错误而不是不一致版本错误。

这可能需要更多的思考来解决。也许如果我们无法加载模块图,我们应该在报告校验和错误之前报告任何已知的版本不一致问题。

2lpgd968

2lpgd9685#

我今天在franz-go遇到了一个看起来相同的问题。

franz-go % cd examples/bench
bench % go build
go: github.com/twmb/franz-go@v1.5.3 requires
	github.com/klauspost/compress@v1.15.9: missing go.sum entry; to add it:
	go mod download github.com/klauspost/compress
bench % go mod download github.com/klauspost/compress
bench % go build
go: github.com/twmb/franz-go@v1.5.3 requires
	github.com/klauspost/compress@v1.15.9: missing go.sum entry; to add it:
	go mod download github.com/klauspost/compress

运行go mod tidy解决了这个问题,与go.sum的差异如下:

-github.com/klauspost/compress v1.15.6 h1:6D9PcO8QWu0JyaQ2zUMmu16T1T+zjjEpP91guRsvDfY=
-github.com/klauspost/compress v1.15.6/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU=
+github.com/klauspost/compress v1.15.9 h1:wKRjX6JRtDdrE9qwa4b/Cip7ACOshUI4smpCQanqjSY=
+github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU=

如果能解决这个问题就太好了——它非常令人困惑!

相关问题