Homebrew を安全に整理する
Homebrew は、以前よりも積極的に古いバージョンやキャッシュ済みのダウンロードを管理します。 自動クリーンアップが無効になっていなければ、インストールやアップグレード時に対象の formula を整理し、Homebrew は定期的にすべての formula をクリーンアップします。長く使っている インストール環境でも、ダウンロード、ピン留めされたバージョン、ビルド成果物、依存関係は たまり得ます。prefix 配下を削除する前に、Homebrew 自身のメタデータを確認してください。
Homebrew が残しておくもの
次の 3 種類の残り物がたまります。
- 古いバージョン。 クリーンアップは通常、置き換えられたバージョンを削除しますが、保持された バージョンや最近アップグレードしたバージョンは、しばらく Cellar に残ることがあります。
- ダウンロード済みアーカイブ。 bottle と cask のダウンロードはすべて Homebrew のキャッシュに保存され、再ダウンロードを避けるために残されます。
- 未使用の依存関係。 現在の Homebrew のクリーンアップとアンインストール操作は通常、 不要になった formula を削除します。自動削除が無効になっていない限りです。 古いインストールや中断された操作では、一部が残ることがあります。
ダウンロードキャッシュのサイズは次のように直接確認できます。
brew --cache
du -sh "$(brew --cache)" 2>/dev/null
クリーンアップする
メインのコマンドは、古いバージョンの削除とダウンロードキャッシュの整理を一度に行います。
brew cleanup
現行の Homebrew マニュアル
によると、通常のクリーンアップは、デフォルトで古いインストール済みバージョンと
120 日より古いダウンロードを削除します。HOMEBREW_CLEANUP_MAX_AGE_DAYS でこの期間を
変更できます。ドライランには -n を使います。より踏み込んだ -s モードは、
現在インストールされている formula と cask 用のダウンロードは残しつつ、
キャッシュ済みダウンロードをより多く掃除します。
brew cleanup -n
brew cleanup -s
Homebrew のクリーンアップとアンインストールは、いまでは未使用の formula 依存関係を
デフォルトで削除します。その依存関係の判断を直接確認したいときは、
brew autoremove が依然として役立ちます。
brew autoremove --dry-run
brew autoremove
brew list はインストール済みパッケージを、brew outdated は未適用の更新を示します。
パスをハードコードする代わりに、brew --cellar、brew --caskroom、brew --cache で
場所を調べてください。/opt/homebrew を決め打ちしないこと。Intel と Apple silicon の
インストールでは場所が異なります。
設計上の安全性
Homebrew のクリーンアップは、Cellar ディレクトリを手で消すよりリスクが低いです。 バージョンと依存関係のメタデータを使うためです。それでも、ロールバック用のバージョンや オフラインで使う予定だったキャッシュ済み bottle は削除されることがあります。 クリーンアップと autoremove の両方を事前確認し、ピン留めしたバージョンや運用上重要な バージョンは意図的に残してください。
内部の仕組み:Cellar、Caskroom、クリーンアップの判断
Homebrew は各 formula を、brew --cellar が示す Cellar 内のバージョン付きディレクトリに
インストールし、有効なバージョンを prefix へリンクします。アップグレードでは、
シンボリックリンクを張り替える前に、新しいバージョンを古いものの隣に置きます。
cask はバージョン付きメタデータを Caskroom に保持し、アプリ本体は多くの場合
/Applications に置かれます。ダウンロードは brew --cache が示すパスを使い、
Homebrew の方針に従って保持されます。brew cleanup は、単に現行以外のディレクトリを
すべて消すのではなく、インストール済みバージョン、保持期間、依存関係のメタデータを
使います。brew autoremove は、依存関係だけの部分を別コマンドとして公開します。
どちらも推測ではなく Homebrew 自身の記録に基づくため、フォルダを手で消すより安全で
説明しやすくなります。古いツールチェーンやオフライン bottle に依存するマシンでは、
事前確認が依然として有用です。
ほかのツールが止めるべきところ
ディスクマップやクリーナーは、Homebrew のキャッシュを見つけ、サイズを示すことができます。 Mole はそのカテゴリを表示できますが、Cellar のバージョンと依存関係については、 Homebrew 自身のコマンドが依然として権威です。発見と所有権を混同しないでください。
安全な作業の順序
Homebrew のパス用コマンドでストアを測り、brew cleanup -n で事前確認し、
-s を検討する前に通常のクリーンアップを実行してください。brew autoremove は
別途事前確認してください。キャッシュの問題ではなく、依存関係の問題に答えるからです。
自動クリーンアップが動いており、ディスク圧が低いときは、固定のクリーンアップ予定は
必要ありません。