2024年7月11日木曜日

brew で outdated になった formula は upgrade させない方法

brew で outdated になった formula は upgrade させない方法

概要

macOS のバージョンによってはもうアップグレードできない formula が存在します
しかし brew upgrade を実行すると関係なくアップグレードしようとし失敗します
そんな場合に対象の formula は更新対象に含めない方法を紹介します

環境

  • macOS 11.7.10
  • brew 4.3.3

outdated なパッケージを確認する

  • brew outdated
cmake (3.27.7, 3.29.0, 3.29.6) < 3.30.0
imagemagick (7.1.1-20) < 7.1.1-34
libass (0.17.2) < 0.17.3
libheif (1.16.2) < 1.17.6_1
mysql (8.1.0) < 8.3.0_1
node (21.7.1) < 22.4.0
protobuf (24.4) < 27.1
scroll-reverser (1.8.2) != 1.9

この一覧にあるパッケージを upgrade しようとすると outdated にも関わらずビルドを試みます
そして結局エラーになります

cask の場合は以下のようになったりします

  • brew upgrade scroll-reverser
Error: scroll-reverser: This software does not run on macOS versions older than Ventura

というエラーになります

バージョンを固定する

  • brew pin cmake

とすると brew upgrade を実行しても cmake は最新版にアップグレードえず今のバージョンをそのまま使います

ためしに pin 後に mysql を upgrade しようとすると依存してる cmake のビルドはせずにすぐに mysql のビルドが始まります (結局エラーになります

  • brew upgrade mysql
==> Downloading https://formulae.brew.sh/api/formula.jws.json

==> Downloading https://formulae.brew.sh/api/cask.jws.json

Warning: You are using macOS 11.
We (and Apple) do not provide support for this old version.
It is expected behaviour that some formulae will fail to build in this old version.
It is expected behaviour that Homebrew will be buggy and slow.
Do not create any issues about this on Homebrew's GitHub repositories.
Do not create any issues even if you think this message is unrelated.
Any opened issues will be immediately closed without response.
Do not ask for help from Homebrew or its maintainers on social media.
You may ask for help in Homebrew's discussions but are unlikely to receive a response.
Try to figure out the problem yourself and submit a fix as a pull request.
We will review it but may or may not accept it.

==> Upgrading 1 outdated package:
mysql 8.1.0 -> 8.3.0_1
Error: You must `brew unpin cmake` as installing mysql requires the latest version of pinned dependencies

mysql 8.3 が cmake の 3.30 に依存しているためエラーになっています

pin している formula を確認する

  • brew list --pinned

そもそも formula が現在の macOS のバージョンで動作するか確認する方法

現状は Web サイトで調べるしかないようです

https://formulae.brew.sh/formula/cmake#default

例えば上記の cmake 3.30 は monterey (12.7.5) までしか対応してないのが確認できます
こんな感じで Homebrew のサイトで検索するのが一番です
outdated の一覧にありかつ Web サイト上でサポートされてない macOS のバージョンであれば pin に追加しましょう

最後に

brew upgrade で更新しない formula を指定する方法を紹介しました
macOS 11 はすでに Homebrew からのサポートがないのでこういった対象が必要になってきます

参考サイト

0 件のコメント:

コメントを投稿