Homebrew で Mac の環境構築をする機会は多いと思う.ライブラリをインストールするときに brew install xxx
と実行すればすぐに使える.ただし,Mac を移行したり,再インストールするときに brew install
を再実行するのは面倒で,今回は Homebrew Bundle (Brewfile
) を紹介する.同僚に Brewfile
を紹介する機会があり,今後もサッと紹介できるようにブログにまとめておくことにした.
Homebrew Bundle (Brewfile
) とは?
Homebrew Bundle を使うと Homebrew でインストールするライブラリを Brewfile
というファイルで管理できる.プログラミング言語だと Gemfile
や package.json
や pom.xml
のような感じ.さらに Brewfile
を GitHub の dotfiles
リポジトリに置いておけば,プルリクエストを使って個人設定をうまく管理することもできる.以下に Brewfile
のサンプルを載せておく.
brew "ghq" brew "git" brew "kubernetes-cli" brew "peco" brew "vim"
インストールするときは brew bundle
コマンドを実行すれば OK!便利!僕は「80個」も管理している...!
$ brew bundle Installing ghq Installing git Installing kubernetes-cli Installing peco Installing vim Homebrew Bundle complete! 80 Brewfile dependencies now installed.
Brewfile
構文 🍺
よく使う Brewfile
構文を「4種類」紹介する.基本的には brew
コマンドに対応している.
1. brew
brew
構文を使うと,Homebrew に正式に登録されたライブラリをインストールできる.brew install
コマンドと同じくライブラリ名を引数に記述する.
brew "ghq" brew "git" brew "kubernetes-cli" brew "peco" brew "vim"
2. tap
tap
構文を使うと,Homebrew に正式に登録されていないライブラリをインストールできる.brew tap
コマンドに対応している.以下のサンプルは mkr
や mob
や eksctl
など,よく使うライブラリをインストールするように記述している.
tap "mackerelio/mackerel-agent" tap "remotemobprogramming/brew" tap "weaveworks/tap" brew "mackerelio/mackerel-agent/mkr" brew "remotemobprogramming/brew/mob" brew "weaveworks/tap/eksctl"
なお,brew tap
は指定した GitHub リポジトリを Homebrew に登録する仕組みとなり,${userName}/homebrew-${repositoryName}
や ${organizationName}/homebrew-${repositoryName}
という命名規則でリポジトリがある.サンプルとして載せたライブラリのリポジトリもある.このあたりを調べていくと Homebrew に詳しくなれるはず!
- GitHub - mackerelio/homebrew-mackerel-agent: homebrew tap to install mackerel-agent
- GitHub - remotemobprogramming/homebrew-brew: Homebrew formula for the 'mob' tool
- GitHub - weaveworks/homebrew-tap
3. cask
cask
構文を使うと,Google Chrome など,Mac アプリをインストールできる.brew cask install
コマンドに対応している.個人的には直接 .dmg
でインストールすることも多く,あまり活用できていないけど,例えば BlackHole や Keycastr や OpenInTerminal など,最近ブログで紹介したライブラリなどは Brewfile
に記述している.
tap "homebrew/cask" cask "blackhole" cask "keycastr" cask "openineditor-lite" cask "openinterminal-lite"
4. mas
mas
構文を使うと,App Store から Mac アプリをインストールできる.mas
コマンドに対応している.個人的に必須な CotEditor や Tomato One や Magnet などを Brewfile
に記述している.
brew "mas" mas "CotEditor", id: 1024640650 mas "Tomato One", id: 907364780 mas "Magnet", id: 441258766
今から Brewfile
に移行できる?
今まで個別に brew install
コマンドを実行していて,今後 Brewfile
に移行したい人もいると思う.実は brew bundle dump
コマンドを実行すると,自動的に現在の環境から Brewfile
を生成できるようになっている.生成された Brewfile
は tap
➔ brew
➔ cask
➔ mas
の順番でキレイに並んでいるし,ライブラリ名もアルファベット順に並んでいるので,非常に見やすいと思う.
$ brew bundle dump
また Brewfile
をよく見ると「これ何だっけ?」というライブラリが入っていると思う(僕だけ?).ライブラリをアンインストールするときに brew uninstall
コマンドを実行する必要はなく,Brewfile
からエントリーを削除して brew bundle cleanup
コマンドを実行すればアンインストールできる.たまにアンインストールされないこともあり,その場合は brew uninstall
コマンドを実行している.
$ brew bundle cleanup
フォント管理も Brewfile
で!
最後に Brewfile
でフォント管理をする Tips を紹介する.フォントをインストールする機会は多くないけど,Keynote を作るときに使う「MigMix フォント」など,Mac を移行するときに毎回サイトからダウンロードするのは面倒だと思う.既に紹介した tap
構文と cask
構文を組み合わせて,以下のように Brewfile
に設定できる.
tap "homebrew/cask-fonts" cask "font-migu-1p"
フォントは多くあり,brew search
コマンドを使えば検索できる.例えば Noto Sans CJK JP など.
$ brew search font-
$ brew search font-noto-sans-cjk
==> Casks
font-noto-sans-cjk
font-noto-sans-cjk-jp
font-noto-sans-cjk-kr
font-noto-sans-cjk-sc
font-noto-sans-cjk-tc
まとめ
同僚に Homebrew Bundle (Brewfile
) を紹介する機会があり,ブログにまとめておくことにした.Brewfile
ファイル管理して brew bundle
コマンドを実行すれば,ライブラリを簡単にインストールできる.tap
/ brew
/ cask
/ mas
など,Homebrew の機能もサポートしている.もし今後 Brewfile
に移行するなら brew bundle dump
コマンドも使える.便利!