Homebrewからpostgresqlがなくなった?

タイトルは釣り気味

TL,DR

経緯

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はメジャーバージョンアップの度に壊れるのか?

ちょっとググるだけで、

qiita.com

carefree-se.hatenablog.com

amateur-engineer.com

こんな話がゴロゴロ出てくる。
どうやらPostgreSQLはメジャーバージョンアップのたびにマイグレが必要なものらしく、本家からツールも提供されている。

www.postgresql.org

まとめ

  • 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とで何かが違うのかもしれない

*1:巨大すぎてGIthub上では全てのファイルが表示されないので、ローカルにcloneしないと探せない

*2:本当は現在の最新は15のハズだが入るのは14