HomeBrewで依存関係を確認しパッケージを削除する
gcc
が入ってしまったため、intel版を削除したい
intel版とarm版の両方に背景
vscodeでC++の開発環境構築しよーと思って調べてたら、コンパイラのgcc
をbrewで入れた。
brew install gcc
# 以下略
入れた情報を確認するか。
brew info gcc
==> gcc: stable 13.2.0 (bottled), HEAD
GNU compiler collection
https://gcc.gnu.org/
/opt/homebrew/Cellar/gcc/13.2.0 (1,489 files, 364.3MB) *
Poured from bottle using the formulae.brew.sh API on 2024-03-20 at 10:27:40
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/g/gcc.rb
License: GPL-3.0-or-later with GCC-exception-3.1
==> Dependencies
Required: gmp ✔, isl ✔, libmpc ✔, mpfr ✔, zstd ✔
==> Options
--HEAD
Install HEAD version
==> Analytics
install: 109,842 (30 days), 306,411 (90 days), 1,212,445 (365 days)
install-on-request: 37,405 (30 days), 111,388 (90 days), 556,780 (365 days)
build-error: 1,451 (30 days)
うん。arm版のではいってるねー
/opt/homebrew/Cellar/gcc/13.2.0 (1,489 files, 364.3MB) *
場所はどこかな
which gcc-13
/usr/local/bin/gcc-13
え?intel版...になってる....だと
arm版とintel版のパッケージ一覧の確認
brew list
==> Formulae
gcc gmp isl
libmpc libmpc mpfr
zstd
/usr/local/bin/brew list
==> Formulae
gcc gmp isl
libmpc libmpc mpfr
zstd
arm版とintel版の両方にgcc
がインストールされてしまっている。
なんか、前にintel版使ってたときのすでに入れてたのか。
よし、intel版消して、arm版を使うようにしようっと。
gcc
を削除する
intel版の/usr/local/bin/brew uninstall gcc
Error: Refusing to uninstall /usr/local/Cellar/gcc/13.1.0
because it is required by gdal, hdf5, netcdf, numpy, openblas and postgis, which are currently installed.
You can override this and force removal with:
brew uninstall --ignore-dependencies gcc
「依存してるライブラリがあるからだめよ。」と怒られる
依存関係を確認する
gcc
が依存しているパッケージ一覧を確認する
方法①: brew deps
を使用する
/usr/local/bin/brew deps gcc
gmp
isl
libmpc
lz4
mpfr
xz
zstd
方法②: brew info
を使用する
/usr/local/bin/brew info gcc
==> gcc: stable 13.1.0, HEAD
GNU compiler collection
https://gcc.gnu.org/
/usr/local/Cellar/gcc/13.1.0 (1,590 files, 426.9MB) *
Poured from bottle using the formulae.brew.sh API on 2023-06-22 at 23:22:03
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/gcc.rb
License: GPL-3.0-or-later with GCC-exception-3.1
==> Dependencies
Required: gmp ✔, isl ✔, libmpc ✔, mpfr ✔, zstd ✔
==> Options
--HEAD
Install HEAD version
==> Analytics
install: 109,842 (30 days), 306,411 (90 days), 1,212,445 (365 days)
install-on-request: 37,405 (30 days), 111,388 (90 days), 556,780 (365 days)
build-error: 1,451 (30 days)
👇の箇所が依存しているパッケージ
Required: gmp ✔, isl ✔, libmpc ✔, mpfr ✔, zstd ✔
gcc
に依存してるパッケージ一覧を確認する
--installed
オプションを付けることで、現在インストールされているパッケージに限定して依存しているパッケージが表示される。
/usr/local/bin/brew uses --installed gcc
gdal hdf5 netcdf numpy openblas postgis
gcc
に依存してるパッケージが依存してるパッケージも確認する
/usr/local/bin/brew uses --installed gcc
gdal hdf5 netcdf numpy openblas postgis
/usr/local/bin/brew uses --installed gdal
postgis
/usr/local/bin/brew uses --installed hdf5
gdal netcdf postgis
/usr/local/bin/brew uses --installed netcdf
gdal postgis
/usr/local/bin/brew uses --installed numpy
gdal postgis
/usr/local/bin/brew uses --installed openblas
gdal numpy postgis
/usr/local/bin/brew uses --installed postgis
どうやらpostgis
をいれる際に関連するパッケージがたくさん入れられてしまっているっぽい。
ので、postgis
から順に削除していく
パッケージ削除
/usr/local/bin/brew uninstall postgis
Uninstalling /usr/local/Cellar/postgis/3.3.3_1... (718 files, 41.9MB)
/usr/local/bin/brew uninstall gdal
Uninstalling /usr/local/Cellar/gdal/3.6.4_7... (466 files, 27.6MB)
/usr/local/bin/brew uninstall netcdf
Uninstalling /usr/local/Cellar/netcdf/4.9.2_1... (31 files, 3.7MB)
/usr/local/bin/brew uninstall numpy
Uninstalling /usr/local/Cellar/numpy/1.25.0... (1,766 files, 47.1MB)
/usr/local/bin/brew uninstall openblas
Uninstalling /usr/local/Cellar/openblas/0.3.23... (23 files, 130.5MB)
/usr/local/bin/brew uninstall hdf5
Uninstalling /usr/local/Cellar/hdf5/1.14.1... (284 files, 18.4MB)
よし。全部消した。
これで、gcc
消せるはず。
/usr/local/bin/brew uninstall gcc
Uninstalling /usr/local/Cellar/gcc/13.1.0... (1,590 files, 426.9MB)
できた!!!
参照もOK
which gcc-13
/opt/homebrew/bin/gcc-13
[番外編]パッケージ全部一括で消せばいいんじゃないの?
一応、brew uninstall [パッケージ名1] [パッケージ名2] [パッケージ名3] ...
で削除はできるそう。
ただし、依存関係が複雑な場合は手間だけど、ひとつづつ確認して消す方が安全そう。
(他のパッケージへの影響やヒューマンエラーのリスクもあるし)
brew uninstall gcc gdal hdf5 netcdf numpy openblas postgis
依存関係ある状態で通るかは試してはないが、
強制的に抹消してやんよ。って場合は、--ignore-dependencies
のオプションつければ消せるとは思う。