公式スクリプトでHomebrewをアンインストールする
Homebrewには公式のアンインストールスクリプトがあり、説明どおりに動きます。注意すべきは範囲です。Homebrew本体だけでなく、Homebrew経由で入れたものもまとめて消える。この二つの重みは、いま何のためにここに来たかに左右されます。
ディスク容量だけが目的なら、消す前にHomebrewの実使用量を確認してください。特定のformulaだけが壊れているなら、環境ごと消す必要はありません。
先に進む前に、brew leaves と cask一覧を控えてください。次に公式アンインストーラを --dry-run で走らせ、出力を削除計画として読んでください。問題が一つのパッケージなら、ここで止めて brew uninstall を使うか、より安全なHomebrewのクリーンアップ手順に従ってください。
Homebrewをアンインストールすべきでないとき
次のいずれかに当てはまるなら、核オプションは避けます。
- 一つのformulaやcaskが壊れている:
brew uninstall <name>を使い、依存が孤児になったらbrew autoremove - 容量だけが必要:
brew cleanup -sは古い版とダウンロードを消し、プレフィックスは残す - Homebrew由来の
git、node、python、データベースサーバ、CLIツールがまだ要る。アンインストーラはCellarとCaskroomも連れていく - 同じMacで明日また同じ構成を入れる予定。下の一覧を書き出し、
brew cleanupで掃除してインストールは残す
アンインストールが向くのは、Homebrewを完全にやめるとき、壊れたインストールのあとにきれいなプレフィックスへ移るとき、もうそれらのパッケージが要らないマシンを消すときです。
プレフィックスを把握する:Intel、Apple Silicon、Rosettaの残骸
Homebrewの既定プレフィックスはチップで決まります。
| Mac | 既定プレフィックス | brew バイナリ |
|---|---|---|
| Apple Silicon | /opt/homebrew |
/opt/homebrew/bin/brew |
| Intel | /usr/local |
/usr/local/bin/brew |
何かを消す前に、実際に使っているものを確認します。
uname -m
brew --prefix
which brew
arm64 はApple Silicon。x86_64 はIntel(またはRosetta端末)。移行したApple Silicon Macでは、/usr/local 下の古いIntel Homebrewが /opt/homebrew と並存していることがあります。公式アンインストールスクリプトはマシンの既定を探し、arm64 では /usr/local も見てIntel側の残骸を逃しません。二つのプレフィックスを意図的に残すなら、--path で消したい側を指定します。
Intelで /usr/local 全体を手で消さないでください。他ソフトと共有されています。Homebrew自身の木だけを対象にする公式スクリプトを使います。
公式アンインストーラ
HomebrewのFAQは、Homebrew/installリポジトリのアンインストールスクリプトを指します。コマンドが変わった場合はそのページからコピーしてください。現行の一行は次のとおりです。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh)"
実行前にスクリプトを読みたい場合は、先にダウンロードします。
curl -O https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh
less uninstall.sh
/bin/bash uninstall.sh --help
便利なフラグ:
--dry-run(-nも可):削除予定だけを表示し、何も変えない。大事なマシンではここから始める--path=PATH:特定プレフィックスを消す(例:Apple Silicon上のRosetta時代/usr/local)--force:確認プロンプトをスキップ(NONINTERACTIVE設定時も暗黙に有効)--skip-cache-and-logs:キャッシュとログはそのまま
古いmxcl gistや、いまなお cd $(brew --prefix) して git ls-files で消す手順は無視してください。初期の /usr/local レイアウト向けで、現行インストールでは危険です。
スクリプトが実際に消すもの
アンインストーラはHomebrewプレフィックスとその下の bin、etc、include、lib、opt、sbin、share、var、Frameworks、それに Cellar と Caskroom を消します。
肝心なのは後者二つです。Cellarには各formulaのファイルがあり、Caskroomにはcaskメタデータがあります。Homebrewを消すとそれらも消え、経由で入れたCLIツールも同時に消えます。
あわせて ~/Library/Caches/Homebrew と ~/Library/Logs/Homebrew、システム側のHomebrewキャッシュ、/etc/paths.d/homebrew、/Applications と ~/Applications 内のHomebrew管理アプリも片付けます。
消す前に手元の一覧を書き出す
アンインストール前に、次の二コマンドで一覧を書き出します。
brew leaves > ~/Desktop/brew-formulae.txt
brew list --cask > ~/Desktop/brew-casks.txt
brew leaves は、他のインストール済みformulaやcaskに依存されていないformulaを列挙します。有用な出発点ですが、明示インストールした全履歴ではありません。再構築に使う前に両方のファイルを確認してください。
パッケージのデータとパッケージ本体は分けて考えます。ホーム配下の設定は残ることがありますが、/opt/homebrew/var や /usr/local/var のPostgresデータベースはまだHomebrewプレフィックス内です。アンインストーラは var も消すので、そこにあるデータも一緒に消えることがあります。必要なデータはプレフィックス外へバックアップしてから。サービスを使っているなら先に止めます。
brew services list
brew services stop --all
任意:先にformulaとcaskを消す
一気に核削除する代わりに段階的に解体したいなら、brew がまだ動くうちにパッケージを消します。
brew list --formula
brew uninstall --force $(brew list --formula)
brew list --cask
brew uninstall --cask --force $(brew list --cask)
brew autoremove
brew cleanup -s
これでCellarとCaskroomは空になりますが、Homebrew本体は残ります。var 下のデータが不安なときや、パッケージ領域だけ空けて後で小さめのツール群用に brew を残したいときに使います。Homebrew自体をやめるときは、公式アンインストーラでプレフィックス、tap、キャッシュまできれいに消してください。
アンインストールを実行する
--dry-runで実行し、すべてのパスを読む--dry-runなしで実行し、聞かれたらy、保護ディレクトリでsudoが要ればmacOSパスワードを入れる- 「possible Homebrew files were not deleted」などの一覧が出たら、ウィンドウを閉じる前にコピーする
スクリプトをダウンロードしたあとのdry-run例:
/bin/bash uninstall.sh --dry-run
リモート一行コマンドを使う場合も、フラグを渡しやすいよう先にダウンロードしてから /bin/bash uninstall.sh を実行してください。
残留ファイルのチェックリスト
終了時、スクリプトは一部のHomebrewらしきファイルを削除できなかったと示し、自分で消してほしいと続け、その一覧を出すことがあります。
そのパスが名前付きで出るのは通常ここだけです。Homebrewが作っていないディレクトリの権限が原因であることが多く、一覧は短いです。すでに消えたインストールでもう一度走らせても再出力されないので、端末を閉じる前に控えてください。
典型的な残留は、いま消したプレフィックス配下にあります。
- Apple Silicon:
/opt/homebrew/etc、share、var、Frameworksなど、空または所有権が中途半端なディレクトリ - Intel:
/usr/local下の同名。無関係な/usr/localツリーを推測で消さない
スクリプトがパスを示し、Homebrew専用だと確認できたら明示的に消します(-rf のあとに空白):
sudo rm -rf /opt/homebrew/share
その後確認:
ls /opt/homebrew
ls /usr/local/Homebrew
ls ~/Library/Caches/Homebrew
ls ~/Library/Logs/Homebrew
消えていれば “No such file or directory” が出る想定です。スクリプト完了後も /opt/homebrew やHomebrew専用ツリーが残るなら、そのパスへ sudo rm -rf するのが定石です。Returnを押す前にパスを再確認してください。
プレフィックス外の設定は意図的に残ることが多いです。~/.gitconfig、言語バージョンマネージャ、~/Library 下のアプリサポート、var から移したデータベースなど。Homebrewのプレフィックスではありません。帰属が分かるものだけ消してください。
シェル設定がまだそれを指している
アンインストーラは .zprofile、.zshrc、.zshenv、.zlogin、.bash_profile を編集しません。Homebrewインストーラがよく足す行は次のような形です。
eval "$(/opt/homebrew/bin/brew shellenv)"
Intel Macでは既定PATHにすでに /usr/local/bin があり、この行が不要なインストールも多いです。Apple Siliconでは brew を見つけるために必要で、アンインストール後は新しいシェルが存在しないバイナリを毎回実行しようとします。
brew shellenv(と、もう要らない手書きの /opt/homebrew/bin や /usr/local/bin のPATHエクスポート)を探して削除します。
grep -n "brew shellenv\|/opt/homebrew\|/usr/local/bin" ~/.zprofile ~/.zshrc ~/.zshenv ~/.zlogin ~/.bash_profile ~/.bashrc 2>/dev/null
その後新しいターミナルタブを開きます。警告が消え、which brew が何も出なければPATH掃除は完了です。すぐ再インストールする予定があるときだけ行を残してください。
よくある失敗パターン
残留で Permission denied。 スクリプトはパスを出したが削除できなかった。名前付きの各パスに sudo rm -rf を使い、-rf とパスの間に空白を置く。rm -rf/opt/... はパスがフラグ扱いされ illegal option になる。
途中まで / “Homebrew is already installed”。 前回の試行で .git、Cellar、bin/brew が残った。正しい --path で公式スクリプトをもう一度走らせるか、スクリプトが示す残留プレフィックスを消し、まだ必要なら公式インストール手順で入れ直す。
中途半端な掃除のあと brew: command not found。 アンインストールは終わったのにPATHが古いプレフィックスを指している(シェル行を直す)、または brew だけ消えてパッケージが残っている。古典的gistを追わない。プレフィックスディレクトリが残るなら公式スクリプトに --path を付ける。
Apple Siliconで間違ったプレフィックス。 /opt/homebrew は消したが、Rosetta時代のツールが /usr/local に残っている。そのツリーがHomebrewのもので、無関係ソフトの混在でないと確認してから --path=/usr/local で実行する。
サービスとログイン項目が消えたバイナリを呼び続ける。 可能ならアンインストール前に brew services を止める。その後、ログイン項目と /opt/homebrew や /usr/local/Cellar を参照するLaunchAgentsを確認する。
古いブログと2011年のgist。 git ls-files と pbcopy で消す手順は以前のHomebrewレイアウト向け。https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh だけを使う。
より小さな操作で足りるか検討する
小さな掃除なら、brew cleanup で古い版とキャッシュ、brew uninstall <formula> で単体、brew autoremove で未使用依存を消します。MoleのAnalyzeビューでは、掃除前にHomebrewフォルダをスキャンし、あとでもう一度スキャンしてサイズを比較できます。Moleはこれらのコマンドによる変化を自動追跡しません。
書き出した一覧からの再構築
新しいマシンにHomebrewを入れたら、次の二コマンドで元に戻せます。
xargs brew install < brew-formulae.txt
xargs brew install --cask < brew-casks.txt
caskには --cask が要るため分けます。混在リストは半分が失敗します。
brew list は依存も含むため、全部を再生すると依存まで明示インストール扱いになり、あとで brew autoremove が消せる範囲が変わります。brew leaves はその多くを避けますが、依頼インストール履歴そのものではありません。自分が選んだパッケージが別パッケージの依存でもあることがあります。再インストール前に一覧を見直し、必要なツールを足してください。
よくある質問
Homebrewをアンインストールすると、入れたパッケージは全部消えますか?
CellarとCaskroom内に残っているものは消えます。公式スクリプトはプレフィックスごと消すので、formulaとcaskメタデータも一緒です。プレフィックス外の設定やデータは残ることがあります。
/opt/homebrew と /usr/local の違いは?
/opt/homebrew はApple Siliconの既定。/usr/local はIntelの既定で、移行したMacでは古いRosetta Homebrewが残っていることもあります。消す前に必ず brew --prefix を確認してください。
アンインストールスクリプトの前に、すべてのformulaを消すべきですか?
段階的に掃除したい、または先に var のデータを見たいときだけです。スクリプトはプレフィックス内のインストール済みパッケージをすでに消します。あとで入れ直す可能性があるなら、どちらのやり方でも一覧を書き出してください。
アンインストール後にディレクトリが残るのはなぜ?
権限や、Homebrewが作っていないディレクトリが削除を阻むことがあります。スクリプトはそのパスを一度だけ表示します。Homebrewの残留だと分かるときだけ sudo で消してください。
/usr/local 全体を消しても安全ですか?
いいえ。Intel Macでは共有ディレクトリです。公式アンインストールスクリプトを使い、残ったものがあればスクリプトが名指ししたパスだけを消します。
新しい端末ごとに brew shellenv のエラーが出ます。どうする?
zshまたはbashの起動ファイルから eval "$(...brew shellenv)" の行を消し、新しいタブを開きます。アンインストーラはそれらのファイルを編集しません。