MacへのHomebrewのインストール方法の手順だけではなく、Formula, CaskやTapなどHomebrewを使いこなす上で必須となる知識を深められるように可能な限り詳細に説明を行っています。Homebrewはじめての人、使っているけど理解が不足している人はぜひこの機会に参考にしてください。

Homebrewのインストールを行うMacのバージョンは、macOS Catalinaバージョン10.15.6です。

本文書作成時は、macOS Mojaveバージョン10.14.5でしたがmacOSがバージョンアップしたので記事の更新を行っています。またHomebrewのバージョンが上がり、brew caskコマンドが廃止になっています。今後はbrew –caskとなります。

Homebrewについて

HomebrewはMac上で動作するパッケージマネージャーで、ソフトウェアのインストール、アンインストールをコマンドラインで行うことができ、インストール時にパッケージ間の依存関係を解決してくれる便利なツールです。

Homebrewを使わなかった場合

もしHomebrewを使わなかった場合のパッケージ(ソフトウェア)のインストールを確認しておきましょう。必ずしも下記の順番ではないかもしれませんが、インストールが完了するまでにさまざまなステッップを踏む必要があります。

  • 検索エンジンでインストールしたいパッケージサイトを見つける
  • パッケージのサイトでインストールの方法を確認する
  • バッケージのダウンロードを行う
  • 依存関係があればそのパッケージを先にインストールする
  • パッケージのインストールを行う

その他にも本当にこのサイトが正しくて安全なのかやインストール方法が英語でわからないなどまだまだ大変なことはあるかもしれません。またアンインストールについては面倒だからとそのまま放置ということも多いのが実情ではないでしょうか。

依存関係とは何かを簡単に説明します。あるパッケージpackageAは別のパッケージpackageBの機能を利用しているため、packageBなしではpackageAを動かすことができません。その場合、packageAはpackageBに依存しているといいます。また、packageAとpackageBの間には依存関係があるともいいます。

Homebrewを使った場合

Homebrewを使わなかった場合に述べたことをまとめるとパッケージを管理するために必要な操作は以下の4つに集約されます。Homebewはそれらの操作をコマンドラインで簡単に行うことができます。

  • パッケージの検索
  • パッケージのインストール
  • パッケージのアンインストール
  • パッケージの更新

Homebrewのインストール

Homebrewのサイトでインストール方法の確認を行います。画面上に表示されているスクリプト(下記の赤線で囲まれた部分)を使って実行します。rubyコマンドを使って実行しますが、Macではrubyはインストールされているのでrubyのインストールは必要ありません。

2021年5月11日現在ではインストールのスクリプトがrubyからbashに変更になっています。ホームページに記載されているスクリプトを実行してください。
Homebrewトップページ
Homebrewトップページ

コマンドラインで実行するため、ターミナルを起動して行います。Finderのメニューからユーティリティを選択して、ターミナルをダブルクリックすると起動することができます。

ユーティリティを選択
ユーティリティを選択
ターミナルを起動
ターミナルを起動

ターミナルが起動できたら、先ほど紹介したスクリプトをターミナルにコピー&ペーストしてHomebrewのインストールを開始してください。


$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Homebrewでインストールを行うと依存関係によりXcode Command Line Toolsのインストールが必要になります。しかし事前にインストールをする必要はなくHomebrewのインストールの途中で行われます。Xcode Command Lineがインストールずみの場合はインストールは行われません。

インストールを実行すると途中でXcode Command Line Toolsのインストールの確認(インストール済でない場合)が表示されるので、そのまま”Enter”キーを押してください。


==> The Xcode Command Line Tools will be installed.

Press RETURN to continue or any other key to abort

次にパスワードを聞かれるので、今Macにログインしているユーザのパスワードを入力してください


==> /usr/bin/sudo /bin/chmod u+rwx /usr/local/bin /usr/local/include /usr/local/lib /usr/local/share /usr/local/share/doc /usr/local/share/man /usr/local/share/man/man1
Password:

パスワードが間違っているとSorry, try again.と表示されます。再度正しいパスワードを入力してください。パスワードがあっているとそのままインストールが継続します。


Downloading Command Line Tools (macOS Mojave version 10.14) for Xcode
Downloaded Command Line Tools (macOS Mojave version 10.14) for Xcode
Installing Command Line Tools (macOS Mojave version 10.14) for Xcode

Command Line Toolsのインストールが完了するとHomebrewのダウンロードとインストールが行われます。


==> Downloading and installing Homebrew...

インストールが成功(Installation successful!)し、メッセージに”Run brew help”が表示されるので実行します。


==> Installation successful!

==> Homebrew has enabled anonymous aggregate formulae and cask analytics.
Read the analytics documentation (and how to opt-out) here:
  https://docs.brew.sh/Analytics

==> Homebrew is run entirely by unpaid volunteers. Please consider donating:
  https://github.com/Homebrew/brew#donations
==> Next steps:
- Run `brew help` to get started
- Further documentation:
    https://docs.brew.sh

実行するとbrewのコマンドラインの使用方法が表示されます。これでHomebrewのインストールは完了です。


$ brew help
Example usage:
  brew search [TEXT|/REGEX/]
  brew info [FORMULA...]

FORMULAとは

brew helpを実行したあとのメッセージにbrew info のあとに[FORMULA…]を指定しているのがわかるかと思います。

formulaは、ruby言語でパッケージの定義が記述されており、formulaの内容に沿ってパッケージのインストールが行われます。インストールする時などhomebrewを使用する際にはformulaを指定しますが、パッケージ名を指定していると考えても問題ないかと思います。

Homebrewコマンドの確認

バージョンの確認

Homebrewのバージョンを確認したい場合はbrew –versionコマンドを実行します。


% brew --version
Homebrew 3.1.6
Homebrew/homebrew-core (git revision 961dd2d5be; last commit 2021-05-11)
Homebrew/homebrew-cask (git revision a4dd4a1908; last commit 2021-05-11)

パッケージのインストール

Homebrewのインストールが完了したらパッケージのインストールを行ってみましょう。ここではtreeコマンドのインストールを行います。

パッケージのインストールはbrew installコマンドを利用して行います。インストール後はtreeコマンドがどこにインストールされたかもwhichコマンドで確認しておきます。


$ brew install tree
==> Downloading https://homebrew.bintray.com/bottles/tree-1.8.0.mojave.bottle.ta
######################################################################## 100.0%
==> Pouring tree-1.8.0.mojave.bottle.tar.gz
🍺  /usr/local/Cellar/tree/1.8.0: 8 files, 117KB
$ which tree
/usr/local/bin/tree

treeコマンドは、実行したディレクトリ以下のディレクトリ・ファイル構成を表示してくれるコマンドです。ディレクトリ、ファイル構成を確認したい場所でtreeコマンドを実行してみてください。ここではPHPのフレームワークであるLaravelのインストールディレクトリで実行しています。


laravel $ tree 
.
├── app
│   ├── Console
│   │   └── Kernel.php
│   ├── Exceptions
│   │   └── Handler.php
│   ├── Exports
│   │   └── UsersExport.php
│   ├── Http
│   │   ├── Controllers
│   │   │   ├── Auth
│   │   │   │   ├── ForgotPasswordController.php
│   │   │   │   ├── LoginController.php
│   │   │   │   ├── RegisterController.php
│   │   │   │   ├── ResetPasswordController.php
│   │   │   │   └── VerificationController.php

インストール済みのパッケージの確認

Homebrewを通して、インストールを行ったパッケージの確認はbrew listで行います。list実行時は、treeのパッケージのみインストールを行ったので、treeのみ表示されます。パッケージのインストールをすればここに表示されるパッケージ情報も増えることになります。


 $ brew list
tree

インストールができるパッケージの確認

Homebrewを使ってインストールできるパッケージはbrew searchで行うことができます。多数のパッケージがHomebrewを通してインストールできることが確認できます。


laravel $ brew search
a2ps                                     liboping
a52dec                                   libopkele
aacgain                                  libopusenc
aalib                                    libosinfo

HomebrewでインストールできるパッケージはHomebrewのサイトにも記載されています。

brew searchのあとに名前を指定するとシステムへのインストールの状況も確認することができます。下記の例ではmysqlを指定します。システムにMySQLがインストール済みの場合は、名前の横にチェックが表示されます。


 $ brew search mysql
==> Formulae
automysqlbackup            mysql-connector-c          mysql@5.5
mysql ✔                    mysql-connector-c++        mysql@5.6
mysql++                    mysql-sandbox              mysql@5.7
mysql-client               mysql-search-replace       mysqltuner
mysql-cluster              mysql-utilities

==> Casks
homebrew/cask/mysql-connector-python     homebrew/cask/navicat-for-mysql
homebrew/cask/mysql-shell                homebrew/cask/sqlpro-for-mysql
homebrew/cask/mysql-utilities

パッケージのアンインストール

パッケージのアンインストールはbrew unistallコマンドで行うことができます。アンインストール後は、brew listコマンドを実行してもtreeは表示されなくなります。


$ brew uninstall tree
Uninstalling /usr/local/Cellar/tree/1.8.0... (8 files, 117KB)                                   libosinfo
$brew list

パッケージの情報を確認する

brew infoコマンドで個別パッケージの詳細情報を確認することができます。

バージョン情報やmacへのインストール情報だけではなく一定期間毎にインストールされた数や依存関係の情報(依存関係のあるパッケージがあれば)も表示されます。


vue $ brew info tree
tree: stable 1.8.0 (bottled)
Display directories as trees (with optional color/HTML output)
http://mama.indstate.edu/users/ice/tree/
/usr/local/Cellar/tree/1.8.0 (8 files, 117KB) *
  Poured from bottle on 2019-06-08 at 17:19:24
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/tree.rb
==> Analytics
install: 28,859 (30 days), 87,988 (90 days), 356,802 (365 days)
install_on_request: 26,127 (30 days), 79,081 (90 days), 315,269 (365 days)
build_error: 0 (30 days)

パッケージのパスを確認する

インストールしたパッケージの実行のパスを確認するためには–prefixを利用します。


% brew --prefix git
/usr/local/opt/git

gitのパスは/usr/local/opt/gitであることがわかります。

バージョンの確認をする

Mac上にインストールしたHomebrewのバージョンを確認するためには、homebrew –versionコマンドを実行します。


$ brew --version
Homebrew 2.1.4
Homebrew/homebrew-core (git revision 0385; last commit 2019-06-07)

問題がないかチェックを行う

Homebrewに問題がないかのチェックはhomebrew doctorで行います。


$ brew doctor
Your system is ready to brew.
homebrew doctorを実行するとそれぞれの環境において様々なWARNINGがでる場合があります。ネット上に処置方法が多々出ているので参考にしてください。WARNING種類によるかもしれませんがWARNINGが出ていてもインストールやアンインストールができないわけではありません。

不必要になった古いバージョンを削除する

インストールしたパッケージの古いバージョンを削除する場合はhomebrew cleanupを実行します。インストール直後のHomebrewの環境では実行しても何も起こりません。


 $ brew cleanup

Homebrewやパッケージをアップデートする

brew updateコマンドでHomebrewのアップデートを行うことができます。更新がない場合は”Already up-to-date.”が表示されます。最新版という意味です。


 $ brew update
Already up-to-date.

brew upgradeではインストールしたパッケージのアップデートを行うことができます。何も更新がないと実行しても何も表示されません。


$ brew upgrade

アップデートがないかの確認はbrew outdatedで行います。何もないと実行しても何も表示されません。


$ brew outdated

Homebrewのインストールから使用頻度の高いコマンドについて説明を行ってきましたが特別難しい箇所はありません。ぜひ本文書を参考にHomebrewを活用してパッケージ管理を行ってください。

サービスを自動機能するbrew services

Homebrewを使ったインストールしたデータベースMySQLはmysql.server startコマンドを使用することで起動を行うことができます。しかし、MACを再起動する度に上記コマンドを実行する必要があります。毎回再起動を行う毎に起動コマンドを実行する代わりにHomebrew Servicesを利用することで再起動時に自動起動させることができます。MySQLに限らずさまざまなパッケージがHomebrew Servicesを利用して起動管理を行うことができます。

brew servicesのインストール

homebrew serviceを使用するにはインストールが必要になりますが、下記のコマンドを実行すると自動でインストールが開始されます。


$ brew services list
==> Tapping homebrew/services
brew services listはhomebrewでインストールしたパッケージでHomebrew Servicesがサービス管理できるパッケージの状況を一覧表示するコマンドです。

実行後、homebrew serviceで管理できるMySQLとredisがあることを確認できます。どちらも自動起動の設定は行っていないので、ステータスはstoppedとなっています。


$ brew services list
Name      Status  User Plist
mysql@5.7 stopped
redis     stopped

サービスの自動起動設定

brew servicis startコマンドを利用して、MySQLの起動を行いステータスの確認を行うと以下のように表示されます。


$ brew services start mysql@5.7
==> Successfully started `mysql@5.7` (label: homebrew.mxcl.mysql@5.7)
~ $ brew services list
Name      Status  User    Plist
mysql@5.7 started reffect /Users/reffect/Library/LaunchAgents/homebrew.mxcl.mysql@5.7.plist
redis     stopped

サービスの自動起動停止

brew services stopコマンドを実行すると自動起動設定したサービスを停止することができます。


$ brew services stop mysql@5.7
Stopping `mysql@5.7`... (might take a while)
==> Successfully stopped `mysql@5.7` (label: homebrew.mxcl.mysql@5.7)

サービスの起動

自動起動ではなくサービスの起動のコマンドも準備されています。brew services runコマンドを実行すると起動します。(自動起動の設定ではありません。)


$ brew services run mysql@5.7
==> Successfully ran `mysql@5.7` (label: homebrew.mxcl.mysql@5.7)

ChomeやFirefoxなどGUIのインストール

brew searchコマンドを実行した結果、非常にたくさんのパッケージをHomebrewを使ってインストールできることは確認できます。しかし、ChromeやFirefoxなどのGUIの情報は見つけることができません。Firefoxのインストールを通してGUIアプリケーションのインストール手順を確認していきましょう。

brew searchはformula名(パッケージの名前)を入力して実行すると指定したパッケージがインストールができるかどうか確認を行うことができます。firefoxを検索してみましょう。これまでには見かけることのなかったCasksという単語が確認できます。


$ brew search firefox
==> Casks
homebrew/cask-versions/firefox-beta
homebrew/cask-versions/firefox-developer-edition
homebrew/cask-versions/firefox-esr
homebrew/cask-versions/firefox-nightly
homebrew/cask/firefox
Firefox以外のGUIのアプリケーションをインストールしたい場合は、brew searchコマンドで検索を使って探してみてください。インストール方法はこれから説明するFirefoxと同じです。

Casksとは

Caskを利用することで、ChromeやFirefoxなどのmasOSのGUIアプリケーションをインストール、管理することができるようになります。CaskのおかげでHomebrewで管理下におけるアプリケーションの数を格段に増やすことができます。ChromeやFirefox以外のブラウザであるOpere, BraveなどもCaskを使ってインストールすることができます。

Firefoxのインストール(brew install)

先程brew searchでfirefoxの情報が検索できたので、これまで通りbrew installコマンドでfirefoxのインストールを行ってみます。(Casksを意図的に無視します)

brew installコマンドではErrorメッセージ(Error: No formulae found in taps.)にあるようにfirefoxを見つけることができず失敗に終わります。


 $ brew install firefox
Updating Homebrew...
==> Auto-updated Homebrew!
Updated 1 tap (homebrew/core).
==> New Formulae
drone-cli
     .
     .
Error: No previously deleted formula found.
==> Searching for similarly named formulae...
Error: No similarly named formulae found.
==> Searching taps...
==> Searching taps on GitHub...
Error: No formulae found in taps.
homebrewで管理されているパッケージは日々更新が行われており、brew installを実行するとUpdating Homebrew…と表示され情報が更新されていることがわかります。ここでは新たにdrone-cliがNew Formulaeとして追加されています。brewをしばらく使用しない場合はかなりの数のNew FormulaeとUpdated Formulaeの情報が更新されるためインストールに時間がかかる場合があります。

Firefoxのインストール(brew cask install)

brew caskコマンドは廃止になり、実行するとエラーになります。brew install firefox –caskコマンドを実行してください。brew cask listコマンドもbrew list –caskコマンドになります。」

brew installではインストールが失敗しましたが、caskを利用することでインストールすることができます。caskを利用する場合は、installの前にcaskを挿入します。

caskを使用するためには事前になにか準備をする必要はありません。以下にあるようにbrew caskコマンドを利用するとcaskに関する情報がシステムにダウンロードされ、そこからパッケージのインストールが開始されます。caskに関する情報がダウンロードされるのはbrew caskを最初に実行した時のみです。


$ brew cask install firefox
==> Tapping homebrew/cask
Cloning into '/usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask'...
remote: Enumerating objects: 3692, done.
remote: Counting objects: 100% (3692/3692), done.
remote: Compressing objects: 100% (3682/3682), done.
remote: Total 3692 (delta 24), reused 579 (delta 8), pack-reused 0
Receiving objects: 100% (3692/3692), 1.21 MiB | 1.43 MiB/s, done.
Resolving deltas: 100% (24/24), done.
Checking out files: 100% (3673/3673), done.
Tapped 1 command and 3588 casks (3,698 files, 3.9MB).
==> Satisfying dependencies
==> Downloading https://download-installer.cdn.mozilla.net/pub/firefox/releases/
######################################################################## 100.0%
==> Verifying SHA-256 checksum for Cask 'firefox'.
==> Installing Cask firefox
==> Purging files for version 67.0.1 of Cask firefox
==> Moving App 'Firefox.app' to '/Applications/Firefox.app'.
🍺  firefox was successfully installed!

インストールメッセージの通り、Applicationsディレクトリの中にFirefoxがインストールされているはずです。

Homebrewでインストールを行ったため、FirefoxはHomebrewの管理下におかれます。brew listコマンドではなくbrew cask listでインストールされたFirefoxを確認することができます。


$ brew cask list
firefox

caskでインストールしたパッケージの削除

caskを使ってインストールしたパッケージはbrew cask uninstall パッケージ名で削除を行います。

Tapsとは

brew cask installを実行した際にTappingやTapsという単語がありましたが、Homebrewを使う上で知っておかなければならないものの一つです。


$ brew cask install firefox
==> Tapping homebrew/cask
Cloning into '/usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask'...

Tapsは、Homebrewではrepositories(リポジトリ:日本語では貯蔵庫)のことを表しており、Tapそれぞれが管理する複数のFormula(パッケージ群)を持っています。例えば上記にあるようにbrew cask installを実行したことでhomebrew/caskというTapがHomebrewに追加されました。

この追加したTapの中には、複数のFormulaが入っており、/usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask/Casksの下にFormulaのファイルが保存されています。

Tapの確認(brew tap)

Homebrewで管理しているTapはbrew tapで確認することができます。


 $ brew tap
homebrew/cask
homebrew/core

homebrew/coreはHomebrewをインストールした際に一緒に設定されているデフォルトTapです。homebrew/caskはbrew cask install実行時に追加されたTapです。

Tapを追加

Tapをさらに追加することも削除することも可能です。追加することでさらにたくさんのパッケージをHomebrewでインストール、管理できるようになります。Braveというブラウザのインストールを例にTapの追加を説明していきます。

例えばbraveというブラウザをインストールしたい場合にbrew search braveを実行します。


 $ brew search brave
==> Casks
brave-browser
homebrew/cask-versions/brave-browser-beta
homebrew/cask-versions/brave-browser-dev

serachの結果braveに関するパッケージは3つ表示されました。Casksの下のbrave-browserのインストールは先程のFireFoxと同様にbrew cask install brave-browserで行うことができます。brave-browserの下に表示されている2つのパッケージについてインストール方法を確認していきます。

brave-broser-betaとbrave-browser-devは、homebrew/cask-versionsのTap下にあるため、名前だけ入力してインストールしても失敗します。


$ brew cask install brave-browser-beta
Error: Cask 'brave-browser-beta' is unavailable: No Cask with this name exists.

先にhomebrew/cask-versionsのTapの追加を行います。brew tapコマンドを利用して、Tapの追加と確認を行っています。


$ brew tap homebrew/cask-versions
==> Tapping homebrew/cask-versions
Cloning into '/usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask-versions'...
remote: Enumerating objects: 200, done.
remote: Counting objects: 100% (200/200), done.
remote: Compressing objects: 100% (196/196), done.
remote: Total 200 (delta 10), reused 30 (delta 1), pack-reused 0
Receiving objects: 100% (200/200), 85.38 KiB | 328.00 KiB/s, done.
Resolving deltas: 100% (10/10), done.
Tapped 171 casks (218 files, 327.5KB).

Tapの追加が完了したら、brew tapコマンドにhomebrew/cask-versionsが追加されていることが確認できます。


$ brew tap
homebrew/cask
homebrew/cask-versions
homebrew/core

再度brave-browser-betaのインストールを実行します。先程失敗しましたが、新たにTapを追加するとインストールを行うことができます。Tapを追加することでインストール、管理できるパッケージが増えることが確認できました。


 $ brew cask install brave-browser-beta
==> Satisfying dependencies
==> Downloading https://github.com/brave/brave-browser/releases/download/v0.66.8
==> Downloading from https://github-production-release-asset-2e65be.s3.amazonaws
######################################################################## 100.0%
==> Verifying SHA-256 checksum for Cask 'brave-browser-beta'.
==> Installing Cask brave-browser-beta
==> Moving App 'Brave Browser Beta.app' to '/Applications/Brave Browser Beta.app
🍺  brave-browser-beta was successfully installed!

homebrew/cask-versionsを追加後に再度braveを検索すると先程まで表示されていたhomebrew/cask-versions/が消えて、インストールされているパッケージにチェックがついていることを確認できます。


$ brew search brave
==> Casks
brave-browser              brave-browser-beta ✔       brave-browser-dev