homebrewのpostgisはpostgres@14とリンクされているようなので、postgresql@16で使いたい場合は、postgisをソースからビルドする必要があるらしい。
以下、ここに書かれている手順と同じことをしてるが、オプションを少し変えてます。
brew install postgresql@16
brew install postgis
brew info postgis
==> postgis: stable 3.5.0 (bottled), HEAD
# homebrewはpostgis3.5.0が入ったので、ソースも3.5のものを取得
wget https://download.osgeo.org/postgis/source/postgis-3.5.0.tar.gz
# 適当にソースをビルドする場所を用意
cd /opt/hogehoge/src/postgis-3.5.0
./configure \
--prefix=/opt/hogehoge \
--with-pgconfig=/opt/homebrew/Cellar/postgresql@16/16.4_1/bin/pg_config \
--with-gettext=/opt/homebrew/Cellar/gettext/0.22.5/
make
===> ld: library '/opt/hogehoge/bin/postgres' not found
===> clang: error: linker command failed with exit code 1 (use -v to see invocation)
===> make[1]: *** [postgis_topology-3.dylib] Error 1
===> make: *** [all] Error 1
# makeでエラーが出たので処置
ln -s /opt/homebrew/Cellar/postgresql@16/16.4_1/bin/postgres /opt/hogehoge/bin/postgres
make
make install
postgisを手動でビルドしているのに brew install postgis
もしているのは、手動ビルドに必要なパッケージを手っ取り早く入れて置きたいからだと思います。たぶん。
Homebrewの更新
homebrew で何かを入れた拍子に、postgresql16.3 → 16.4_1に更新されてしまい次のエラー出るようになった。
ERROR: could not access file "$libdir/postgis-3": No such file or directory
ここに書いている手順でインストールしていたので、homebrewの更新で環境が壊れてしまったらしい。セットアップの履歴が残ってなく再構築に手間取ったので備忘録に残しておきます。