go build 安装依赖的版本问题。

2019-06-25 14:17:31 +08:00
 304464743

我用的是 vgo 来管理依赖,我自己写的一个公共库放在了码云上。 开始几天 go build 的时候,go.mod 生产出来是最新的版本,每次有新版本我就删掉 go.mod 里面那个库,再次 build 会出来最新版本,突然某一天开始,每次 build 就一直是一个旧版本,不会自动更新到最新版本,然后我把代码复制到一台 linux 机器上,新装了 go 环境,也是一样。请问应该如何解决?

3781 次点击
所在节点    Go 编程语言
5 条回复
fuckshit
2019-06-25 18:36:25 +08:00
`go mod tidy` 了解下。
感觉 go mod 你用的不是很熟呀。 可以看下这篇文章:mlog.club/topic/9
304464743
2019-06-28 14:33:03 +08:00
@fuckshit 试过啦。我试过好多方法,go mod init,tidy,删掉$GOPATH 的缓存或者整个目录(src,pkg,mod),甚至是删仓库,仓库打 tag,删 tag 都不行,还有 go get 库 @latest 都不行,找一台新的 linux go build 或者 init,tidy 都不行。唯一可行的办法就是单独 go get 库 @master 或者 go get@指定版本 才有用。。。。。。。。。。。。
reus
2019-07-01 17:13:48 +08:00
为什么你要删除 go.mod?

用 go get -u 就能升级到最新的版本
304464743
2019-07-02 10:01:34 +08:00
@reus 因为正常情况下,删除 go.mod 里的某一个库或者,go.mod 文件,go build 的时候能自动更新到最新的版本的库。我知道 go get -u 也能升级到正常版本,但是我比较习惯,删除 go.mod 里的那个库,然后 go build。 但是这两个方法我都试过,都不行。
reus
2019-07-02 14:18:39 +08:00
@304464743 你这个“正常情况”很可能只是偶然,被你当作必然了。不是说“最新”才是正常,本来版本选取的原则就是“最小版本”。可能你依赖的其他模块的 go.mod 里已经写了某个版本,那你的模块里的 go.mod 里没有那条,就直接用了依赖的模块的版本,而不是重新获取版本。
go.mod 是不应该删除的,要升级就用 go get -u xxx。这是可以保证以后也能正常工作的,而不是依赖“删除之后就自动更新到最新”这种偶然现象

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/577258

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX