Mac下Homebrew的安装与使用 – brew (terminal install sofeware)

Mac OS X是基于Unix的操作系统,可以安装大部分为Unix/Linux开发的软件。然而,如果只是以使用为目的,对每个软件都进行手工编译不是很方便,也不利于管理已安装的软件,于是出现了类似于Linux中APT、Yum等类似的软件包管理系统,其中最著名的有MacPorts、Fink、Homebrew等。

我曾经是MacPorts的使用者,但了解Homebrew之后,立即“弃暗投明”了。其实MacPorts也是一个很不错的解决方案,除了一个实在让我头疼的特性。MacPorts有个原则,对于软件包之间的依赖,都在MacPorts内部解决(/opt/local),无论系统本身是否包含了需要的库,都不会加以利用。这使得MacPorts过分的庞大臃肿,导致系统出现大量软件包的冗余,占用不小的磁盘空间,同时稍大型一点的软件编译时间都会难以忍受。

而Homebrew的原则恰恰相反,它尽可能地利用系统自带的各种库,使得软件包的编译时间大为缩短;同时由于几乎不会造成冗余,软件包的管理也清晰、灵活了许多。Homebrew的另一个特点是使用Ruby定义软件包安装配置(叫做formula),定制非常简单。

mac系统也是基于unix的系统,所以也继承类很多unix的特性,包括软件的编译,安装等。ubuntu下有快捷命令apt-get install来快速安装软件。centos下有yum install来快速安装。所以,mac下也有一种方式,就是使用brew

至于Fink,由于并未安装使用过,不加讨论。(从互联网上的消息看,Fink由于维护人手的问题,软件包的更新不是很及时。)于我而言,Homebrew已经足够完善,除非发现重大的问题或者出现新的具有突破性的竞争对手,否则我没兴趣折腾别的软件包管理系统了。

下面说说Homebrew的安装与使用。

brew是Mac下的一个包管理工具,它从下载源码解压然后 ./configure && make install ,同时会包含相关依存库。并自动配置好各种环境变量,而且非常易于卸载。 这个对程序员来说简直是福音,简单的指令,就能快速安装和升级本地的各种开发环境。

home brew 官网是 http://brew.sh/index_zh-cn.html

安装brew

首先确保你的系统满足如下要求:

  1. 基于Intel CPU
  2. 操作系统为Mac OS X 10.5 Leopard或更高版本
  3. 已安装版本管理工具Git(Mac OS X 10.7 Lion已经预安装)
  4. 已安装Xcode开发工具1
  5. 已安装Java Developer Update2

打开 itrem 。输入一条命令即可安装好 brew。

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

这样一个简单的命令,我们就安装好来brew 。来验证一下,输入brew命令:

Example usage:
  brew [info | home | options ] [FORMULA...]
  brew install FORMULA...
  brew uninstall FORMULA...
  brew search [foo]
  brew list [FORMULA...]
  brew update
  brew upgrade [FORMULA...]
  brew pin/unpin [FORMULA...]
Troubleshooting:
  brew doctor
  brew install -vd FORMULA
  brew [--env | config]
Brewing:
  brew create [URL [--no-fetch]]
  brew edit [FORMULA...]
  open https://github.com/Homebrew/homebrew/blob/master/share/doc/homebrew/Formula-Cookbook.md
Further help:
  man brew
  brew home

出现了很多帮助命令,说明我们已经安装成功了。

用brew 安装源码

安装好了brew之后,我们就可以用这个命令安装各种源码了。比如安装一下wget工具。这个工具能在命令行中帮我们下载各种数据。

brew install wget

这样一个简单的命令就可以了。它会帮我们下载好wget,并且编译执行安装,还会下载各种依赖包,设置好各种配置和参数。

安装好的 wget 会被安装到/usr/local/Cellar/wget/下。并且将wget命令软链接至 /usr/local/bin 目录下。这样全局就都可以使用wget命令了。

我们同样可以使用brew安装好git,node,openssl,svn等各种。

安装好的这些软件都会统一安装到/usr/local/Cellar/目录下,统一管理。而且安装目录代码会被同步到/usr/local/opt/下,任何的增删改都会保持这2个目录的同步。并且已经软链好各种命令到/usr/local/bin下。

我们去看看:

ls -l /usr/loal/bin
-rwxr-xr-x 1 yangyi admin  791  3 26 17:47 brew
lrwxr-xr-x 1 yangyi admin 30  3 27 13:34 node -> ../Cellar/node/0.12.1/bin/node
lrwxr-xr-x  1 yangyi  admin 30  4 14 15:16 wget -> ../Cellar/wget/1.16.3/bin/wget

/usr/local/Cellar 和 /usr/local/opt/ 同步,增删改都会同步。

$ ls /usr/local/opt
brew-cask   nginx       node        openssl     pcre        pkg-config  wget        xz
$ ls /usr/local/Cellar/
brew-cask   nginx       node        openssl     pcre        pkg-config  wget        xz

ps: 那我就搞不懂了,那为啥wget -> ../Cellar/wget/1.16.3/bin/wget 命令映射要映射到Cellar目录,而不是opt目录呢?

brew 的常用命令

常用的命令没几个:

Homebrew的可执行命令是brew,其基本使用方法如下(以wget为例)。

查找软件包
brew search wget

安装软件包
brew install wget

列出已安装的软件包
brew list

删除软件包
brew remove wget

查看软件包信息
brew info wget

列出软件包的依赖关系
brew deps wget

更新brew
brew update

列出过时的软件包(已安装但不是最新版本)
brew outdated

更新过时的软件包(全部或指定)
brew upgradebrew upgrade wget

brew install wget # 安装源码
brew info svn # 显示软件的各种信息,包括版本啊源码地址啊等等
brew uninstall wget # 卸载软件,很爽,一键静默卸载
brew search git # 模糊搜索brew 支持的软件。如果不加软件名,就会列出所有它支持的软件。多的很。
brew list # 列出本机通过brew安装的所有软件
brew update # 跟新brew软件自身
brew upgrade wget # 更新安装过的软件,如果不加软件名,就更新所有可以更新的软件
brew cleanup # 清除下载的各种缓存

brew cask

brew cask 是在brew 的基础上一个增强的工具,用来安装Mac上的Gui程序应用包(.dmg/.pkg), 比如qq、chrome、xun lei等。它先下载解压到统一的目录中(/opt/homebrew-cask/Caskroom),省掉了自己去下载、解压、拖拽(安装)等蛋疼步骤,同样,卸载相当容易与干净。然后再软链到~/Applications/目录下, 一气呵成。非常方便,而且还包含很多在 AppStore 里没有的常用软件。

是不是很牛逼啊!!!

brew cask的官网是:http://caskroom.io

github地址是:https://github.com/caskroom/homebrew-cask

brew cask 的安装

也同样是一条命令搞定,前提是已经安装了brew:

brew install caskroom/cask/brew-cask

这样一条命令久搞定来brew cask 的安装,是不是很爽。

brew cask help一下看安装成功没?也是出现各种命令和帮助手册:

$ brew cask
brew-cask provides a friendly homebrew-style CLI workflow for the
administration of Mac applications distributed as binaries.
Commands:
    alfred     displays note about new built-in alfred support
    audit      verifies installability of Casks
    cat        dump raw source of the given Cask to the standard output
    cleanup    cleans up cached downloads and tracker symlinks
    create     creates the given Cask and opens it in an editor
    doctor     checks for configuration issues
    edit       edits the given Cask
    fetch      downloads Cask resources to local cache
    home       opens the homepage of the given Cask
    info       displays information about the given Cask
    install    installs the given Cask
    list       with no args, lists installed Casks; given installed Casks, lists staged files
    search     searches all known Casks
    uninstall  uninstalls the given Cask
    update     a synonym for 'brew update'
    zap        zaps all files associated with the given Cask
See also "man brew-cask"

好,我们来来下一个iTerm来看看:

brew cask install iTerm

简单的2条命令就可以了,非常之快,它会讲软件安装到/opt/homebrew-cask/Caskroom目录下,并且软链到~/Applications了,这样就能在应用程序里找到它。就能方便的使用。

$ cd /opt/homebrew-cask/Caskroom/
$ ls
iterm2

我们刚才的iTerm了。

再看看软链,用户自己手动下载安装的App会被安装到~/Applications,进这个目录看看:

$ cd ~/Applications/
$ ls -l
total 8
drwxr-xr-x  3 yangyi  staff  102  4  8 22:27 GitHub.app
lrwxr-xr-x  1 yangyi  staff   48  3 27 16:58 iTerm.app -> /opt/homebrew-cask/Caskroom/iterm2/2.0/iTerm.app

看到了吧。我们刚才的iTerm就软链到了统一的安装目录。

brew cask 常用命令

下面说一些常用到的各种命令。

brew cask install qq # 下载安装软件
brew cask uninstall qq # 卸载软件
brew cask search qq # 模糊搜索软件,如果不加软件名,就列出所有它支持的软件
brew cask info qq # 显示这个软件的详细信息,如果已经用cask安装了,也会显示其安装目录信息等
brew cask list # 列出本机按照过的软件列表
brew cask cleanup #  清除下载的缓存以及各种链接信息
brew update && brew upgrade brew-cask # 更新cask自身

或许你已经注意到了,好像并没有提供更新用cask安装软件命令啊。的确是没有。是的。目前 homebrew-cask 并没有命令直接更新所有已安装的软件,软件更新主要是通过软件自身的更新流程,不过也可以通过以下所示命令先删除 APP,再重新安装。

brew cask uninstall APP && brew cask install APP

软件同样也会安装到/opt/homebrew-cask/Caskroom目录下。

over

参考资料:
http://ljhero.info/2013-08-17/homebrew-cask.html
http://www.udpwork.com/item/11775.html
http://www.zhihu.com/question/22624898

定制自己的软件包

如果自己需要的软件包并不能在Homebrew中找到,怎么办呢,毕竟Homebrew是一个新生项目,不可能满足所有人的需求。当然,我们可以自行编译安装,但手工安装的软件包游离于Homebrew之外,管理起来不是很方便。

前文说过,Homebrew使用Ruby实现的软件包配置非常方便,下面简单谈一谈软件包的定制(假定软件包名称是bar,来自foo站点)。

  1. 首先找到待安装软件的源码下载地址
    http://foo.com/bar-1.0.tgz
  2. 建立自己的formula
    brew create http://foo.com/bar-1.0.tgz
  3. 编辑formula,上一步建立成功后,Homebrew会自动打开新建的formula进行编辑,也可用如下命令打开formula进行编辑。
    brew edit bar
    Homebrew自动建立的formula已经包含了基本的configuremake install命令,对于大部分软件,不需要进行修改,退出编辑即可。
  4. 输入以下命令安装自定义的软件包
    brew install bar

关于Homebrew的其它功能,比如将自定义软件包提交到官方发布等,请参考Homebrew项目的主页及其Man Page。你将发现Homebrew不仅是“家酿”,更是“佳酿”。

 

更多: Chocolatey的安装与使用—Windows下的包管理工具

 

本文:Mac下Homebrew的安装与使用 – brew

 

发表评论