go 如果有更好的包管理就好了 - V2EX
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 2908 次点击
    这是一个创建于 3951 天前的主题,其中的信息可能已经有所发展或是发生改变。

    还是包管理的问题, 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` 然后:
    < target="_blank" href="http://stackoverflow.com/questions/10651822/node-js-libxml-can-not-install" rel="nofollow noopener">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是个人觉得用着最简单舒服的包管理工具。但版本管理弱爆了
    G2bN4dbX9J3ncp0r
        22
    G2bN4dbX9J3ncp0r  
       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包如此简单明了,根本不需要多么强大的管理工具吧,至于版本方面也有一些解决方案,不过似乎还没有占主流的,这是个问题
    G2bN4dbX9J3ncp0r
        24
    G2bN4dbX9J3ncp0r  
       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
    G2bN4dbX9J3ncp0r
        32
    G2bN4dbX9J3ncp0r  
       2015-02-10 09:41:25 +08:00
    @liangdi 这个不错
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5383 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 05:55 PVG 13:55 LAX 22:55 JFK 01:55
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86