[macOS General] brew bundle / cask で Homebrew も他の Mac アプリもまとめて管理・インストールする

アプリケーションのインストール。

[markdown]
以前から気になっていた [BOXEN](http://boxen.github.com/) について [Qiita で調べた](http://qiita.com/tags/boxen)ところ、個人で利用するには保守や管理に困りそうだと感じました。
ちょこちょこインストールを手動で行っていましたが、brew bundle と cask を利用する方法が良さそうなので、導入することにしました。

> * [BrewfileでHomebrewパッケージを管理する | SOTA](http://deeeet.com/writing/2013/12/23/brewfile/)
> * [私もBoxen止めてBrewfile+brew-caskにした / マスタカの ChangeLog メモ](http://masutaka.net/chalow/2014-01-25-1.html)
> * [BoxenやめてBrewfile+homebrew-caskにした – 飲んだり寝たり](http://nomnel.net/blog/boxen-to-brewfile/)

## OS インストールから、brew bundle による一括インストールまでの手順

今回は OS X Mavericks (10.9) にセットアップしています。

> * [【Mac】OS X Mavericks (マーベリックス) をクリーンインストールする方法 | 和洋風KAI](http://wayohoo.com/mac/tips/how-to-clean-install-os-x-mavericks.html)

事前に Brewfile を用意しておくことで、アプリケーションの再インストールを以下の手順で実行できます。

1. Xcode をインストールする
2. HomeBrew をインストールする
3. Brewfile を取得する
4. brew bundle を実行する
5. AppStore の購入履歴から必要なアプリをインストールする

App Sore のアプリ以外をパッケージ管理することができるようになります。

### Xcode をインストールする

1. App Store から Xcode をインストールする。
1. Terminal.app から Xcode Command Line Developer Tools をインストールする。

“`
$ xcode-select —install
“`

ちなみに、git のバージョンを確認しようとしたら、自動で立ち上がってインストールしてくれました。

“`
$ git –version
xcode-select: note: no developer tools were found at ‘/Applications/Xcode.app’, requesting install. Choose an option in the dialog to download the command line developer tools.
$ git –version
git version 1.8.3.4 (Apple Git-47)
“`

### Homebrew をインストールする

いつも通り、Terminal.app に以下を貼付けて実行します。

“`
$ ruby -e “$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)”
$ brew doctor
Your system is ready to brew.
“`

> * [Homebrew — MacPortsは酒でも飲みたくなるでしょ?じゃあHomebrewを使おう!](http://brew.sh/index_ja.html)
> * [Homebrew: インストールと使い方 | deadwood](https://www.d-wood.com/blog/2013/06/30_4148.html)

#### the Xcode/iOS license requires というエラーが出たら

Xcode.app を起動して、ライセンス契約を承認してください。

“`
$ brew doctor
Agreeing to the Xcode/iOS license requires admin privileges, please re-run as root via sudo.
:
“`

### Brewfile を取得する

ファイルがあれば、`git clone` などで持ってくるだけで、環境を構築できるようになります。
事前に準備しておきます。

“`
$ git clone https://path/to/repo
“`

### brew bundle を実行する

bundle コマンドは、Homebrew の標準機能。
`Brewfile` ファイルを作成し、下記の実行で Homebrew の formulae がインストールされます。

“`
$ brew bundle path/to/Brewfile
“`

もとは brewdler というプロジェクトだったようです。

> * [「BrewfileでHomebrewパッケージを管理する」をやってみた – sonots:blog](http://blog.livedoor.jp/sonots/archives/35251881.html)
> * [andrew/brewdler](https://github.com/andrew/brewdler)

## Brewfile の作成とメンテナンス

事前にファイルを作成することが肝なので、作成方法を確認します。
Brewfile は他の dotfiles と一緒に管理しておくとよさそう。

“`
$ mkdir ~/dotfiles
$ touch dotfiles/Brewfile
$ open dotfiles/Brewfile
“`

ファイルの内容は、brew コマンドをそのまま書いていく形式。

“`ruby:Brewfile
# Make sure using latest Homebrew
update
# Update already-installed formula
upgrade
# Add Repository
# tap homebrew/versions
# tap homebrew/binary
# For cask
tap phinze/homebrew-cask
install brew-cask
# Formula
install zsh –disable-etcdir
install git
# .dmg apps
cask install kobito
cask install alfred
cask alfred link
# Remove outdated versions
cleanup
“`

### tap homebrew/versions

古いバージョンをインストールするためのリポジトリ。

> * [Homebrew-versionsで特定バージョン指定してインストールする](http://blog.cyclogy.com/2014/02/08/homebrew-versions/)

### tap phinze/homebrew-cask

公式に含まれない homebrew-cask のリポジトリを追加します。

> * [phinze/homebrew-cask](https://github.com/phinze/homebrew-cask)

### install brew-cask

formulae をインストールします。

### cask install kobito

cask を使って、.dmg アプリをインストールします。

### cask alfred link

alfred からアプリを呼び出せるようにするための特別なコマンド。
後述の補遺を参照ください。

## cask で使いたいアプリを探す

上記の Brewfile を実行するか、下記のコマンドを実行すれば、homebrew-cask が利用できる状態になります。

“`
$ brew tap phinze/homebrew-cask
$ brew install brew-cask
“`

`brew cask search` コマンドでアプリを探すことができます。

“`
$ brew cask search bartender
==> Exact match
bartender
“`

見つからないアプリは、以下で対応することができます。

* `brew tap caskroom/versions` を追加してバージョン違いを探す。
* 自分で cask を作成する

> * [brew cask で異なるバージョンをインストールする、もしくはアプリを追加する | deadwood](https://www.d-wood.com/blog/2014/03/27_5895.html)

## 補遺

### brew cask でインストールしたアプリはどこに収められているのか

標準では `/opt/homebrew-cask/Caskroom` に入っている。

#### .dmg ファイルを手動でインストールした場合のレイアウト

AppCleaner を利用して関連ファイルを洗い出した結果。

“`
/Applications/Kobito.app
~/Library/Preferences/com.qiita.Kobito.plist
~/Library/Caches/com.qiita.Kobito
~/Library/Kobito
“`

#### brew cask でインストールした場合のレイアウト

~/Applications/Kobito.app にシンボリックリンクが張られている。
このシンボリックリンクからアプリを起動できる。
cask のバージョンは最新ではなかったが、ソフトウェアアップデートも正常に行えた。

“`
$ pwd
/Users/****/Applications
$ ls -al
total 8
drwx—— 4 **** staff 136 3 8 23:22 .
drwxr-xr-x@ 27 **** staff 918 3 8 20:20 ..
-rw-r–r–@ 1 **** staff 0 3 6 16:21 .localized
lrwxr-xr-x 1 **** staff 51 3 8 23:22 Kobito.app -> /opt/homebrew-cask/Caskroom/kobito/1.8.7/Kobito.app
“`

AppCleaner を利用して関連ファイルを洗い出した結果。

“`
/opt/homebrew-cask/Caskroom/kobito/1.8.7/Kobito.app
~/Library/Preferences/com.qiita.Kobito.plist
~/Library/Caches/com.qiita.Kobito
~/Library/Kobito
“`

### brew cask のファイルレイアウトを変更する

これらのレイアウトは、`.bash_profile` や `.zshenv` に設定を加えるか、実行時にオプションを付与することで変更することができる。

> * [homebrew-cask/USAGE.md at master · phinze/homebrew-cask](https://github.com/phinze/homebrew-cask/blob/master/USAGE.md)
> * [homebrew-caskが良さそうなので導入してみた – About Digital](http://blog.digital-bot.com/blog/2013/09/08/homebrew-cask/)

### Alfred.app で利用できるようスコープに追加する

標準のレイアウトでは、/Application から外れるため、Alfred.app からアプリを利用することはできない。
Brewfile で設定を行うか、コマンドを実行することで、Alfred.app からアプリを呼び出せるように設定できる。

“`
$ brew cask alfred
==> brew cask alfred
manages integration with Alfred; allows applications installed with
homebrew cask to be launched by Alfred by adding the Caskroom to Alfreds
search paths
subcommands:
status – reports whether Alfred is linked
link – adds Caskroom to alfred search paths
unlink – removes Caskroom from Alfred search paths
“`

> * [Homebrewで*.dmgなアプリをインストールしたい→それhomebrew-caskで出来るよ – Qiita](http://qiita.com/paming/items/15ec3543cc094d411428)

### brew cask install sublime-text

コマンドラインから `subl` で呼べるよう、symlink もあわせて作ってくれました。

“`
$ brew cask install sublime-text
==> Caveats
Cask sublime-text installs files under “/usr/local”. The presence of such
files can cause warnings when running “brew doctor”, which is considered
to be a bug in homebrew-cask.
==> Downloading http://c758482.r82.cf2.rackcdn.com/Sublime%20Text%202.0.2.dmg
######################################################################## 100.0%
==> Symlinking App ‘Sublime Text 2.app’ to ‘/Users/deadwood/Applications/Sublime
==> Symlinking Binary ‘subl’ to ‘/usr/local/bin/subl’
==> Success! sublime-text installed to /opt/homebrew-cask/Caskroom/sublime-text/
“`

### その他

細かな挙動がどうなるのかなという点が、こちらで確認されていました。

> * [Homebrewで*.dmgなアプリをインストールしたい→それhomebrew-caskで出来るよ – Qiita](http://qiita.com/paming/items/15ec3543cc094d411428)
[/markdown]