Closed4

HomeBrewで依存関係を確認しパッケージを削除する

jimiijimii

intel版とarm版の両方にgccが入ってしまったため、intel版を削除したい

背景

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版のパッケージ一覧の確認

arm版
brew list
==> Formulae
gcc			gmp			isl
libmpc			libmpc			mpfr
zstd
intel版
/usr/local/bin/brew list
==> Formulae
gcc			gmp			isl
libmpc			libmpc			mpfr
zstd

arm版とintel版の両方にgccがインストールされてしまっている。
なんか、前にintel版使ってたときのすでに入れてたのか。
よし、intel版消して、arm版を使うようにしようっと。

jimiijimii

intel版のgccを削除する

/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
jimiijimii

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
jimiijimii

[番外編]パッケージ全部一括で消せばいいんじゃないの?

一応、brew uninstall [パッケージ名1] [パッケージ名2] [パッケージ名3] ...で削除はできるそう。
ただし、依存関係が複雑な場合は手間だけど、ひとつづつ確認して消す方が安全そう。
(他のパッケージへの影響やヒューマンエラーのリスクもあるし)

brew uninstall gcc gdal hdf5 netcdf numpy openblas postgis

依存関係ある状態で通るかは試してはないが、
強制的に抹消してやんよ。って場合は、--ignore-dependenciesのオプションつければ消せるとは思う。

このスクラップは1ヶ月前にクローズされました