【Mac】HomeBrewでインストールしたアプリをBrewfileで管理する
Homebrewのパッケージ管理を楽にする仕組み「Brewfile」
パッケージ管理マネージャー「Homebrew」を使うことで依存関係を解決しながらパッケージのインストールを行うことができる。Macでは以下のコマンドでGoogle ChromeのようなGUIアプリのインストールを行うことができる。
brew install --cask google-chrome
パッケージ管理マネージャー経由で GUI のアプリから便利なコマンドをまとめてインストールできるのはとても便利である。
パッケージ管理マネージャーを使うメリットにインストールの自動化がしやすいというメリットがある。
Windowsで使用できるパッケージマネージャー「Chocolatey 」ではGUIを使ってインストールしたアプリをファイルに書き出して環境の移行を簡単にすることができた。
パッケージの構成をファイルで管理して依存関係を解決しながらまとめてインストールする仕組みは多くある。Node.jsにおけるpackage.json
など。
Homebrewにも同じようにファイルにインストールしたアプリや設定を書き出してパッケージ管理を楽にする仕組みがあるため調べてみる。
Brewfileを作成する
Brewfileを使ったインストールを行うためにはBrewfileを作成する必要がある。
ファイル構成は至ってシンプルで以下のようにコマンドを記述していく。
brew "git"
brew "vim"
brew "yarn"
私の環境では今までアプリやコマンドを一つ一つbrew install
でインストールしていた。
そのためBrewfileの存在を知らなければ、ファイルを作成していない。
そこでターミナルからBrewfileを作成するコマンドを実行してBrwefileを作成できる環境とBrewfileを作成する。
$ brew bundle dump
==> Tapping homebrew/bundle
Cloning into '/opt/homebrew/Library/Taps/homebrew/homebrew-bundle'...
remote: Enumerating objects: 35, done.
remote: Counting objects: 100% (35/35), done.
remote: Compressing objects: 100% (31/31), done.
remote: Total 5870 (delta 13), reused 10 (delta 4), pack-reused 5835
Receiving objects: 100% (5870/5870), 1.34 MiB | 2.44 MiB/s, done.
Resolving deltas: 100% (3436/3436), done.
Tapped 1 command (109 files, 1.7MB).
タップの処理が行われ、brew bundle
コマンドの使用が可能になる。
コマンドを実行したあとに自動的にBrwefileがユーザーのホームディレクトリ配下に作成される。
インストールしているものは少ないが以下のようなファイルが作成された。
tap "homebrew/bundle"
tap "homebrew/cask"
tap "homebrew/cask-fonts"
tap "homebrew/cask-versions"
tap "homebrew/core"
tap "sanemat/font"
brew "anyenv"
brew "bzip2"
brew "coreutils"
brew "curl"
brew "gh"
brew "jq"
brew "libiconv"
brew "screenfetch"
brew "sl"
brew "starship"
brew "translate-shell"
brew "tree"
brew "wget"
brew "yarn"
cask "bettertouchtool"
cask "cheatsheet"
cask "font-fira-code"
cask "font-ricty-diminished"
cask "google-japanese-ime"
cask "hiddenbar"
cask "iterm2"
cask "karabiner-elements"
cask "keyboardcleantool"
cask "spotify"
cask "vlc"
cask "zoom"
今までインストールしてきたコマンドとGUIアプリがまとめて列挙されていてシンプル。
アプリ名もアルファベット順に並んでおり非常に見やすくまとまっている。
Brewfileに記述したあとはbrew bundleコマンド
を使用して一括インストールを行うことができる。
ファイルの書き方 構文編
Brewfileには以下の4つのコマンドを使って記述することができる。
tap
Homebrewに正式登録されていないコマンド(fomula)をインストールするためにインストール先を登録すること。ここに記述する内容がbrew tapコマンド
として実行される。
brew
そのままbrewコマンドでインストールするコマンドを記述する際に使用する。主にコマンドラインを通して使うコマンドに対応。brew installコマンド
として実行される。
cask
Google Chromeのようなインストーラーを使うGUIアプリをインストールするために使用する。
brew コマンドと同じようにここに記述してたアプリがbrew cask installコマンド
でインストールされる。
mas
AppStore経由でアプリをインストールするときに使用する。ここで記述したものがbrew mas installコマンド
で実行される。コマンドを使うためには別途mas-cli
が必要になるため、brew "mas"
を記述する必要がある。
まとめ
Brewfileを作成することでHomebrew経由でインストールしたものをまとめて一つのファイルに定義することができる。BrewfileをGitを使ってファイルを管理することでMacの環境を新しくしたときもコマンド一つで環境を素早く移行できるのがすごく便利そう。