你使用的Go版本是什么( go version
)?
go version go1.11.4 darwin/amd64
这个问题在最新版本中是否重现?
是的,它确实重现了
你正在使用什么操作系统和处理器架构( go env
)?
go env
输出
GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/U/Library/Caches/go-build"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/U/Work/go"
GOPROXY=""
GORACE=""
GOROOT="/usr/local/go"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
GCCGO="gccgo"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD="/Users/U/Work/TestProj/go.mod"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/rm/sngdtnn11x3b_zp_zzyw6jl40000gn/T/go-build528112071=/tmp/go-build -gno-record-gcc-switches -fno-common"
你做了什么?
$go get github.com/miekg/dns/idn@cdb76b64a347436f019bf96ab5eb2d74e73e964b
go: finding github.com/miekg/dns/idn cdb76b64a347436f019bf96ab5eb2d74e73e964b
$grep dns go.mod
github.com/miekg/dns v0.0.0-20171124081448-cdb76b64a347
$go mod vendor
go: finding github.com/miekg/dns/idn latest
$grep dns go.mod
github.com/miekg/dns v1.1.1
你期望看到什么?
github.com/miekg/dns v0.0.0-20171124081448-cdb76b64a347 vendored
你实际上看到了什么?
github.com/miekg/dns v1.1.1 vendored
6条答案
按热度按时间ma8fv8wu1#
你遗漏了一些信息:有
no dependencies to vendor
。请提供一套我们可以遵循的完整步骤来重现这个问题。可能需求是通过之前缺失在你的
go.mod
文件中的某个其他依赖项传入的。(如果是这样的话,go mod graph
应该能够告诉你它来自哪里。)dsekswqp2#
很遗憾,我无法在最小项目中重现这个问题。
在我的项目中,我可以看到这个问题:
go get github.com/miekg/dns/idn@cdb76b64a347436f019bf96ab5eb2d74e73e964b
文件没有更新(在最小项目中它确实更新了)而
go mod vendor
会在大项目中更新go.mod
文件。希望这能帮到你。
3df52oht3#
go get […]
不会更新vendor/modules.txt
文件go get
本身并不打算更新vendor
。(这个功能请求是 #29058 。)k4aesqcs4#
go mod vendor
更新了大项目上的go.mod
文件这似乎证实了假设,即存在一些传递依赖关系,强制要求更高的最低版本。
在更大的仓库中,尝试按顺序执行以下操作:
go get github.com/miekg/dns/idn@cdb76b64a347436f019bf96ab5eb2d74e73e964b
go mod graph | grep github.com/miekg/dns
go mod tidy
go list -m github.com/miekg/dns
go mod graph | grep github.com/miekg/dns
go mod vendor
go list -m github.com/miekg/dns
如果版本是通过无法降级的传递依赖关系,那么该依赖关系将不会在步骤(2)中列出,版本将在步骤(4)中再次回升,并在此后保持稳定。
yi0zb3m45#
是的,这是我遇到问题的原因:https://github.com/influxdata/platform/blob/master/go.mod#L99。非常感谢您的帮助。
您认为在这种情况下添加警告信息是否有用?
go get
本身并不打算更新vendor
,但它确实会使用最小项目更新vendor/modules.txt
。2exbekwf6#
你认为在这种情况下,是否有用警告信息?
我不确定,但这肯定值得考虑。我会相应地重命名这个问题。