golang 的版本。org/x/sys@hash in go.mod 已忽略

version of golang.org/x/sys@hash in go.mod ignored

我正在尝试使用 github.com/docker/engine 作为 x/sys/windowsdockmoor, however, there were breaking changes 的依赖项,因此针对 windows 的编译不再有效。

##[error]/home/runner/go/pkg/mod/github.com/docker/engine@v0.0.0-20200204220554-5f6d6f3f2203/pkg/system/filesys_windows.go:111:24:
cannot use uintptr(unsafe.Pointer(&sd[0])) (type uintptr) as type *"golang.org/x/sys/windows".SECURITY_DESCRIPTOR in assignment

我试图设置 golang.org/x/sys 的显式版本,例如

go get -u golang.org/x/sys@acfa387b8d69adbeab4af0736737d42b9f2e8254

我可以看到反映在我的 go.mod 中的版本,但是

GO111MODULE=on GOOS=windows go build ./cmd/dockmoor

导致同样的错误。

我也尝试了不同的修订,比如 14da1ac737ccc89e3a28bf770cbbd260ce7e190b 这是更改的父级,但我总是得到那个错误。

似乎 golang.org/x/sys 的版本被忽略了。

我最后一次尝试:
moby/engine v19.03.6 / v0.0.0-20200204220554-5f6d6f3f2203
go 版本:1.12.16(与 moby/engine v19.03.6 中使用的相同)
golang.org/x/sys v0.0.0-20190602015325-4c4f7f33c9ed(与 moby/engine v19.03.6 中使用的相同)

知道如何解决这个问题吗?

问题是某些依赖项引入了另一个版本的 golang.org/x/sys

解决方案是在 go.mod 的末尾添加一个显式覆盖。就我而言,它看起来像这样

replace golang.org/x/sys => golang.org/x/sys v0.0.0-20190830141801-acfa387b8d69