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

go 这种仓库模式,真的好吗?

  •  
  •   Buffer2Disk · 2019-07-17 22:33:12 +08:00 · 5791 次点击
    这是一个创建于 1956 天前的主题,其中的信息可能已经有所发展或是发生改变。

    虽然启用了 go mod,但是不像 Java 那样有一个非常强大的中央仓库 maven,版本迭代和可靠性都是有保障的

    go 虽然可以从 github 上虽然可以直接拉包下来,但是因为有的作者没打 tag,拉取的版本号显示的非常奇怪

    而且如果哪天某个 lib 的作者一不高兴删了自己的仓库,那要部署代码的时候,就两眼懵逼了

    20 条回复    2019-07-29 11:57:27 +08:00
    ysn2233
        1
    ysn2233  
       2019-07-18 00:35:52 +08:00 via iPad
    当然不好,从没见人说 go 的包管理好话
    yegle
        2
    yegle  
       2019-07-18 02:02:40 +08:00
    你看国内互联网大公司谁没有自建 maven 仓库?为什么?
    fcten
        3
    fcten  
       2019-07-18 09:21:56 +08:00
    如果是企业级项目一般不会依赖 github
    VDimos
        4
    VDimos  
       2019-07-18 09:25:28 +08:00 via Android
    你去看看 gopath 在 issue 上骂得多凶
    lihongjie0209
        5
    lihongjie0209  
       2019-07-18 10:20:49 +08:00
    @yegle
    1. 作为 maven 主库的缓存代理, 由于网络原因, maven 主库下载速度比较慢
    2. 作为本地私有仓库, 公司的代码原则上不允许推到公共仓库. 就像有 GitHub 也要自建 gitlab 一样

    上述原因没有一个是因为 maven 这种包管理方式有问题
    janxin
        6
    janxin  
       2019-07-18 10:29:53 +08:00
    中央仓库就不会删除包了吗?隔壁 NPM 的教训忘记了吗?

    为什么有 go mod 还会有这种烦恼?其实一样可以自建中央仓库的呀
    jingxyy
        7
    jingxyy  
       2019-07-18 10:35:38 +08:00
    tag 都没有 搞不好哪天就没了的库你敢用么
    ralph79
        8
    ralph79  
       2019-07-18 10:49:54 +08:00
    没有绝对的好不好。
    u823tg
        9
    u823tg  
       2019-07-18 11:30:52 +08:00
    go1.13 会默认 go proxy https://proxy.golang.org/
    eslizn
        10
    eslizn  
       2019-07-18 13:45:30 +08:00
    你说的删除的问题,只要存过代码,可以起个新的 repo 后 go mod replace 解决
    zichen
        11
    zichen  
       2019-07-18 14:07:37 +08:00
    @jingxyy 这个在前期技术调研的时候其实就可以避免,靠谱点的公司都不会用野鸡第三方项目的。
    guokeke
        12
    guokeke  
       2019-07-18 17:10:35 +08:00
    可以先 fork 下。
    tyrantZhao
        13
    tyrantZhao  
       2019-07-18 17:55:34 +08:00
    go 的包管理一塌糊涂
    liulaomo
        14
    liulaomo  
       2019-07-18 22:16:07 +08:00
    还好,和集中式仓库模式相比各有所长
    layxy
        15
    layxy  
       2019-07-23 08:58:39 +08:00
    企业项目会将依赖放入自己的 pkg 里吧,不会直接引用 github 等外部包,除了 go 官方包
    reus
        16
    reus  
       2019-07-23 13:28:31 +08:00
    删就删啊,只要你用过一次,你本机上就存了的,你可以另外开一个,传上去,然后在 go.mod 里写一行 replace

    广泛使用的代码,肯定每个使用者机器上都存了的,想彻底删除,是不可能的,何必担心删库

    另外还有代理,代理也会缓存代码,删库也未必影响

    maven 叫“中央仓库”,那 github 为什么就不能叫“中央仓库”?

    你可以 vendor,可以 fork,可以自建 git 服务,可以自建代理缓存,方式有很多。不要认为就只有一种模式。
    abcbuzhiming
        17
    abcbuzhiming  
       2019-07-29 11:00:36 +08:00
    @janxin NPM 那种管理一片混乱的所谓中央仓库是不能作数的
    abcbuzhiming
        18
    abcbuzhiming  
       2019-07-29 11:02:18 +08:00
    @reus 中央仓库存在的意义是信任和稳定,如果连这都不需要那你的确不需要中央仓库,但是中央仓库的存在为大量的人节约了时间和精力。不是每个人都愿意像你这样折腾的
    reus
        19
    reus  
       2019-07-29 11:20:28 +08:00
    @abcbuzhiming 分布式仓库就没有信任和稳定了? maven 就不会倒闭? npm 还被投过毒,中央仓库就一定稳定和值得信任,我认为是假命题。github 也没有浪费谁的时间精力吧?我用 github 做仓库也没有啥折腾的。

    go 的仓库模式,就等于 git、hg 等版本管理工具的模式,你不习惯可以不用,但我们用得好好的。
    janxin
        20
    janxin  
       2019-07-29 11:57:27 +08:00 via iPhone
    @abcbuzhiming 中央仓库的信任问题怎么解决?上传了恶意包怎么办? npm 会出现的问题 maven 怎么保证不出现的?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2916 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 12:17 · PVG 20:17 · LAX 04:17 · JFK 07:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.