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

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

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

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

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

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

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

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

Xcode をインストールする

  1. App Store から Xcode をインストールする。
  2. 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.

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 の作成とメンテナンス

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

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

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

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

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

tap phinze/homebrew-cask

公式に含まれない 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 でインストールしたアプリはどこに収められているのか

標準では /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 に設定を加えるか、実行時にオプションを付与することで変更することができる。

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

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/

その他

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