从最新位置安装 tour
二进制文件的合理方法是使用 go install
:
go install golang.org/x/website/tour@latest
然而,这样做目前会得到一个稍微旧一点的版本,在 x/website/tour 嵌套模块被合并到 x/website 模块之前。
$ go install golang.org/x/website/tour@latest
go: downloading golang.org/x/website v0.0.0-20210715154925-11adafea15f8
go: downloading golang.org/x/website/tour v0.0.0-20210616181959-e0d934b43647
$ go version -m $(which tour) | head -n 3
/Users/dmitshur/go/bin/tour: go1.16.6
path golang.org/x/website/tour
mod golang.org/x/website/tour v0.0.0-20210616181959-e0d934b43647 h1:IFK+1/z6bm51XIJD3ksijCgwsZXJJxliWFiIYVEG6F8=
请注意,模块路径是 golang.org/x/website/tour
,版本是一个月前的 v0.0.0-20210616181959-e0d934b43647
,而不是 master
分支上的最新提交:
$ go install golang.org/x/website/tour@HEAD
$ go version -m $(which tour) | head -n 3
/Users/dmitshur/go/bin/tour: go1.16.6
path golang.org/x/website/tour
mod golang.org/x/website v0.0.0-20210715154925-11adafea15f8 h1:xRFLa1Fo4NnOCH0yKaPu6H36MmmA/GJEZyTEO+HOWlI=
解决方法是指定 @HEAD
或者想要的 tour 的确切版本。
3条答案
按热度按时间bvhaajcl1#
嗯,这似乎在GOPROXY=direct模式下不会发生,所以可能是模块镜像在起作用。我稍后会再检查一下。
9bfwbjaz2#
我理解为什么会出现这种情况,并确认go命令和模块镜像都按预期工作。具体来说,https://golang.org/ref/mod#resolve-pkg-mod 指定了以下内容:
如果一个或多个模块包含请求的包,则使用路径最长的模块。
当使用模块镜像时,可以找到x/website和x/website/tour模块的最新版本,两者都包含
tour
包,但选择具有较长模块路径的x/website/tour(尽管较旧)。我怀疑我们需要发布一个更新版本的x/website/tour模块,该模块撤回其过去的版本并/或删除
tour
包来解决这个问题。lxkprmvk3#
#39007 与它密切相关。