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

go 如果有更好的包管理就好了

  •  
  •   aszxqw ·
    yanyiwu · 2014-12-26 22:18:13 +08:00 · 2246 次点击
    这是一个创建于 3401 天前的主题,其中的信息可能已经有所发展或是发生改变。

    还是包管理的问题, Python 有 pip 和 easy_install , Ruby 有 gem, Node.js 有 npm, golang 真的需要更好的包管理。 go get 还是太原始,比如 npm 和 gem 都可以帮你管理库的编译, 比如用 C/C++ 写扩展库的时候, 编译过程是 npm 和 gem 来操心的, 用户根本不需要知道这个库是怎么编译出来的。 而 go get 无法做到这些

    32 条回复    2015-02-10 09:41:25 +08:00
    nicai000
        1
    nicai000  
       2014-12-26 22:21:46 +08:00
    确实, 不过你这里把Python的包管理当做正面典型? 不是吧...
    9hills
        2
    9hills  
       2014-12-26 22:28:03 +08:00   ❤️ 1
    Python的包管理绝对不是正面典型。。

    pip install lxml,sorry你得先从你的发行版中安装 libxml2,妹的
    aszxqw
        3
    aszxqw  
    OP
       2014-12-26 22:30:22 +08:00
    @9hills 好吧,错夸python了。
    nbndco
        4
    nbndco  
       2014-12-26 22:40:00 +08:00 via iPhone
    Python的包管理是反面典型,而且我至今不能理解的是为什么python阵营天天把自己吹到天上去至今却没人写的出一个包管理器
    aszxqw
        5
    aszxqw  
    OP
       2014-12-26 22:46:47 +08:00
    @nbndco 个人觉得最好的包管理是 npm ,没有之一。
    binux
        6
    binux  
       2014-12-26 22:51:35 +08:00   ❤️ 2
    @9hills 于是我想看看 npm 是怎么解决 libxml 的,于是 `npm install libxml` 然后:
    http://stackoverflow.com/questions/10651822/node-js-libxml-can-not-install

    呵呵,半斤八两
    aaaa007cn
        7
    aaaa007cn  
       2014-12-26 22:51:41 +08:00   ❤️ 1
    @nbndco 然后 node-gyp 依赖 python2(咦?
    aaaa007cn
        8
    aaaa007cn  
       2014-12-26 22:52:57 +08:00
    @ 错人了=o=
    aszxqw
        9
    aszxqw  
    OP
       2014-12-26 22:56:52 +08:00
    @binux 尴尬了。。。
    skybr
        10
    skybr  
       2014-12-26 22:59:21 +08:00
    没libxml2的类库及头文件用gem装nokogiri一样会挂。

    除非在协议允许的前提下包含类库的包, 不然这个无解的。
    nbndco
        11
    nbndco  
       2014-12-26 23:00:22 +08:00 via iPhone   ❤️ 1
    @binux 他提出的这个缺点莫名其妙,语言包管理不是用来解决系统的依赖的……
    dworld
        12
    dworld  
       2014-12-26 23:08:36 +08:00
    gom感觉用着不错
    hyzjshwo
        13
    hyzjshwo  
       2014-12-26 23:11:01 +08:00
    gem 也不是万金油,比如 mysql2,nokogiri 这样的也需要先安装依赖。
    icylogic
        14
    icylogic  
       2014-12-26 23:18:04 +08:00
    cargo.
    现在在项目的 Cargo.toml 里指定 dependencies, 直接 cargo run 就可以了, 会自己下载 git 目录然后编译, 然后再编译本地项目
    skybr
        15
    skybr  
       2014-12-26 23:22:36 +08:00
    @icylogic 这个是Rust的吧...
    icylogic
        16
    icylogic  
       2014-12-26 23:24:13 +08:00
    @skybr 是的亚.
    9hills
        17
    9hills  
       2014-12-26 23:38:11 +08:00 via iPhone
    @binux Python包管理cuo又不代表npm和gem强……
    9hills
        18
    9hills  
       2014-12-26 23:40:44 +08:00 via iPhone
    @nbndco 有很好的解决方案,我记得是有一个包管理,安装的时候能自动生成系统所需要安装的库的命令,apt或者yum。新手直接复制粘贴很方便
    xxxcat
        19
    xxxcat  
       2014-12-27 00:38:32 +08:00
    啥?我怎么觉得Go的包管理比npm、gem、pip之流好呢,很是简单实用,npm不知道为啥经常会搞坏一些包
    Bluek404
        20
    Bluek404  
       2014-12-27 03:31:26 +08:00 via Android
    感觉go包管理的问题就是fork后用户名的修改和版本控制了(虽然有gopkg.in)
    cnbuff410
        21
    cnbuff410  
       2014-12-27 08:28:58 +08:00
    Go的包管理不是问题,version管理才是问题。Go get是个人觉得用着最简单舒服的包管理工具。但版本管理弱爆了
    lidashuang
        22
    lidashuang  
       2014-12-27 09:32:12 +08:00
    @cnbuff410 go get 没有版本管理 ,go get 算不上包管理工具
    xxxcat
        23
    xxxcat  
       2014-12-27 13:13:52 +08:00
    @lidashuang Go包如此简单明了,根本不需要多么强大的管理工具吧,至于版本方面也有一些解决方案,不过似乎还没有占主流的,这是个问题
    lidashuang
        24
    lidashuang  
       2014-12-27 13:24:18 +08:00
    @xxxcat 包管理和go简单明子没有关系吧,go的包管理方案是挺多的,但是没好用的
    wgwang
        25
    wgwang  
       2014-12-27 15:12:58 +08:00
    pip+venv 在python3.4之后感觉挺好的。
    npm倒经常各种问题,不过可能不是npm的问题,是node自身的问题。
    xxxcat
        26
    xxxcat  
       2014-12-27 15:43:40 +08:00
    @lidashuang 怎么没关系呢?简单就意味包管理不用做复杂,无需高射炮打蚊子。版本方面与其说没有好的管理器,还不如说社区还没有在解决方案上达成一致
    mathgl
        27
    mathgl  
       2014-12-27 17:36:33 +08:00
    lxml 如果是build from sources 只会更麻烦。。。
    jsq2627
        28
    jsq2627  
       2014-12-28 15:56:59 +08:00
    NathanInMac
        29
    NathanInMac  
       2014-12-30 07:19:06 +08:00
    @cnbuff410 完全同意,能在import里面指定tag/version/commit/branch就好了
    liangdi
        30
    liangdi  
       2015-01-08 14:39:19 +08:00
    NathanInMac
        31
    NathanInMac  
       2015-01-14 08:07:13 +08:00
    lidashuang
        32
    lidashuang  
       2015-02-10 09:41:25 +08:00
    @liangdi 这个不错
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2826 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 11:55 · PVG 19:55 · LAX 04:55 · JFK 07:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.