Homebrew で使われていない formula を削除する
Homebrew でインストールした formula で使っていない不要なものを調査した。
ほかの formula に依存していない formula を一覧化する
brew uses
にかけると、何にも依存していないパッケージ (formula) を特定することができる。
brew list | xargs -I{} sh -c 'brew uses --installed {} | wc -l | xargs printf "%20s is used by %2d formulae.\n" {}'
xargs の並列実行バージョン(おすすめ)
実行に時間がかかるので、 xargs -P3
など適宜並列プロセス数を指定すると良い。特にこだわりがなければ expr $(sysctl -n hw.ncpu) - 1
で、CPUコア数から割り当てられるだけ指定する。
brew list | xargs -P`expr $(sysctl -n hw.ncpu) - 1` -I{} sh -c 'brew uses --installed {} | wc -l | xargs printf "%20s is used by %2d formulae.\n" {}'
コマンド実行結果
結果が0件の formula は削除できるので、不要なものを削除する。上記のコマンドは、依存がある削除できない formula も表示されるので、必要なら | grep '0 formula'
する。
% brew list | xargs -I{} sh -c 'brew uses --installed {} | wc -l | xargs printf "%20s is used by %2d formulae.\n" {}'
aom is used by 1 formulae.
cairo is used by 3 formulae.
docker is used by 0 formulae.
ffmpeg is used by 0 formulae.
flac is used by 4 formulae.
fontconfig is used by 5 formulae.
freetype is used by 6 formulae.
frei0r is used by 1 formulae.
fribidi is used by 2 formulae.
gdbm is used by 6 formulae.
## 削除可能な formula のみを grep したバージョン
% brew list | xargs -I{} sh -c 'brew uses --installed {} | wc -l | xargs printf "%20s is used by %2d formulae.\n" {}' | grep '0 formula'
docker is used by 0 formulae.
ffmpeg is used by 0 formulae.
git is used by 0 formulae.
ilmbase is used by 0 formulae.
補足
パッケージの依存関係
あるパッケージ (formula) が依存している formula を確認したければ brew deps --tree
が便利です。
% brew deps --tree python
python
├── gdbm
├── openssl@1.1
├── readline
├── sqlite
│ └── readline
└── xz
ほかのパッケージ (formula) から依存されていると削除できない。
% brew uninstall sqlite
Error: Refusing to uninstall /usr/local/Cellar/sqlite/3.30.1
because it is required by cairo, ffmpeg, glib, harfbuzz, libass and python, which are currently installed.
You can override this and force removal with:
brew uninstall --ignore-dependencies sqlite
どこから依存されているかは brew uses --installed
を確認する。
## どこからも依存されていない場合(削除可能)
% brew uses --installed ffmpeg
## ほかの formula から依存されている場合
% brew uses --installed readline
cairo ffmpeg glib harfbuzz libass python sqlite