brew install したのにコマンドが使えない(keg-only でリンクされない)
keg-only の formula は Cellar に入るだけで PATH へリンクされない。
macOS 標準版と衝突するものが該当する。
`brew info <formula>` が出す PATH 設定を反映するか `brew link` する。
公開:
要約
brew install は成功したのにコマンドが見つからない、あるいは古いバージョンが呼ばれる場合、その formula は keg-only である可能性が高い。
keg-only とは、Cellar にはインストールされるが既定の prefix へリンクされない状態を指す。
多くのツールはそこを見に行かないため、入れたのに使えないように見える。brew info <formula> が理由と PATH の通し方を教えてくれる。
よくある原因
- keg-only 指定: macOS 標準のソフトウェアを覆い隠すことを避けるため、意図的にリンクされていない。
- PATH の優先順位:
/usr/binの標準版が先に見つかり、Homebrew 版まで到達していない。 - 案内の未反映:
brew infoが出す PATH の追記を実行していない。 - link 未実行・失敗:
brew linkしていない、または既存ファイルと衝突して失敗している。
解決策
1. keg-only かどうかを確認する
brew info <formula>keg-only の場合は理由と、PATH に含めるための具体的な設定が表示される(公式 FAQ(新しいタブで開く))。
2. 案内された PATH 設定を反映する
echo 'export PATH="/opt/homebrew/opt/<formula>/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc<formula> と prefix は brew info の出力に合わせる。
3. どの実体が呼ばれているか確認する
which -a <command>複数行が出る場合、上に出た方が実際に実行される。
想定と違うなら PATH の順序を調整する。
4. 必要ならリンクする
brew link <formula>システム標準のソフトウェアを覆い隠す副作用があるため、影響を理解したうえで使う。
衝突する場合はリンクせず、PATH の順序で切り替える方が安全である。