Subscribed unsubscribe Subscribe Subscribe

ちょっと差がつくhomebrewのあまり知られていない使い方

環境構築erの皆様、ごきげんよう。今日も今日とて、大掃除してたはずがでてきたマンガ読了してたかのごとく、コード書くはずがrcファイル書いたりプラグイン試したりして一日が終わったりしていますか?
ふとhomebrewをupdateしたら新しいサブコマンドが2つほど*1入りました。その使い方を調べていたら、それとは別にhomebrewの便利コマンドを知ったのでご紹介。

準備

まずはhomebrewを最新にしましょう。

$ brew update

# バージョン確認
$ brew -v
0.8

2011年3月12日にバージョン0.8がリリースされた*2ようですね。

更新のあるformulaを調べる

$ brew outdated
git (1.7.3.2, 1.7.4.1 < 1.7.4.4)
mongodb (1.6.5-x86_64 < 1.8.1-x86_64)
readline (6.1 < 6.2.1)

サブコマンド outdated で最新でないfomulaを表示してくれます。

一気に更新してしまえ

brew install `brew outdated` (or brew outdated | xargs brew install (or brew upgrade))

The brew command · mxcl/homebrew Wiki · GitHub

最初の2つは単純に outdatedの実行結果をinstallコマンドに渡すだけですね。なんとなくxargs使ったほうが洗練されてる気がします。
そして、upgrade なるサブコマンドもあるのですね。manにもhelpにも書いてませんでした。知らなかった。せっかくなんで試してみましょう。

$ brew upgrade
==> Downloading http://kernel.org/pub/software/scm/git/git-1.7.4.4.tar.bz2
######################################################################## 100.0%
# 略
==> Summary
/usr/local/Cellar/git/1.7.4.4: 1054 files, 19M, built in 2.1 minutes

==> Downloading http://fastdl.mongodb.org/osx/mongodb-osx-x86_64-1.8.1.tgz
######################################################################## 100.0%
# 略
==> Summary
/usr/local/Cellar/mongodb/1.8.1-x86_64: 16 files, 93M, built in 2 seconds

==> Downloading ftp://ftp.cwru.edu/pub/bash/readline-6.2.tar.gz
######################################################################## 100.0%
# 略
==> Summary
/usr/local/Cellar/readline/6.2.1: 32 files, 1.9M, built in 38 seconds

はい、outdatedで表示されていたgit、mongodb、readlineとも最新になりました。helpには書いてないupgradeサブコマンド便利ですねー
というか、なんでhelpに書いてないの?outdatedは書いてるのに。helpの出力するところを修正すれば取り込んでもらえるのかな、名前残せるのかなとか甘い考えを持ったのですが、100近いPullRequestがたまってるようなので単に作業が追いついていないだけですかね。

brewコマンドの補完

homebrewにはzshコマンド補完設定ファイルが含まれています。

% ls /usr/local/Library/Contributions/
brew_bash_completion.sh   brew_fish_completion.fish brew_zsh_completion.zsh   examples                  manpages

普通にインストールしたなら上記ディレクトリあたりにあるはず。zshの場合、上記brew_zsh_completion.zsh を読み込ませてやればhomebrewのサブコマンドの補完が有効になります。
zsh設定ファイルにfpathを指定してやり、そこにファイルを置いて読み込ませるのが一般的なようです。ただ、このファイル自身が更新される可能性もあるので、シンボリックリンクをはるのがいいかもしれません。

% cat ~/.zshrc | grep fpath
fpath=(~/.zsh/functions/ $fpath)
% ln -s /usr/local/Library/Contributions/brew_zsh_completion.zsh ~/.zsh/functions/_brew
# ファイル名を_brewとしてやらないと動いてくれません。

bashの場合、.bashrcあたりに読み込み設定を書けばいいようです。brew_bash_completion.sh に書いてるので、そちらを参照のほど。

まとめ的な

Homebrew便利です。ちょっと前まではMacPorts全盛でしたが、もうすっかりbrewさまさまです。/usr/local/ 以下に全て入るというのも精神衛生上いいですよね。
こちらのエントリでとりあげたPowのインストール手順もなぜかMacPortsをアンインストールしてHomebrewをインストールするところからはじまっています。さあbrewをはじめよう。

参考

FFTT : Homebrew のご紹介
基本的な使い方が網羅されています。
Homebrew — MacPorts driving you to drink? Try Homebrew!
実は brew home とか叩くとひらきます。

*1:missingとbottle

*2:https://github.com/mxcl/homebrew/wiki/Homebrew-0.8