Homebrew で MySQL のバージョンを下げてインストールする
はじめに
なぜか開発で MySQL の 5.7
(現在の最新バージョンは 8.0.2
)を利用することになったので、久々に Homebew で switch
しようとしたらできなかった。今までバージョンの切り替えをやってこなかった故の知識不足と思いきや、Deprecated
にして新しいものを作る流れで消えてしまうクソパターンだった。端的に言うと、 簡単にバージョンを変更できなくなった 。改悪ですね(ため息) 。また、新しい MacBook に変えてしまったので過去のバージョンはローカル環境からすべて消失している。流石に困ったのでググった。
Homebew の git を操る
解決する方法として今後の切り替え作業が楽になる方法は、 Homebew の git のバージョンを切り替えてインストールする方法だ。
Homebew のローカル git リポジトリ
ローカルリポジトリがどこにあるかというと、
/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula
このディレクトリに *.rb
ファイルがたくさん存在する。今回の場合は mysql.rb
だ。他にも似たようなものがたくさんあるので間違えないようにしよう。
切り替えたいバージョンを探す
おそらくこのコマンドで出てくるだろう。ローカルリポジトリに移動しているなら、 git log master -- Formula/mysql.rb
で見るのもいいが面倒なので、 Homebew が提供している方法を利用する。
brew log mysql --oneline
ただし、 Homebew のリポジトリは最新の履歴だけを取得する shallow clone
なので、古いものは unshallow
する必要がある。
出力結果
左に並ぶ謎の文字列がハッシュ値。
おそらく、 5.7 の最新であろう a340bfac3
をターゲットにする予定。
Warning: homebrew/core is a shallow clone so only partial output will be shown.
To get a full clone run:
git -C "\$(brew --repo homebrew/core)" fetch --unshallow
cb149358e mysql: fix detection that post-install has already been run
b09bacb6f mysql: update 8.0.12 bottle.
a398fcff1 mysql 8.0.12
bd993938b mysql: update 8.0.11 bottle.
353c77eee mysql 8.0.11
512758e6e Rubocop 0.57.1 style fixes (#28754)
144028de1 mysql: remove duplicate test conditional
a340bfac3 mysql: update 5.7.22 bottle.
4eba79081 mysql 5.7.22
b578b6b88 mysql 8.0.4-rc (devel) (#24506)
df41e9b23 mysql: update 5.7.21 bottle.
e0208bdc0 mysql 5.7.21
ceaf0f37d mysql: update 5.7.20_1 bottle.
a8ae3bf54 mysql: remove unused options and reorder args
a08411131 mysql 8.0.3-rc (devel) (#20538)
ec2da05a0 Indentation style fixes (#19679)
16ebe5f18 Use “squiggly” heredocs.
46bdcd3bd mysql: update 5.7.20 bottle.
06793449d mysql 5.7.20
a0c075899 mysql: update 5.7.19 bottle.
ca053da48 mysql: update 5.7.19 bottle.
707af59f5 mysql 5.7.19
6b31936ee (grafted) bazel: update 0.5.2 bottle.
切り替え方法
git なので普通に checkout します。
git checkout a340bfac3 # a340bfac3 は切り替えたいハッシュ値
処理手順
pushd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula
# a340bfac3 mysql: update 5.7.22 bottle. という情報を取得。
brew log mysql --oneline
# 5.7.22 が最新バージョンとなるコミットに切り替え。
git checkout a340bfac3
# 既にインストールしている場合
brew uninstall mysql
# HOMEBREW_NO_AUTO_UPDATE を 1 にしないと自動更新される
HOMEBREW_NO_AUTO_UPDATE=1 brew install mysql
popd
おわりに
不便だ!
今後の利便性なんかどうでもいいなら
brew install mysql@5.7
でもいい。
ただ、 brew switch mysql 5.7.22
や brew switch mysql 8.0.2
で切り替えたいなら今回示した方法がいいだろう。