macでbrewを使ってz3.4.12系からz3.4.11系に戻す

2023/10/19に公開

はじめに

Kinesis Streamを使ってみようと思い、事前準備であるSDKをインストールしようとした所、エラーとなった。brewでinstallするバッケージで古いものを指定する必要がありそうなのでやり方を調査。

参考にしたサイト

ざっくり手順

  1. 該当パッケージを更新

    % brew update && brew reinstall バージョンを指定したいパッケージ

  2. パッケージ管理ディレクトリに移動(ここはbrew --prefixにより、人によって異なるっぽい)

    % cd $(brew --prefix)/Homebrew/Library/Taps/homebrew/homebrew-core/Formula

  3. 該当パッケージの開発履歴を確認

    % git log --follow 該当パッケージ

  4. 該当バージョンにスイッチ

    % git checkout スイッチしたいコミットのハッシュ

  5. 該当パッケージをインストール

    % brew reinstall 該当パッケージ

  6. 該当パッケージのバージョンをスイッチ

    % brew switch 該当パッケージ スイッチ後バージョン

  7. 該当パッケージのバージョンがスイッチ後バージョンになっているか確認

    % brew info 該当パッケージ

  8. master へ checkout

    % git checkout master

わからない言葉たち

インストールしてみた

現状発生するエラー

dyld[30023]: Library not loaded: /Users/user_name/homebrew/opt/z3/lib/libz3.4.11.dylib

存在するライブラリ

libz3.4.12.dylib

ということでz3を3.11系にしてみる。

$ brew update && brew reinstall z3
$ cd $(brew --prefix)/Library/Taps/homebrew/homebrew-core/Formula
$ git log --follow z/z3.rb
$ git checkout 0b3eebfb0cf606bfa42e4f1a01a367794d1718b5
$ brew reinstall z3.rb  
Error: Failed to load cask: z3.rb
Cask 'z3' is unreadable: wrong constant name #<Class:0x0000000117e5f9d0>
Warning: Treating z3.rb as a formula.
==> Downloading https://ghcr.io/v2/homebrew/core/z3/manifests/4.11.2_1
################################################################################################################################################################################ 100.0%
==> Fetching z3
==> Downloading https://ghcr.io/v2/homebrew/core/z3/blobs/sha256:cec4d6c863d607ea1622f296d2804942d81234431159e2da7bf446c7bd341365
################################################################################################################################################################################ 100.0%
==> Reinstalling z3 
Warning: z3 4.12.2 is available and more recent than version 4.11.2_1.
==> Pouring z3--4.11.2_1.arm64_ventura.bottle.tar.gz
🍺  /Users/user_name/homebrew/Cellar/z3/4.11.2_1: 142 files, 30.3MB
==> Running `brew cleanup z3`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
Removing: /Users/user_name/Library/Caches/Homebrew/z3--4.11.2_1... (11.9MB)
Warning: The following dependents of upgraded formulae are outdated but will not
be upgraded because they are not bottled:
  gdal
  llvm
  apache-arrow
==> No outdated dependents to upgrade!
==> Checking for dependents of upgraded formulae...
Disable this behaviour by setting HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
==> No broken dependents to reinstall!

むむむ・・・
とりあえずスイッチしてみるか

$ brew switch z3 4.11.2
Error: Unknown command: switch

むむむ・・・

openssl - Uncommon homebrew error: "Unknown command: switch" - Stack Overflow

switchは廃止になったけどlinkというのが使えるらしい。

$ brew link z3 4.11.2
Error: No such keg: /Users/user_name/homebrew/Cellar/4.11.2

むむむ・・・
じゃあこうか

$ brew link z3         
Warning: Already linked: /Users/user_name/homebrew/Cellar/z3/4.11.2_1
To relink, run:
  brew unlink z3 && brew link z3

お、すでにlinkされている?reinstallするだけで良かったのかも?

$ brew info z3
==> z3: stable 4.12.2 (bottled), HEAD
High-performance theorem prover
https://github.com/Z3Prover/z3
/Users/user_name/homebrew/Cellar/z3/4.11.2_1 (142 files, 30.3MB) *
  Poured from bottle on 2023-10-19 at 08:48:52
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/z/z3.rb
License: MIT
==> Dependencies
Build: cmake ✔, python@3.11 ✘
==> Options
--HEAD
        Install HEAD version
==> Analytics
install: 23,381 (30 days), 55,294 (90 days), 126,146 (365 days)
install-on-request: 488 (30 days), 1,308 (90 days), 4,316 (365 days)
build-error: 600 (30 days)

git checkout master

めでたく更新完了!

Discussion