The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
304464743

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

  •  
  •   304464743 · Jun 25, 2019 · 4574 views
    This topic created in 2523 days ago, the information mentioned may be changed or developed.

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

    5 replies    2019-07-02 14:18:39 +08:00
    fuckshit
        1
    fuckshit  
       Jun 25, 2019
    `go mod tidy` 了解下。
    感觉 go mod 你用的不是很熟呀。 可以看下这篇文章:mlog.club/topic/9
    304464743
        2
    304464743  
    OP
       Jun 28, 2019
    @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
        3
    reus  
       Jul 1, 2019
    为什么你要删除 go.mod?

    用 go get -u 就能升级到最新的版本
    304464743
        4
    304464743  
    OP
       Jul 2, 2019
    @reus 因为正常情况下,删除 go.mod 里的某一个库或者,go.mod 文件,go build 的时候能自动更新到最新的版本的库。我知道 go get -u 也能升级到正常版本,但是我比较习惯,删除 go.mod 里的那个库,然后 go build。 但是这两个方法我都试过,都不行。
    reus
        5
    reus  
       Jul 2, 2019
    @304464743 你这个“正常情况”很可能只是偶然,被你当作必然了。不是说“最新”才是正常,本来版本选取的原则就是“最小版本”。可能你依赖的其他模块的 go.mod 里已经写了某个版本,那你的模块里的 go.mod 里没有那条,就直接用了依赖的模块的版本,而不是重新获取版本。
    go.mod 是不应该删除的,要升级就用 go get -u xxx。这是可以保证以后也能正常工作的,而不是依赖“删除之后就自动更新到最新”这种偶然现象
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2761 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 01:29 · PVG 09:29 · LAX 18:29 · JFK 21:29
    ♥ Do have faith in what you're doing.