V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
index90
V2EX  ›  Go 编程语言

关于 vgo 和 dep 的讨论

  •  
  •   index90 · 2019-02-13 11:16:52 +08:00 · 4450 次点击
    这是一个创建于 2109 天前的主题,其中的信息可能已经有所发展或是发生改变。

    刚由 PHP 转 Go,Go 的包管理搞得一头雾水。 刚开始用 dep,后来发现 G 家在去年二月份的时候发布了 vgo。 vgo 是亲儿子,而且有些开源项目都开始使用 vgo 了,是不是应该转用 vgo 呢? 现在大家都用什么啊?有哪些坑?推荐哪个?

    第 1 条附言  ·  2019-02-13 12:12:03 +08:00
    感谢大家的回答,还想再问一个问题,Go 如何搭建私有包仓库呢?就像 PHP 的 satis 一样?再次感谢各位
    第 2 条附言  ·  2019-02-13 15:28:18 +08:00
    下午用了一下 go mod,感觉速度比 dep 快,原理也好理解,IDE 的支持也很好。
    最大的好处还是项目可以建在 GOPATH 外,这个就方便很多了。
    毕竟是亲儿子,推荐用。
    第 3 条附言  ·  2019-03-07 18:56:30 +08:00
    用了一段时间 go mod,goland 也集成得很好,用着很爽。
    不过有一个问题,go.mod 里面包版本描述不能用语义化版本号。
    24 条回复    2019-03-07 13:24:32 +08:00
    zhengxiaowai
        1
    zhengxiaowai  
       2019-02-13 11:29:44 +08:00
    初学而已,用哪个都差不多 dep 也是官方的
    neoblackcap
        2
    neoblackcap  
       2019-02-13 11:42:50 +08:00
    因为 Go 程序是静态编译的,所以你最简单的选择就是将所有要用的库放进去你的版本库里面就可以了。vgo, dep 我们都可以理解他们是官方的试验,他们也没有完全想好该怎么做依赖管理。

    PS:两者一定要选一个的话,我选 dep,至少问题少一些,库的支持更好一些。
    silenceshell
        3
    silenceshell  
       2019-02-13 11:50:58 +08:00 via Android   ❤️ 2
    1.11 可以用 go mod 了,唯一官方工具
    Fitz
        4
    Fitz  
       2019-02-13 11:53:46 +08:00
    直接 go mod 吧 从官方博客 https://blog.golang.org/modules2019 看 go mod 将在 1.13 默认开启并废弃 GOPATH
    就一般使用来说 go mod 没什么问题的
    Hellert
        5
    Hellert  
       2019-02-13 11:55:58 +08:00 via Android
    go.mod 是唯一选择,其他都是过去式了。
    index90
        6
    index90  
    OP
       2019-02-13 12:04:07 +08:00
    @neoblackcap 嗯,我也偏向于 dep,有点类似 composer,相对较熟悉
    itfanr
        7
    itfanr  
       2019-02-13 12:07:27 +08:00 via Android
    @silenceshell 同意
    AlphaTr
        8
    AlphaTr  
       2019-02-13 12:14:04 +08:00
    dep 是 vgo (go mod) 之前的包管理,还是存在去关心设置 GOPATH 的问题,go mod 好用些,除非用到 1.11 以下版本,否则无脑推 go mod
    xiaket
        9
    xiaket  
       2019-02-13 12:18:05 +08:00
    go mod 很爽
    frye
        10
    frye  
       2019-02-13 12:34:11 +08:00
    go mod 用完之后就会发现秒杀各种 php 的 composer 啥的包管理
    thet
        11
    thet  
       2019-02-13 12:48:00 +08:00 via Android
    推荐 go mod,已经在生产环境用了,还算比较方便了
    shynome
        12
    shynome  
       2019-02-13 13:26:15 +08:00
    go mod 的 replace 贼好用, 能无缝替换掉一个包
    比如我就把 v2ray-core 替换成了只包含 grpc 调用代码的包
    https://github.com/shynome/v2ray-go-grpc-sdk
    cholerae
        13
    cholerae  
       2019-02-13 13:33:47 +08:00
    为啥要搭建私有包仓库
    index90
        14
    index90  
    OP
       2019-02-13 13:47:16 +08:00
    @cholerae 例如你公司的代码是闭源的,而且是模块化开发,又舍不得购买 github 的企业服务……
    Mitt
        15
    Mitt  
       2019-02-13 13:48:41 +08:00 via iPhone
    @cholerae 这个问题问的很没有水平
    awhane
        16
    awhane  
       2019-02-13 15:23:19 +08:00
    @index90 你这个需求扔到 gitlab 也可以啊。
    其实可以通过 git server 和 nginx 搭建一个 repo,我们 CI+docker 这样跑的贼快。
    index90
        17
    index90  
    OP
       2019-02-13 15:25:58 +08:00
    @awhane 嗯嗯,我们的代码就是放在 gitlab 上的,貌似给 gitlab 配置一个域名就可以了?
    主要是不懂 go get 的原理,有没有资料分享一下?
    ospider
        18
    ospider  
       2019-02-13 15:28:15 +08:00
    1. GOPATH 是官方搞出来的玩意儿,强制所有代码都放到 GOPATH 里面,非常恶心。
    2. 大家都对 GOPATH 不爽,于是开发了不少第三方工具,dep 是第三方开发的,但是之前有 Go 官方站台。
    3. Go 官方团队自己也发现问题了,于是开发了 vgo,并且宣布不要 dep 了。

    大概就是这样。
    prolic
        19
    prolic  
       2019-02-13 15:30:32 +08:00
    go mod(vgo)才是现在及未来的唯一指定官方包管理
    cholerae
        20
    cholerae  
       2019-02-13 17:51:12 +08:00
    @index90 哦,我理解错了,我以为楼主要搞个全部包的镜像
    RubyJack
        21
    RubyJack  
       2019-02-13 18:16:21 +08:00
    go mod,replace 真的好用
    owenliang
        22
    owenliang  
       2019-02-14 10:15:50 +08:00
    到底用啥,我都学不动了。
    psrazil2008
        23
    psrazil2008  
       2019-02-15 23:28:05 +08:00
    1. go mod 需要 1.11 和 1.11 后的版本,在 1.11 之前的建议用 dep,从 dep 到 go mod 是支持迁移的当然 vgo 也行,我们采坑后认为 dep 比 vgo 好用,所有现在线上就保留 go mod 和 dep 两种,应对新旧版本。
    2.关于私服,go mod 有 https://github.com/gomods/athens

    能上 go mod 就用 go mod
    zhd173
        24
    zhd173  
       2019-03-07 13:24:32 +08:00
    我目前用的 dep,但是跟喜欢 go mod。目前不用 vgo 主要是 emacs 相关的包代码补全、import 会有各种各样的小问题。写代码不是很爽,等支持的好点了,就切 go mod
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3993 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 53ms · UTC 05:29 · PVG 13:29 · LAX 21:29 · JFK 00:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.