Closed4

【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の環境を新しくしたときもコマンド一つで環境を素早く移行できるのがすごく便利そう。

このスクラップは2021/03/16にクローズされました