概要
Mac の環境構築するときに大半の時間を占めるインストール作業を半自動化する系の話。
- Homebrew - Mac用パッケージ管理ツール
- Homebrew Cask - Homebrew を使ってソフトウェアを一括インストールするための拡張
- Homebrew Bundle - 依存関係を Brewfile に書き出し/読み込みできるツール
- mas-cli - App Store のアプリを一括インストール
macOS Sierra を入れるタイミングでクリーンインストールしたいので改めて整理した。
歴史的な流れ
- 2013年末〜2014年初夏にかけて homebrew-cask と homebrew-bundle による自動化が流行る
- 2014年7月に homebrew-bundle が
Warning: brew bundle is unsupported
と出て使えなくなる - オワコンと叫んだり、シェルスクリプトに退化したり、血迷って Ansible 使う人が増える
- 2015年4月に homebrew-brewdler となって帰ってきた
- 2015年7月に mas-cli が産声をあげる
- 2016年初頭、brewdler は bundle という名前に戻った
- 世界に平和が訪れた
構成管理ツールのAnsible は仕事でつかってたけど、わざわざ Mac セットアップのために設定ファイルの書き方思い出したり、調べなおしたりして構築していくのは想像しただけで目眩がする。無駄な苦労を楽しめる人にはいいかもだけど、一般人はついていけない。
これから自動化はじめたい人
brew 自体はすでに入ってるなら tap で homebrew-bundle を使えるようにする
$ brew tap Homebrew/bundle
App Store 経由でインストールしたアプリも管理したいので mas-cli もいれる
$ brew install mas
dump
で現在インストールされているパッケージを Brewfile として書き出すことができる
$ brew bundle dump
ただし、100%全部は書き出せないようなので、/Applications フォルダとにらめっこしながら漏れがないか確認して Brewfile に手動で追記していく。
tap 'caskroom/cask' tap 'homebrew/bundle' tap 'homebrew/core' brew 'go' brew 'mas' brew 'rbenv' cask 'atom' cask 'docker-toolbox' cask 'google-chrome' cask 'google-drive' cask 'google-japanese-ime' mas 'Alfred (1.2)', id: 405843582 mas 'Slack (2.0.3)', id: 803453959 mas 'Xcode (8.0)', id: 497799835
brew search chrome
とか brew search sourcetree
とかすれば記述すべき homebrew-cask 上の正式名称がわかる。AppStore のアプリの場合は、mas list
するか、AppStore のアプリのページのリンクをコピーすれば URL に id が含まれてるのでわかる。
完成した Brewfile は自分の GitHub リポジトリの dotfiles にでも置いておけばいい。 dotfiles/Brewfile at master · jnst/dotfiles · GitHub
Mac で環境構築する手順
新品の MacBook を買ったりクリーンインストールしたら、とりあえず Homebrew をインストールする。次に Safari から自分の GitHub リポジトリにアクセスしてクローンなりコピペなりして Brewfile を持ってくる。Brewfile が存在するディレクトリに移動し brew bundle
も使えるようにして実行する。
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" $ git clone git@github.com:jnst/dotfiles.git $ cd dotfiles $ brew tap Homebrew/bundle $ brew bundle
あとはインストールを待つだけ。
最近の homebrew-cask
- デフォルトで
~/Applications
ではなく/Applications
にインストールされる - パッケージのインストール先が
/opt/homebrew-cask/Caskroom
から/usr/local/Caskroom
に変わった
メンテナンス作業
- TODO:
brew bundle dump --force
brew bundle cleanup
brew bundle check