brew install
でインストールできる fomula には基本的に過去のマイナーバージョンは保持していないようなので、指定してインストールしたい場合にはひと手間必要になります。
今回はそのやり方について解説していきます。
この記事で分かること
- homebrew で過去のマイナーバージョンを指定してパッケージをインストールする方法
環境
- Homebrew 3.2.13
大まかな流れ
- git リポジトリからインストールしたいバージョンのコミットを探す
- HEAD の位置を対象コミットに移動する
- 通常通りインストールする
手順
git リポジトリからインストールしたいバージョンのコミットを探す
コミットログを遡るために、まずは諸々の fomula が入っているディレクトリに移動します。
cd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula
ここで、インストールしたい fomula のログを見るために下記コマンドを実行します。
git log --oneline <formula名>
mysql がインストールしたいとすれば、
$ ls -la | grep mysql
-rw-r--r-- 1 hiroya admin 2175 2 2 21:49 automysqlbackup.rb
-rw-r--r-- 1 hiroya admin 2205 10 24 21:39 mysql++.rb
-rw-r--r-- 1 hiroya admin 2939 2 2 21:49 mysql-client.rb
-rw-r--r-- 1 hiroya admin 2006 12 9 22:14 mysql-client@5.7.rb
-rw-r--r-- 1 hiroya admin 2095 2 2 21:49 mysql-connector-c++.rb
-rw-r--r-- 1 hiroya admin 1812 12 28 10:40 mysql-sandbox.rb
-rw-r--r-- 1 hiroya admin 714 9 23 2021 mysql-search-replace.rb
-rw-r--r-- 1 hiroya admin 6771 3 12 11:53 mysql.rb
-rw-r--r-- 1 hiroya admin 5769 12 9 22:14 mysql@5.6.rb
-rw-r--r-- 1 hiroya admin 6060 2 2 21:49 mysql@5.7.rb
-rw-r--r-- 1 hiroya admin 1643 12 28 10:40 mysqltuner.rb
-rw-r--r-- 1 hiroya admin 2865 3 12 11:53 qt-mysql.rb
みたいな感じで fomula を見つけたあと、その fomula 名でログを確認します。
$ git log --oneline mysql.rb
4ba1f77d74e mysql: fix brew style.
cd29ac513f3 mysql: update 8.0.26 bottle.
e98c18fe315 mysql: replace `plist` with `service`
82a4096bb3a mysql: update 8.0.26 bottle.
928d0e34b94 mysql 8.0.26
4ba9cfde5ea mysql: update 8.0.25_1 bottle.
dce48126f9f mysql: add Linux dependencies and flags (#77731)
82c63e45d50 mysql: update 8.0.25_1 bottle.
ae52ac7b8de mysql: uses brewed libraries
886cb09a223 mysql: update license
700eb16dda5 mysql: update 8.0.25 bottle.
5c8163730d8 mysql 8.0.25
58946207e43 mysql: update 8.0.23_2 bottle.
63cc56f5fe2 mysql: revision bump (protobuf 3.17.0)
ee2c110d65b mysql: update 8.0.23_1 bottle.
23a9325d1da mysql: revision bump
d27db589abf mysql: fix ENV["CI"] usage.
e2c833d326c formulae: use new bottle syntax
268962f7d9b mysql: update 8.0.23 bottle.
352d1fce0a3 mysql 8.0.23
HEAD の位置を対象コミットに移動する
これで目的のバージョンの fomula が見つかったので、そのバージョンのコミットに HEAD を移動します。
$ git sw -d <戻りたいコミットID>
例(8.0.25 に戻したい場合)
8.0.26 の一個手前のコミット(4ba9cfde5ea)に移動
$ git sw -d 4ba9cfde5ea
HEAD is now at 4ba9cfde5ea mysql: update 8.0.25_1 bottle.
通常通りインストールする
あとは普通にインストールするだけです。
brew install <formula名>
すでにインストール済みなら
brew reinstall <formula名>
- 例
$ brew reinstall mysql
==> Downloading https://ghcr.io/v2/homebrew/core/mysql/manifests/8.0.25_1
Already downloaded: /Users/hiroya/Library/Caches/Homebrew/downloads/0acaae4c8ab8eb92efa33f8278849d7f2ddac598e28411452ca4de60f8c57400--mysql-8.0.25_1.bottle_manifest.json
==> Downloading https://ghcr.io/v2/homebrew/core/mysql/blobs/sha256:db388d333de4224dcc9ca54917069c75805801f00bc1355c9dcf
==> Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sha256:db388d333de4224dcc9ca54917069c75805
######################################################################## 100.0%
==> Reinstalling mysql
==> Pouring mysql--8.0.25_1.big_sur.bottle.tar.gz
==> Caveats
We've installed your MySQL database without a root password. To secure it run:
mysql_secure_installation
MySQL is configured to only allow connections from localhost by default
To connect run:
mysql -uroot
To have launchd start mysql now and restart at login:
brew services start mysql
Or, if you don't want/need a background service you can just run:
mysql.server start
==> Summary
🍺 /usr/local/Cellar/mysql/8.0.25_1: 300 files, 293.6MB
インストールできたら現在のバージョンを確認してみましょう。
$ mysql --version
mysql Ver 8.0.25 for macos11.3 on x86_64 (Homebrew)
これで過去のマイナーバージョンのパッケージがインストールできました。