タイトルは釣り気味
TL,DR
- Homebrewのformulaから無印postgresがなくなった
- バージョンの指定が必要
- PostgreSQLはメジャーバージョンアップごとに環境を壊してしまうらしい
経緯
PCを新調したのでHomebrewでPostgreSQLを入れようと思ったところ
$ brew install postgresql Warning: No available formula with the name "postgresql". Did you mean postgresql@13, postgresql@12, postgresql@11, postgresql@15, postgresql@10, postgresql@14, postgresql@9.5, postgresql@9.4, postgrest or qt-postgresql? postgresql breaks existing databases on upgrade without human intervention. See a more specific version to install with: brew formulae | grep postgresql@
No available formula with the name "postgresql"
ってそんな馬鹿な。
何度もtypoを確認したけど間違っていない。
よくよく見ると、
postgresql breaks existing databases on upgrade without human intervention.
See a more specific version to install with:
brew formulae | grep postgresql@
どうやらバージョン指定しろってことらしい。
Homebrew本家を確認してみる
試しに https://github.com/Homebrew/homebrew-core/tree/master/Formula を見てみたけど本当にない*1。
もう少し経緯を知りたくてリポジトリを探してみたらそれっぽいPRを見つけた。
github.com
どうもpostgreを(バージョンを指定していないがために)メジャーバージョンアップする度にぶっ壊れていたらしい。
PostgreSQLはメジャーバージョンアップの度に壊れるのか?
ちょっとググるだけで、
こんな話がゴロゴロ出てくる。
どうやらPostgreSQLはメジャーバージョンアップのたびにマイグレが必要なものらしく、本家からツールも提供されている。
まとめ
- PostgreSQLをhomebrewで入れるときはバージョンを指定して、
brew update
で環境が壊れないようにすべき - というか、今ならDockerで動かすべき
余談
なぜか原因は追えていないが、お古のPCのHomebrewでは自動的に最新版*2が入る... 🤔
$ brew install postgresql Warning: Use postgresql@14 instead of deprecated postgresql ==> Fetching dependencies for postgresql@14: krb5 ==> Fetching krb5 (以下略)
一応Homebrewのバージョンは同じなのだが、最新のHomebrewをインストールしたものとアップデートして最新になっているHomebrewとで何かが違うのかもしれない