V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cattyhouse
V2EX  ›  macOS

不小心把 homebrew 搞乱了,于是用 for do done 解决问题了

  •  
  •   cattyhouse · 2015-04-22 17:11:36 +08:00 · 2558 次点击
    这是一个创建于 3302 天前的主题,其中的信息可能已经有所发展或是发生改变。
    一句话:

    for x in `brew list`;do brew install `brew deps $x`;done

    先列出当前安装的app
    然后再用brew deps列出当前安装的app的依赖
    然后再用brew install 安装这些依赖

    for do done 干种事情太方便了。
    第 1 条附言  ·  2015-04-22 17:57:14 +08:00
    @lululau 说用leaves 比list更好一些,我赞同,所以这样

    for x in `brew leaves` ; do brew install `brew deps $x` ; done
    第 2 条附言  ·  2015-04-22 20:59:11 +08:00
    @skywalker 提示了所以再修改一下:

    for x in `brew leaves` ; do echo `brew info $x |grep Required` ; done

    这条命了可以显示当前已经安装的app的必要依赖,输出是这样的:

    Required: pcre ✔



    Required: glib ✔
    Required: openssl ✔, protobuf ✔

    Required: openssl ✔



    Required: libevent ✔



    Required: gdbm ✔, pcre ✔

    于是要安装这些依赖(我就是不小心把其中某些依赖给brew remove了)的方法就是手动输入了

    brew install pcre glib openssl protobuf libevent gdbm
    第 3 条附言  ·  2015-07-26 13:21:11 +08:00
    brew install $(for x in `brew leaves` ; do echo `brew deps --skip-build --skip-optional $x ` ; done | xargs | sort | uniq)
    15 条回复    2015-04-24 13:55:18 +08:00
    pH
        1
    pH  
       2015-04-22 17:17:26 +08:00
    好几年的OSX用户都不好意思说没用过homebrew,丢人
    ZHenJ
        2
    ZHenJ  
       2015-04-22 17:23:56 +08:00
    hb被认证了,每次用都要开VPN,流量爆表。。
    lululau
        3
    lululau  
       2015-04-22 17:31:51 +08:00   ❤️ 2
    用 brew leaves 比 brew list 更好一些
    jy01264313
        4
    jy01264313  
       2015-04-22 17:57:52 +08:00
    没明白为什么把 brew 搞乱了?
    dofine
        5
    dofine  
       2015-04-22 18:03:47 +08:00
    每次 brew install 都出错,原来是被认证的问题啊。。
    skywalker
        6
    skywalker  
       2015-04-22 18:53:54 +08:00
    brew deps 列出了所有的依赖,包括build, recommended, optional,这里很多都不是必须的,你这样会装很多不必要的软件。

    举个例子,brew deps wget列出:

    makedepend
    openssl
    pkg-config
    xz

    其中xz是build的时候需要的(bottle就不用了),openssl是recommended, 另外两个都是optional不是必须的。
    cattyhouse
        7
    cattyhouse  
    OP
       2015-04-22 20:05:28 +08:00
    @skywalker 有道理。。。
    xucheng
        8
    xucheng  
       2015-04-22 23:09:12 +08:00 via iPad
    直接运行 brew doctor 它会列出所有缺失的依赖的
    xucheng
        9
    xucheng  
       2015-04-22 23:14:43 +08:00 via iPhone
    还有brew deps 加参数是可以过滤掉optional 和build的deps的。
    cattyhouse
        10
    cattyhouse  
    OP
       2015-04-22 23:17:11 +08:00 via iPhone
    @xucheng 加什么参数?我研究半天没发现。brew doctor不能发现缺失的依赖,只能发现不完整的环境和缺失的文件。
    xucheng
        11
    xucheng  
       2015-04-23 00:01:44 +08:00 via iPhone
    --skip--build --skip-optional

    我才发现manpage没有更新 明天把这补上
    FrankFang128
        12
    FrankFang128  
       2015-04-23 00:32:40 +08:00 via Android
    怎么把hb搞乱?
    cattyhouse
        13
    cattyhouse  
    OP
       2015-04-23 07:08:05 +08:00 via iPhone
    @xucheng 是啊,man pages上没有,本地的man也没有这俩参数。
    jsfaint
        14
    jsfaint  
       2015-04-23 11:39:32 +08:00
    brew missing不是就会提示缺那个依赖么?
    alangz
        15
    alangz  
       2015-04-24 13:55:18 +08:00
    不知道为何,正常使用,但有时候也会提示依赖缺失
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3768 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 04:40 · PVG 12:40 · LAX 21:40 · JFK 00:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.