go mod 整理错误信息:"but go 1.16 would select"
go mod tidy error message: "but go 1.16 would select"
当我运行go mod tidy
几个包显示错误
> go mod tidy
github.com/myrepo/myproj imports
go.k6.io/k6 imports
go.k6.io/k6/cmd imports
github.com/fatih/color loaded from github.com/fatih/color@v1.12.0,
but go 1.16 would select v1.13.0
To upgrade to the versions selected by go 1.16:
go mod tidy -go=1.16 && go mod tidy -go=1.17
If reproducibility with go 1.16 is not needed:
go mod tidy -compat=1.17
For other options, see:
https://golang.org/doc/modules/pruning
我已经安装了 go 1.17.9。错误的含义是什么,为什么会被触发?
此错误与 Go 1.17 中引入的 module graph pruning 有关。
在 Go 1.16 中,用于最小版本选择的模块图过去包括完整的模块图,而在 1.17 中,该图仅包括传递依赖(除了一些例外,请参见上面的 link)。
现在要了解触发错误的原因,您可能需要查看 Go 1.17 release notes:
By default, go mod tidy
verifies that the selected versions of dependencies relevant to the main module are the same versions that would be used by the prior Go release (Go 1.16 for a module that specifies go 1.17) [...]
因此,当您 运行 go mod tidy
时,它会报告 Go 1.16“将 select”一个传递依赖项 (github.com/fatih/color
) 的版本不同于Go 1.17 的 p运行ed 图会。
这与构建可重复性相关,因为 go.sum
包含 go.mod
和前一个 中指定的当前 Go 版本的校验和。在 Go 1.17 和 Go 1.16 的情况下,模块图实际上可以更改,go.sum
将不一致。
错误消息建议两个修复。
go mod tidy -go=1.16 && go mod tidy -go=1.17
— 这个 select 是 Go 1.16 的依赖版本,然后是 Go 1.17
go mod tidy -compat=1.17
— 这只是删除了 Go 1.16 校验和(因此提示“不需要 go 1.16 的再现性”)。
升级到 Go 1.18 后,错误应该不会再出现,因为模块图将像在 Go 1.17 中一样加载。
当我运行go mod tidy
几个包显示错误
> go mod tidy
github.com/myrepo/myproj imports
go.k6.io/k6 imports
go.k6.io/k6/cmd imports
github.com/fatih/color loaded from github.com/fatih/color@v1.12.0,
but go 1.16 would select v1.13.0
To upgrade to the versions selected by go 1.16:
go mod tidy -go=1.16 && go mod tidy -go=1.17
If reproducibility with go 1.16 is not needed:
go mod tidy -compat=1.17
For other options, see:
https://golang.org/doc/modules/pruning
我已经安装了 go 1.17.9。错误的含义是什么,为什么会被触发?
此错误与 Go 1.17 中引入的 module graph pruning 有关。
在 Go 1.16 中,用于最小版本选择的模块图过去包括完整的模块图,而在 1.17 中,该图仅包括传递依赖(除了一些例外,请参见上面的 link)。
现在要了解触发错误的原因,您可能需要查看 Go 1.17 release notes:
By default,
go mod tidy
verifies that the selected versions of dependencies relevant to the main module are the same versions that would be used by the prior Go release (Go 1.16 for a module that specifies go 1.17) [...]
因此,当您 运行 go mod tidy
时,它会报告 Go 1.16“将 select”一个传递依赖项 (github.com/fatih/color
) 的版本不同于Go 1.17 的 p运行ed 图会。
这与构建可重复性相关,因为 go.sum
包含 go.mod
和前一个 中指定的当前 Go 版本的校验和。在 Go 1.17 和 Go 1.16 的情况下,模块图实际上可以更改,go.sum
将不一致。
错误消息建议两个修复。
go mod tidy -go=1.16 && go mod tidy -go=1.17
— 这个 select 是 Go 1.16 的依赖版本,然后是 Go 1.17go mod tidy -compat=1.17
— 这只是删除了 Go 1.16 校验和(因此提示“不需要 go 1.16 的再现性”)。
升级到 Go 1.18 后,错误应该不会再出现,因为模块图将像在 Go 1.17 中一样加载。