Homebrew¶
- 目次
- Homebrew
Homebrew は、サードパーティ製のmacOS用ソフトウェア管理ツールです。コマンドラインツールとして提供されています。
公式サイト(日本語ページ)
https://brew.sh/index_ja
Homebrew概要¶
用語¶
- formula
ソースコードからビルドされたパッケージの定義。複数形がformulae。ソースコードのURL、ビルド定義、依存関係、ビルド済みバイナリ(なければインストール時にビルドが実施される)。 - cask
バイナリのみが提供されるパッケージの定義。macOSネイティブアプリケーション、非オープンソースソフトウェア、フォントなどが対象となります。 - tap
パッケージ定義のあるディレクトリ(Gitリポジトリなど)。標準tapにない定義を使用する際、tapの参照を追加することでインストールなどの管理ができるようになります。
Homebrewのセットアップ¶
Homebrew のインストール¶
公式サイトに記載されている次のコマンドを実行します。
% /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
実行結果を表示
Homebrew は、Xcode コマンドラインツールを必要とするので、macにXcodeがインストールされていない場合、インストールの途中でXcodeをダウンロードしインストールします。
しばらく時間が経過すると、インストールが完了します。Homebrewのコマンドは/opt/homebrew/binの下に入りますが、PATHが通っていないとインストールメッセージに警告と処置方法が表示されます。
インストールメッセージ(PATHが通っていない時)を表示
ターミナルで、指定されたコマンドを実行します。
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/<ユーザー名>/.zprofile eval "$(/opt/homebrew/bin/brew shellenv)"
ターミナルから brew help コマンドを実行できればインストールは完了です。
使い方¶
Homebrewの管理¶
Homebrewの診断¶
Homebrewが正しく動作するかを診断するコマンドです。
- 健全時
% brew doctor Your system is ready to brew.
A newer Command Line Tools release is available.¶
次の警告メッセージが表示されることがあります。 表示
Xcodeのバージョンが最新でないと警告として表示されますが、通常使用していて問題なければXcodeを最新にする必要はないでしょう。
2024年半ばに macOS 13.4(最新バージョンは14.6)環境で、上述のメッセージにあるように Command Line Toolsを入れ直しても警告は継続して表示されました。
Command Line Tools(CLT)のバージョンを確認する方法を探したところ、次が見つかりました。(XcodeとCLTを両方インストールした環境での確認方法はすぐ出てきましたが、CLT単独でインストールしている場合の確認方法はすぐには出てこず)
~ % pkgutil --pkg-info=com.apple.pkg.CLTools_Executables package-id: com.apple.pkg.CLTools_Executables version: 14.3.1.0.1.1683849156 volume: / location: / install-time: 1723194457
- install-timeは、UNIX timeの秒表記で、上述は 2024-08-09 です。
MacOS 13 では、標準的なインストール方法では CLTのバージョンが14なので、現時点では警告になってしまいますが、無理にCLT 15を入れるようにする必要もない(かえって悪影響の懸念)ので、このまま使用を継続します。
Homebrewの更新¶
Homebrew自身を最新に更新するコマンドです。リポジトリ情報(tap)の情報を更新するので、最新の状況を調べる時は先にこのupdateを実行しておくとよいです。
% brew update
実行結果を表示
インストールしたソフトウェアの一覧¶
サブコマンド list でインストール済みのソフトウェア一覧を表示します。
% brew list ==> Formulae ca-certificates mpdecimal python@3.10 sqlite gdbm openssl@1.1 readline xz ==> Casks microsoft-remote-desktop zulu11
ソフトウェアの検索¶
サブコマンド search で検索キーワードを指定して検索します。
% brew search jdk ==> Formulae openjdk openjdk@11 openjdk@8 jd mdk cdk ==> Casks adoptopenjdk oracle-jdk semeru-jdk-open jdk-mission-control oracle-jdk-javadoc microsoft-openjdk sapmachine-jdk
- 検索キーワードを、'/'で囲むと正規表現として扱われます。
例:brew search '/.*shark/'
インストール済みソフトウェアの更新¶
インストール済みソフトウェアに更新があるか確認¶
% brew outdated
- 注)本サブコマンド実行前に、パッケージ定義を更新するためサブコマンド update を実行しておくのが望ましい
実行結果の例を表示
更新の適用¶
% brew upgrade
実行結果(単一のパッケージを更新)の例を表示
cask¶
以前は、--cask
オプションを使用していましたが、今は使用する必要がなくなっています。
更新の停止(バージョン固定)¶
何らかの理由で、パッケージのバージョンアップを抑止したい場合があります。
casks 以外であれば、pinサブコマンドでupgradeを抑止できます。
casks のパッケージでは、pinサブコマンドは適用できません。
- 回避策)
/opt/homebrew/Caskroomの下にあるパッケージのディレクトリを削除すると、そのパッケージは更新対象から除外されます。
インストール¶
サブコマンド install で指定したパッケージをインストールします。
cask¶
cask(macOSネイティブアプリケーション)で定義されるパッケージをインストールするときは、以前は--cask
オプションを指定する必要がありましたが、今は省略できるので指定することはなくなりました。
caskで定義されたパッケージをインストールすると、Launchpadにアイコンが追加され、そこから実行できます。macOSネイティブアプリケーションなので。
アンインストール¶
uninstall¶
サブコマンド uninstall で指定したパッケージをアンインストールします。
--cask
オプションの指定は不要です。
cleanup¶
複数バージョンがインストールされている状況で(例、brew upgrade で最新バージョンをインストールしたときなど)、最新バージョン以外を削除します。
再インストール¶
サブコマンド reinstall で指定したパッケージを再インストールします。実際にはアンインストール後にインストールを実施するようです。
パッケージ情報¶
サブコマンド info で指定したパッケージの情報を表示します。
パッケージの調査¶
パッケージが依存しているformulaの確認¶
brew dips --tree xxx
パッケージが依存されているformulaの確認¶
brew uses --installed xxx
アプリケーションのインストール¶
コマンド環境¶
ディレクトリツリー表示¶
% brew install tree
インストール後、tree でカレントディレクトリ以下のツリー構造がコンソールに表示されます。
ssh関連¶
sshpass¶
ssh接続でパスワード認証の際にパスワードをコマンドライン・ファイル・環境変数から与えることでパスワード入力を省略するツール。
Homebrew公式リポジトリはセキュリティ上の理由でsshpassを扱わないようにしているので、tapを指定してインストールします。
brew tap esolitos/ipa brew install esolitos/ipa/sshpass
使い方は、次のようにsshpassのコマンドラインオプションにパスワードと、そのパスワードで接続するsshコマンドを指定します。
すると、sshの接続にパスワードが適用されます。
% sshpass -p "my password" ssh foo@example.com
コマンドラインをスクリプト化やシェル関数に定義することができるようになるのがメリットですが、パスワードがファイルに記載されることになるので要注意です。
zsh-autosuggestions¶
コマンドライン履歴を補完対象にする。
% brew install zsh-autosuggestions : To activate the autosuggestions, add the following at the end of your .zshrc: source /opt/homebrew/share/zsh-autosuggestions/zsh-autosuggestions.zsh :
インストールのメッセージにある通り、~/.zshrc に上述のコードを追記 source /opt/homebrew/share/zsh-autosuggestions/zsh-autosuggestions.zsh
[→]キー, C-f, C-e で候補が確定
watch¶
オプションで指定したコマンドを周期的に実行し、コンソールに全画面で表示します。
% brew install watch
デスクトップツール¶
KeePassXC¶
パスワード管理ツールです。
~ % brew install keepassxc
ネットワーク¶
Wireshark¶
Wiresharkは、GUIを持つアプリケーションでネットワークパケットのキャプチャと表示を行います。
https://formulae.brew.sh/formula/wireshark
- コマンドライン版のインストール
% brew install wireshark
- GUI版のインストール
% brew install --cask wireshark
アプリケーションに Wireshark が追加されます。
Windows App¶
Windows OSのマシンにリモートデスクトップ接続するアプリケーションです。
% brew install windows-app
OpenJDK(Java開発キット)¶
オープンソースのOpenJDKは、複数組織からビルド済みバイナリが提供されています。Homebrew で入手する際のパッケージ名とtapを次の表に示します。
組織名 | ディストリビューション名 | brew パッケージ名 | brew tap |
---|---|---|---|
Oracle | Oracle JDK | oracle-jdk | homebrew-cask |
oracle-jdk@<NN> | homebred-cask | ||
Oracle OpenJDK | openjdk | homebrew | |
openjdk@<NN> | homebrew | ||
Oracle OpenJDK Early Access | java@beta | homebred-cask | |
Eclipse | Temurin | temurin | homebrew-cask |
temurin@<NN> | homebrew-cask-versions | ||
Azul Systems | Zulu | zulu | homebrew-cask |
zulu@<NN> | homebrew-cask-versions | ||
ZuluFx | zulufx | homebrew-cask | |
Amazon | Corretto | corretto | homebrew-cask |
corretto@<NN> | homebrew-cacsk-versions | ||
BellSoft | Liberica JDK | liberica-jdk<NN>[-full | lite] | bell-sw/homebrew-liberica |
Microsoft | Microsoft Build OpenJDK | microsoft-openjdk | homebrew-cask |
microsoft-openjdk@<NN> | homebrew-cask-versions | ||
SAP | SapMachine | sapmachine-jdk | homebrew-cask |
- 凡例
- <NN> バージョン番号が付与され、複数バージョン混在を許容する(例 temurin@11、OpenJDK 11の実装)
- [-full | -lite] liberica-jdkは、標準版の他にfull版、lite版があり、含まれる機能に違いがある
バージョンのないパッケージ名は、その時点の最新版を示します(formulaの更新が滞っていない限り)。
Zulu¶
Azul Systems社がOpenJDKソースをビルドし提供する Zulu JDK のパッケージです。
Zulu JDKのバージョン別パッケージは、追加のtapでリポジトリを設定します。
% brew tap homebrew/cask-versions
tapを設定したら、Zulu JDKのパッケージがリストおよびインストール可能になります。
zulu 11をインストールします。
% brew install zulu@11
Zulu 11は、/Library/Java/JavaVirtualMachines/zulu-11.jdk
の下にインストールされるので、/usr/libexec/java_homeで使用するjavaの切り替え対象となります。
Liberia JDK¶
BellSoft社が提供するOpenJDKディストリビューションのLiberica JDKのパッケージです。
Liberica JDKのパッケージは、追加のtapでリポジトリを設定します。
% brew tap bell-sw/liberica
tapを設定したら、liberica JDKのパッケージがリストおよびインストール可能になります。
% brew install liberica-jdk17-full
Liberica JDKには、通常版、full版、lite版と3種類があり、含まれる機能に差異があります。
Liberia-jdk17-full は、/Library/Java/JavaVirtualMachines/liberica-jdk-17-full.jdk の下にインストールされるので、/usr/libexec/java_homeで使用するjavaの切り替え対象となります。
Oracle OpenJDK¶
Oracle社が提供するOpenJDK distributionのパッケージです。その時点での最新バージョンのOracle OpenJDKは次のコマンドでインストールできます。半年毎の更新で、LTSのサポートはありません。
% brew install openjdk
openjdk(version 19) は、/opt/homebrew/Cellar/openjdk/19 にインストールされます。また、次のシンボリックリンクが生成されます。
/opt/homebrew/opt/java -> ../Cellar/openjdk/19 /opt/homebrew/opt/openjkd -> ../Cellar/openjdk/19
openjdkは、keg-onlyのため、/usr/libexec/java_home で使用するjavaの切り替え対象とするためには、次のリンクを手動で作成します。
% sudo ln -sfn /opt/homebrew/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk
% /usr/libexec/java_home -V Matching Java Virtual Machines (3): 19 (arm64) "Homebrew" - "OpenJDK 19" /opt/homebrew/Cellar/openjdk/19/libexec/openjdk.jdk/Contents/Home :
Oracle JDK¶
JDK 17以降、NTFCライセンスまたはOTNライセンス、もしくは商用ライセンスで利用できます。
Homebrewでは、2024-05-25時点で次のformulaeが提供されています。
- oracle-jdk (最新版)
- oracle-jdk@17 (LTS版)
- oracle-jdk@21 (LTS版)
oracle-jdkは、最新バージョンに追従しているので、半年毎のリリースで更新されます。
oracle-jdk@17は、Oracle JDK 17(LTS)に固定されますが、2023年9月に次のLTS版であるJDK 21が出ているので1世代古いものになります。
oracle-jdk@21は、Oracle JDK 21(LTS)に固定されます。
JDKディストリビューション・バージョンの切り替え¶
Macでは、OpenJDKディストリビューションを複数インストールしたり、違うバージョンを複数インストールしたりすると、/Library/Java/JavaVirtualMachinesディレクトリの下にそれぞれディレクトリが作られ、その中にOpenJDKがインストールされます。
/usr/lib/java_home
コマンドに-V
オプション(大文字の'V')を指定して実行すると、現在インストールされているJDKのリストと、現在選択されているJDKが表示されます。
% /usr/libexec/java_home -V Matching Java Virtual Machines (2): 17.0.2+9-LTS (arm64) "BellSoft" - "BellSoft Liberica JDK 17.0.2+9" /Library/Java/JavaVirtualMachines/liberica-jdk-17-full.jdk/Contents/Home 11.0.13 (arm64) "Azul Systems, Inc." - "Zulu 11.52.13" /Library/Java/JavaVirtualMachines/zulu-11.jdk/Contents/Home /Library/Java/JavaVirtualMachines/liberica-jdk-17-full.jdk/Contents/Home
上述の実行例は、次の2つのJDKがインストールされており、
- 17.0.2+9-LTS (BellSoft Liberica JDK 17.0.2+9)
- 11.0.13 (Zulu 11.52.13)
現在選択されているJDKのパスは次/Library/Java/JavaVirtualMachines/liberica-jdk-17-full.jdk/Conents/Home
コマンドラインで現在のシェル環境のJDKバージョンを切り替え¶
環境変数JAVA_HOME
に定義されたパスのJDKが選択されます。
JDKのパスは長いので、/usr/libexec/java_home
コマンドに-v
オプション(小文字の'v')でバージョンを指定して実行して取得します。
% export JAVA_HOME=`/usr/libexec/java_home -v 11`
% java --version openjdk 11.0.13 2021-10-19 LTS OpenJDK Runtime Environment Zulu11.52+13-CA (build 11.0.13+8-LTS) OpenJDK 64-Bit Server VM Zulu11.52+13-CA (build 11.0.13+8-LTS, mixed mode)
設定ファイルでJDKバージョンを指定¶
zshの設定ファイルに記述します。後からコマンドラインで変更できます。
- .zshrc
export JAVA_HOME=$(/usr/libexec/java_home -v 17)
Java開発ツール¶
SceneBuilder¶
JavaのGUIライブラリ OpenFX(旧JavaFX)の画面レイアウト作成ツール SceneBuilderです。
% brew install --cask scene builder
VisualVM¶
Javaのメモリ使用状況を可視化するツール VisualVM です。
% brew install visualvm
インストールするとLaunchpadにVisualVMが追加されるので、これをクリックしてVisualVMを起動します。
Gradle¶
Javaのほぼデファクトスタンダードな1ビルドツール。
% brew install grade
- [1] Javaでマルチプラットフォーム・IDE非依存なビルドツールでは、Apache ANT、Apache Maven、Gradleが主流。最近は MavenとGradleで二分している
Tomcat¶
Webアプリケーションサーバー(コンテナ)です。
% brew install tomcat
インストールすると、/opt/homebrew/opt/tomcat/ に展開されます。
実行は、/opt/homebrew/opt/tomcat/bin/catalina runです。
統合開発環境¶
eclipse¶
% brew search eclipse :(略) ==> Casks eclipse-cpp eclipse-java eclipse-php nodeclipse eclipse-dsl eclipse-javascript eclipse-platform redeclipse eclipse-ide eclipse-jee eclipse-rcp eclipse-installer eclipse-modeling eclipse-testing
ここでは、Java SE環境の開発をしたいので、eclipse-javaをインストールします。
% brew install --cask eclipse-java
アプリケーションに Eclipse Java が追加されます。
トラブル¶
インストールした直後は問題なく動作していましたが、macを再起動したところ、eclipseが起動しなくなってしまいました。
「アプリケーション"Eclipse Java"を開くためのアクセス権がありません。このコンピュータまたはネットワークの管理者に問い合わせて下さい」との表示がされる。
- Finderからアプリケーションの中のEclipse Javaを右クリックし情報を見るで、共有とアクセス権を調べたところ、ユーザーに対して読み/書きとなっており問題なし
- eclipseのインストーラーdmgファイルをeclipseサイトからダウンロードしインストールしたものは問題なく動作する
- workspaceを書類フォルダ下に設定したのではないか? 書類フォルダは保護が働くのでアプリケーションに許可を与える必要がある。との情報を得た。
確かに上述問題では書類フォルダの下にworkspaceを設定していた。- システム環境設定 > セキュリティとプライバシー > プライバシー タブ選択、左ペインのファイルとフォルダを選択、右ペインを見ると eclipseは存在しない。
本トラブル後、brewでアンインストールし、Eclipseサイトからdmgファイルをダウンロードしインストールして使っていました。1ヶ月後にEclipseを一度アンインストールし、確認がてらbrewでインストールしたところ本トラブルは発生しませんでした。原因は不明のまま。
IntelliJ IDEA¶
% brew search intelliji ==> Formulae intercal ==> Casks intellij-idea-ce19 intellij-idea19 intellij-idea intellij-idea-ce
- intelliJ-idea19とintelliJ-ideaは有償のUltimate版、
- IntelliJ-idea-ce19とIntelliJ-idea-csは無償のCommunity版
IntelliJ IDEA Community 版のインストール¶
% brew install --cask Intellij-idea-ce
IntelliJ IDEA Ultimate 版のインストール¶
% brew install --cask intellij-idea
インストールが完了すると、LaunchpadにIntelliJ IDEAのアイコンが追加されます。
Visual Studio Code¶
% brew install --cask visual-studio-code
JavaScript開発¶
Node.js¶
% brew install node
Rust開発¶
rustup¶
% brew install rustup-init
詳しくは、Rust開発環境(Mac) ページに記載
開発支援ツール¶
asdf¶
各種プログラミング言語の実行環境の複数バージョン切り替えの管理を支援するツールです。
rbenv , npm , などの個別の言語環境の管理ツールを統合したものです。
% brew install asdf
mise¶
asdfを置き換える目的で作られたツール。設定ファイル(.tool-versions)、プラグインはasdfと互換性を持っています。
公式サイト https://mise.jdx.dev
% brew install mise : % echo 'eval "$(mise activate zsh)"' >> ~/.zshrc
読み方は、meez(ミーズ)です。
activateはもしかすると不要かも。
ドキュメントツール¶
Sphinx¶
ドキュメント作成ツールです。
% brew install sphinx-doc
- brewには、sphinxというパッケージがありますが、これは別なツールです。
- sphinx-doc 4.4.0は、python@3.10に依存しているので、上述のインストールコマンドでpython@3.10もインストールされます。
- "keg-only"としてインストールされるので、デフォルトではコマンドへのパスが設定されていません。パス設定等を自力でする必要があります。
環境設定¶
sphinx-docを使うときだけ必要な設定をするようにします。
- ~/.zshrc
# set sphinx-doc enironment setsphinx () { PATH="/opt/homebrew/opt/sphinx-doc/bin:$PATH" }
- pythonの設定(要記述)
pythonバージョンの混在と使い分け¶
macOS Big Sur(11.6)では、python バージョン2系(2.7.16)と3系(3.8.9)がインストールされています。
さらに、brewでpython 3.10.1がインストールされました。
macOS Ventura (13.4)では、OS標準ではPythonがインストールされません。Xcode command line toolsをインストールすると、python バージョン3系(3.9.6)がインストールされます(/usr/bin/python3)。
Homebrewでは、python@3.9, python@3.10, python@3.11, python@3.12 がインストール可能です(2024年9月29日現在)。
/opt/homebrew/bin ディレクトリの下に、 python3、python3.12 などのコマンドがインストールされます。python3は、最新のバージョンへのリンク、特定のバージョンへのリンクはpython3.10 などとなっています。
画像ツール¶
ffmpeg¶
動画・音声の記録、変換、再生などをおこなうコマンドラインツール。
% brew install ffmpeg
多数の依存パッケージがインストールされます。
動画情報の表示¶
% ffprobe -show_streams -print_format json mymovie.mov
動画形式の変換¶
% ffmpeg -i input.mov output.mp4
-iオプションで変換元の動画ファイルを指定、次に変換後の動画ファイルを指定すると、入力ファイルと出力ファイルの拡張子から変換します。
さらに変換の細部をオプションを追加して指定できます。
動画からGIFアニメーションへの変換¶
% ffmpeg -i input.mov -r 8 output.gif
-iオプションで変換元の動画ファイルを指定、変換後のGIFファイル名を指定すると動画ファイルからGIFアニメーションファイルを生成します。デフォルトではフレームレートがそのまま生成されてしまうので、-rオプションで指定します。
データベース¶
H2 Database¶
% brew install h2
起動・終了¶
- サービスとして起動
% brew service start h2
- 起動してH2 Console(Web)を開く
% /opt/homebrew/opt/h2/bin/h2
InfluxDB¶
- データベース本体のインストール
~ % brew install influxdb
- コマンドラインのクライアントをインストール
~ % brew install influxdb-cli
サービスとして起動¶
% brew service start influxdb
バックグラウンドプロセスとして起動¶
~ % INFLUXD_CONFIG_PATH="/opt/homebrew/etc/influxdb2/config.yml" /opt/homebrew/opt/influxdb/bin/influxd
データベースのディレクトリ¶
/opt/homebrew/var/lib/influxdb2/
ディレクトリにInfluxDBのストレージが生成されました。
PostgreSQL¶
オープンソースのRDBMSです。
バージョンアップにより既存のデータが引き継げないことがあるので、Homebrewではバージョン別に formula が提供されています。
インストール¶
~% brew install postgresql@17
インストール時のメッセージからメモ
- デフォルトのデータベースクラスタ(1つのサーバーインスタンスで管理されるデータベースの集合)が次のコマンドで生成された
initdb --locale=C -E UTF-8 /opt/homebrew/var/postgresql@17
デフォルトデータベース名:postgres、デフォルトポート:5432、データベースの所有者はbrew実行ユーザー名と同じ - アンインストール時は次のコマンドを実行して不要なシンボリックリンクを削除
brew cleanup --prune-prefix
- keg-onlyなので、PATHを設定するなら
echo 'export PATH="/opt/homebrew/opt/postgresql@17/bin:$PATH"' >> ~/.zshrc
- サービスとして起動(ログイン時に自動で起動)
brew services start postgresql@17
- コマンドとして起動
LC_ALL="C" /opt/homebrew/opt/postgresql@17/bin/postgres -D /opt/homebrew/var/postgresql@17
コマンドから接続¶
~% psql -h localhost -p 5432 postgres psql (17.2 (Homebrew)) "help"でヘルプを表示します。 postgres=#
Homebrewの仕組み¶
ディレクトリ構成¶
主要なディレクトリ
/opt/homebrew/ +-- Caskroom/ | +-- <パッケージ名> pkgファイル、.appファイル等が置かれている +-- Celler/ +-- Library/ | +-- Taps/ tapサブコマンドで追加したリポジトリ情報が置かれる | +-- homebrew/ | +-- homebrew-core | +-- homebrew-cask | +-- homebrew-cask-versions +-- bin/ +-- completions/ +-- sbin/ +-- etc/ +-- lib/ +-- opt/ +-- share/ +-- var/