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

[分享] 简洁优雅的在Mac上安装软件-homebrew-cask命令行神器

  •  
  •   wxiluo · 2013-10-05 15:49:59 +08:00 · 25983 次点击
    这是一个创建于 3857 天前的主题,其中的信息可能已经有所发展或是发生改变。
    传送门: http://ksmx.me/blog/2013/10/05/homebrew-cask-cli-workflow-to-install-mac-applications/

    有了homebrew-cask,安装应用只需打开「Terminal」,输入

    > brew cask install XXX
    # 将XXX替换成你想要安装的软件名称就可以了

    大家体会一下,瞬秒常用软件:

    brew cask install alfred
    brew cask install the-unarchiver
    brew cask install qq
    brew cask install line
    brew cask install skype
    brew cask install thunder
    brew cask install mplayerx
    brew cask install evernote
    brew cask install skitch
    brew cask install dropbox
    brew cask install google-chrome
    brew cask install mou
    brew cask install iterm2
    brew cask install sublime-text
    brew cask install virtualbox

    微信订阅号:@明学的白板,欢迎关注,在上面讨论Mac OS X相关的话题,分享高级技巧。
    第 1 条附言  ·  2013-10-05 21:56:15 +08:00
    看到v2ex本周热议主题,《一个在你每次重装完 OS X 之后可能会用到的页面 》 http://www.v2ex.com/t/84581#reply44

    这个里面收录的软件都可以使用homebrew-cask直接安装,你可以把下面这段代码保存成一个bash脚本文件(例如 install.sh):

    #!/bin/bash

    brew cask install alfred
    brew cask install firefox
    brew cask install mplayerx
    brew cask install mou
    brew cask install skype
    brew cask install google-chrome

    其他需要自己添加就可以,装机其实更加简单,不用下载所有DMG文件,一个一个拖拽,下一步下一步。

    保存后直接在Terminal运行:bash install.sh 就可以去泡咖啡。程序会自动下载,自动打开DMG,自动把App拷贝到~/Applications里面,直接可以使用了。
    第 2 条附言  ·  2013-10-06 13:43:20 +08:00
    更新的原文文章,加上配图了,看起来更加轻松: http://ksmx.me/blog/2013/10/05/homebrew-cask-cli-workflow-to-install-mac-applications/
    55 条回复    1970-01-01 08:00:00 +08:00
    subpo
        1
    subpo  
       2013-10-05 15:52:30 +08:00
    是什么软件源?不敢用
    9hills
        2
    9hills  
       2013-10-05 15:55:42 +08:00   ❤️ 1
    @subpo Open Source,所以没有敢用不敢用的问题,本质和homebrew一样,下载都还在各软件的官网

    https://github.com/phinze/homebrew-cask
    wxiluo
        3
    wxiluo  
    OP
       2013-10-05 15:56:47 +08:00   ❤️ 1
    @subpo 都是用官方软件源,你可以使用brew info qq 查看,这是个工具,软件全部都从官网下载。你试一次就知道了,他是用Ruby去抓官网包,然后帮你安装好。
    subpo
        4
    subpo  
       2013-10-05 15:57:56 +08:00   ❤️ 1
    @9hills
    @wxiluo
    谢谢,已装上:)
    troyl
        5
    troyl  
       2013-10-05 16:24:53 +08:00
    有查询可升级软件的命令吗?
    wxiluo
        6
    wxiluo  
    OP
       2013-10-05 16:28:42 +08:00
    @troyl 可以,brew update && brew upgrade 就行。
    tank
        7
    tank  
       2013-10-05 16:39:42 +08:00   ❤️ 1
    看看这个,尝试安装skitch

    Xus-MacBook-Air:~ tank$ brew cask install skitch
    Error: no such file to load -- software_spec
    Please report this bug:
    https://github.com/mxcl/homebrew/wiki/troubleshooting
    /usr/local/Cellar/brew-cask/0.17.3/rubylib/cask/download.rb:9:in `require'
    /usr/local/Cellar/brew-cask/0.17.3/rubylib/cask/download.rb:9:in `perform'
    /usr/local/Cellar/brew-cask/0.17.3/rubylib/cask/installer.rb:15:in `install'
    /usr/local/Cellar/brew-cask/0.17.3/rubylib/cask/cli/install.rb:8:in `run'
    /usr/local/Cellar/brew-cask/0.17.3/rubylib/cask/cli/install.rb:5:in `each'
    /usr/local/Cellar/brew-cask/0.17.3/rubylib/cask/cli/install.rb:5:in `run'
    /usr/local/Cellar/brew-cask/0.17.3/rubylib/cask/cli.rb:37:in `process'
    /usr/local/bin/brew-cask.rb:6
    /usr/local/Library/brew.rb:51:in `require'
    /usr/local/Library/brew.rb:51:in `require?'
    /usr/local/Library/brew.rb:101
    Xus-MacBook-Air:~ tank$
    tank
        8
    tank  
       2013-10-05 16:43:09 +08:00
    还有Alfred的Link支持需要Alfred Powerpack吧?
    alexrezit
        9
    alexrezit  
       2013-10-05 16:49:38 +08:00
    和 App Store 比有什么优势?
    zhangxiao
        10
    zhangxiao  
       2013-10-05 16:55:53 +08:00
    @alexrezit 可能有些软件不在mas里吧
    troyl
        11
    troyl  
       2013-10-05 17:25:27 +08:00
    @wxiluo 试了下,很棒
    yangzh
        12
    yangzh  
       2013-10-05 17:30:49 +08:00
    @alexrezit 优势可能在于命令行爽点更加高,而且不用忍受 app store 可能的慢网速。当然也没有了沙盒限制。
    shendancan
        13
    shendancan  
       2013-10-05 17:39:57 +08:00
    已用,挺不错的
    alexrezit
        14
    alexrezit  
       2013-10-05 17:42:31 +08:00
    @yangzh
    收费的 app 就不行了吧? 感觉分开管理没有任何优势了... 而且还不能自动更新...
    breeswish
        15
    breeswish  
       2013-10-05 17:57:34 +08:00
    同遇到@tank的问题。。(brew是之前安装过了)

    https://gist.github.com/breeswish/4c777e16a5dca092281d
    wxiluo
        16
    wxiluo  
    OP
       2013-10-05 21:43:03 +08:00
    @tank 你Mac OS X 什么版本,输入一下ruby --version 看一下,还有which ruby。
    wxiluo
        17
    wxiluo  
    OP
       2013-10-05 21:43:51 +08:00   ❤️ 1
    @breeswish 首先brew update && brew upgrade一次,然后运行brew doctor 看看能不能检测出什么问题。
    wxiluo
        18
    wxiluo  
    OP
       2013-10-05 21:44:56 +08:00
    @tank Alfred Powerpack版本其实只需要在Alfred上激活就行,安装Alfred就可以,进去激活
    wxiluo
        19
    wxiluo  
    OP
       2013-10-05 21:45:59 +08:00
    @alexrezit homebrew-cask 和 Mac App Store 相比,目前还有很多优势:

    1. 安装软件体验非常一致简洁优雅
    2. 对常用软件支持更全面,例如 MPlayerX 已经宣布不在更新 Mac App Store上 的版本
    3. 软件更新速度快,体验好。例如Alfred 2.0已经出了很久,但在 Mac App Store 上还是1.2版本,QQ也是这样的情况
    alexrezit
        20
    alexrezit  
       2013-10-05 21:48:20 +08:00
    @wxiluo
    MAS 更新延迟这种东西... 和功能比起来还是要更看重稳定性和隐私保护吧.
    wxiluo
        21
    wxiluo  
    OP
       2013-10-05 21:58:42 +08:00
    @alexrezit homebrew-cask是从每个软件的官网下载DMG或者ZIP包的,你试一下就知道了,软件使用起来和你拖拽安装是一样的,它就是省了你自己去找,自己挂载DMG,自己拖到Application的过程,而且帮助你检查更新情况。它是开源软件,如果了解Ruby的话,可以看看它的代码,绝对没有侵犯隐私性的东西。
    wxiluo
        22
    wxiluo  
    OP
       2013-10-05 22:01:28 +08:00
    @troyl 赞! 这玩意儿太方便了
    alexrezit
        23
    alexrezit  
       2013-10-05 22:15:43 +08:00
    @wxiluo
    App 本身如果没经过 App Store 审核你能保证么?
    wxiluo
        24
    wxiluo  
    OP
       2013-10-05 22:20:15 +08:00
    @alexrezit 那是你是否信任应用程序的问题了。 在Mac App Store还没有的时候,大家也过得挺好的嘛 :)

    App Store还不够完善,你看这篇 MPlayerX离开App Store的声明 http://mplayerx.org/leave-mas.html 其实我是期望所有应用都能通过App Store下载的,只要登录Apple ID,所有应用都有了,但现在还做不到。
    sunwenjun
        25
    sunwenjun  
       2013-10-05 22:22:54 +08:00
    @wxlluo 我安装的时候报错, which -a ruby 返回
    ~|⇒ which -a ruby
    /usr/bin/ruby
    /usr/local/bin/ruby
    如何解决,感谢。
    alexrezit
        26
    alexrezit  
       2013-10-05 22:24:26 +08:00
    @wxiluo
    单单是信任问题, 我就不费劲了, 不同渠道分别管理太麻烦.
    说到 MPX, 我早就不用它了, 音画不同步是个大问题, 还是 Movist 来得省心, 不仅画质强一大截, 在 SB 机制下自动加载字幕, 自动寻找下一集等功能不也一样实现了?
    wxiluo
        27
    wxiluo  
    OP
       2013-10-05 22:29:04 +08:00   ❤️ 1
    @sunwenjun 给我发一下出错信息吧。 可以运行一下brew doctor检查一下。
    wxiluo
        28
    wxiluo  
    OP
       2013-10-05 22:31:09 +08:00
    @alexrezit Movist还没有使用过,我去玩玩看。 其实可以当软件需要更新的时候,就先卸载掉,然后用brew cask安装,这样慢慢切换过来。 App Store确实不给力,Alfred和QQ都是老版本。
    zieglar
        29
    zieglar  
       2013-10-05 22:35:08 +08:00
    每次重装完OS X还需要重装软件么。。。
    wxiluo
        30
    wxiluo  
    OP
       2013-10-05 23:05:00 +08:00
    @zieglar 如果只有一个分区,还是全新安装的话是需要滴。。。 homebrew-cask不光是第一次安装方便,后面维护起来也很舒服,brew upgrade一下,软件就都更新了。
    cassyfar
        31
    cassyfar  
       2013-10-06 01:37:11 +08:00
    听说装/opt我以为什么application support,preference里面的东西也会扔进去。本是欣喜地认为卸载一下简化太多,结果只是一个App本体在那,感觉还不如手动扔进Application里面,省下一个命令。
    cassyfar
        32
    cassyfar  
       2013-10-06 01:55:20 +08:00
    brew cask uninstall 只是 unlink了application里的shortcut... 感觉这是个追求表面酷炫没有实质用户体验提升的geek产品
    Henrybsbhp
        33
    Henrybsbhp  
       2013-10-06 02:14:42 +08:00
    同意楼上所说,另外问一下如何 Uninstall 这个产品呢?我用了 Homebrew 的命令行吗?还是 Homebrew-cask 有自己的 Uninstall 命令呢?官方的 FAQ 没有找到,所以问一下,谢了。
    K2
        34
    K2  
       2013-10-06 06:07:36 +08:00
    precisi0nux
        35
    precisi0nux  
       2013-10-06 08:34:48 +08:00
    已装上,感谢分享
    johnnyb
        36
    johnnyb  
       2013-10-06 08:45:47 +08:00
    @K2 我也想说这个页面 :D
    moroumo
        37
    moroumo  
       2013-10-06 08:58:28 +08:00
    homebrew 和 homebrew-cask 什么区别?没看懂github上的说明
    breeswish
        38
    breeswish  
       2013-10-06 09:53:40 +08:00
    @wxiluo update以后OK了 ^_^

    对了~QQ现在已经3.0了
    breeswish
        39
    breeswish  
       2013-10-06 10:00:14 +08:00
    另外,要是v2ex和homebrew cask合作建立镜像那就更好了 :) @Livid
    blaulan
        40
    blaulan  
       2013-10-06 10:07:07 +08:00
    cask 经常把已经安装的软件搞丢掉,非得重新安装一遍才能出现在 list 里。另外我用的时候都没办法更新,不知道是什么问题。
    wxiluo
        41
    wxiluo  
    OP
       2013-10-06 11:56:59 +08:00
    @cassyfar
    ➜ ~ brew cask uninstall xunlei
    ==> Removing link: /Users/mk/Applications/Thunder.app
    ➜ ~ cd /opt/homebrew-cask/Caskroom/
    ➜ ~ ls xunlei

    里面本体已经删除了呀,uninstall首先会unlink,然后会删除App本体的。
    wxiluo
        42
    wxiluo  
    OP
       2013-10-06 12:09:32 +08:00   ❤️ 1
    @moroumo 可以简单理解为homebrew-cask是homebrew的一个插件,homebrew原来的设计是为Mac安装Linux软件的(有的开发需要新版本的ruby,python,nodejs呀,于是有了homebrew这种类似Debian Linux系上apt-get的工具,严格的说,homebrew更像是ArchLinux上的pacman和Gentoo上的emerge,它们都是下载源代码进行编译,而不是下载二进制编译好的文件)。 Mac上主要有三个这样的软件项目:MacPorts, Flink 和 Homebrew,MacPorts是老前辈。

    MacPorts传送门(不建议使用):http://www.macports.org/
    apt-get科普传送门: https://help.ubuntu.com/community/AptGet/Howto
    pacman科普传送门:https://wiki.archlinux.org/index.php/Pacman_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)
    emerge科普传送门:http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=2&chap=1
    wxiluo
        43
    wxiluo  
    OP
       2013-10-06 12:12:07 +08:00
    @Henrybsbhp 卸载方法:

    1. 如果是要卸载用brew cask install安装的软件,可以使用 brew cask uninstall XXX
    2. 如果是要卸载brew-cask这个homebrew插件,可以使用 brew uninstall brew-cask
    Henrybsbhp
        44
    Henrybsbhp  
       2013-10-06 12:38:33 +08:00
    @wxiluo 卸载插件提示 Error,不行。不过还是谢谢了。
    Henrybsbhp
        45
    Henrybsbhp  
       2013-10-06 14:41:22 +08:00
    还是谨慎安装改插件吧,我安装了后,然后觉得不方便,卸载不能,找了 homebrew 的 FAQ 上说的 uninstall 方法卸载了一遍,然后用楼上给的命令重新来了一遍,结果重启后造成众多配置文件丢失,所有软件的设置都要重新来。所以不是很推荐这个,要是老手的话可以试试看。给出我的个人使用报告,也可能只有我的是特例或者和我的其他某些文件产生冲突了导致的结果吧。但是还是希望大家多留意点。
    palxex
        46
    palxex  
       2013-10-06 14:53:27 +08:00
    乍一看见这个东东狂喜了一下,「这就是我要找的东西」的赶脚。对用着一堆不上MAS程序的人是福音啊。
    实际安上看了看,这可用性还得等一阵。
    首先,brew upgrade并不自动更新cask里安上的东西,brew cask也没提供自己版本的outdated/upgrade,你得自己发现哪个更新了,然后brew cask uninstall Caskname && brew cask install Caskname。参见https://github.com/phinze/homebrew-cask/issues/309。这倒没什么,homebrew刚出来时也是都没有,慢慢等更新就是了。
    其次,对calibre这种频繁更新小版本的程序(这其实是我用它的主要目的),它的Cask里version居然是'latest'。因为Cast和Formula不一样,里面不带hash验证只靠文件名……我不知道这个Cask是谁写的,这明摆着是不但现在没可能更新(即使按上一条的方案)就算以后出了upgrade功能也别想能更新这个app的节奏。
    附送一条彻底卸载的单行:(先brew cask uninstall掉它安的所有东西)
    brew uninstall brew-cask && brew untap phinze/homebrew-cask
    过半年一年的再看吧。
    palxex
        47
    palxex  
       2013-10-06 14:55:17 +08:00
    @Henrybsbhp 不太清楚你的是怎么回事,brew uninstall按说只是unlink后删除对应的Cellar文件夹啊。有当时的log么?
    Henrybsbhp
        48
    Henrybsbhp  
       2013-10-06 15:47:07 +08:00
    @palxex 没有 Log 了,几乎所有的设置项信息全丢。恩,我当时就用 cask 安装过一个 MPlayerX,下载后的 zip 文件解压好在 Opt 里面,然后 link 了一个到 Launchpad 里面,卸载以后 unlink ,然后我接着 uninstall 插件,因为不知道怎么 uninstall homebrew cask,所以就用的 homebrew 的 uninstall 命令,然后今早用了43楼的命令后出现 Error 提示,Launchpad 的系统原生程序图标消失,我就接着重启,重启后图标什么的是回来了,但是几乎所有的系统和软件的设置全部 reset 了。不知道是我是个例还是和我恩某些文件产生冲突了,所以提醒大家弄之前做个备份,有 TM 的话更好了啦。
    skywalker
        49
    skywalker  
       2013-10-06 18:35:03 +08:00
    @palxex 没错,brew cask刚出来的时候就用了,用了一段我放弃了,没觉得有什么方便的,也不能像homebrew那样自动检测更新。
    wxiluo
        50
    wxiluo  
    OP
       2013-10-06 23:25:43 +08:00
    @Henrybsbhp 「几乎所有设置项」信息全丢指的是什么?是应用的设置项吗?感觉不应该呀。

    ➜ ~ brew uninstall brew-cask
    Uninstalling /usr/local/Cellar/brew-cask/0.17.3...
    ➜ ~ brew untap phinze/homebrew-cask
    Untapped 1 formula

    这样就成功卸载brew-cask了。
    wxiluo
        51
    wxiluo  
    OP
       2013-10-07 00:08:12 +08:00
    @skywalker homebrew-cask的开发者一直还在探索未来的方向,目前他们的思路是认为,brew-cask帮助你在第一次安装的时候装上最新版本,之后的日子里应用内会提示更新的。

    `brew cask install --force calibre`,也要比你Google calibre页面,找到下载,然后拖进Applications要方便。:)
    Henrybsbhp
        52
    Henrybsbhp  
       2013-10-07 01:34:29 +08:00
    @wxiluo 应用的设置几乎全部丢失,只有格别没有,系统的设置也是。执行你给的卸载命令,提示 Error,具体提示我就没有记了,也懒得再去尝试了。
    skywalker
        53
    skywalker  
       2013-10-07 18:53:36 +08:00
    @wxiluo 如果你天天装新软件那我可以理解,不过我的软件一般比较固定,装了之后就不用管了,靠软件内更新或者App Store的更新就行了。
    wxiluo
        54
    wxiluo  
    OP
       2013-10-08 10:32:42 +08:00
    @skywalker 对,你说的没错,homebrew-cask团队也是这样认为的。 所以才没有做brew cask upgrade的策略,利用软件自己的更策略就可以。:)
    shachuan
        55
    shachuan  
       2013-10-08 11:51:19 +08:00
    唉,我人品不好,本地网络从github往回拉速度大概有8kb/s
    挂上个ssh反而直接打不开了。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5647 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 03:27 · PVG 11:27 · LAX 20:27 · JFK 23:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.