Laravel Homestead内のPostgreSQLにMacのpsqlから接続する手順


少し前に開発機のMacを買い替えたためHomesteadの環境を作り直してみました。
LaravelプロジェクトのデータベースにはPostgreSQLを使っているのですが、改めて環境を作るにあたってPostgreSQLをメインの仕事で使うことは無いし、psqlでHomesteadのPostgreSQLに接続するためだけにMacのローカルにPostgreSQLサーバーをインストールしたくないと思い、psqlだけ使えるようにする方法について調べてみました。

イマイチ一次情報にた取り付けずなところも多かったのですが、執筆時点でおそらくベストっぽい構成のような気がします。

psqlのインストール

homebrewでpsqlをインストールします。

homebrewには「psql」という名前のパッケージ(Formula)は無いですが、libpqをインストールするとpsqlが含まれています。

$ brew install libpq
...
<!--more-->

==> libpq
libpq is keg-only, which means it was not symlinked into /usr/local,
because conflicts with postgres formula.

If you need to have libpq first in your PATH run:
  echo 'export PATH="/usr/local/opt/libpq/bin:$PATH"' >> /Users/hrendoh/.bash_profile

For compilers to find libpq you may need to set:
  export LDFLAGS="-L/usr/local/opt/libpq/lib"
  export CPPFLAGS="-I/usr/local/opt/libpq/include"


$ brew link --force libpq
Linking /usr/local/Cellar/libpq/12.3... 370 symlinks created

If you need to have this software first in your PATH instead consider running:
  echo 'export PATH="/usr/local/opt/libpq/bin:$PATH"' >> /Users/hrendoh/.bash_profile

インストール時に出力されるメッセージで「libqdはkeg-onlyなので、/usr/localにシンボリックリンクは作成されませんよ」と言われています。

ところで「keg-only」とは、一般用語に直すと、homebrewのパッケージが配置されるディレクトリ(Celler)へライブラリなど(Keg)をダウンロードして配置するだけのパッケージ(Fomula)ということらしいです。

Homebrew用語、よく知らないで使っていたので調べてしまいまいした。

参照

話を戻すと、libqpをインストールしてもパスが通っていないので、以下のどちらかの手順を実行してパスを通します。

  1. brew linkコマンドで/usr/local/binにシンボリックリンクを作成する
$ brew link --force libpq
  1. .bash_profileなどでパスを通す
echo 'export PATH="/usr/local/opt/libpq/bin:$PATH"' >> /Users/$(whoami)/.bash_profile

以上で、psqlが使えるようになります。

では実際に接続してみます。

Homesteadは、PostgreSQLのポートは54320でフォワードされてますので以下のようにポートを指定して接続します。

$ psql -U homestead -h localhost -p 54320
Password for user homestead: 
psql (12.3, server 12.2 (Ubuntu 12.2-2.pgdg18.04+1))
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
Type "help" for help.

homestead=# 

無事接続できました。しかし、Laravelで開発しててpsqlでアクセスするのってcreate databaseするときくらいのような。。

参照: Ports | Laravel Homestead – Laravel – The PHP Framework For Web Artisans

補足

Error: The following directories are not writable by your userを解決するには

$ brew install libpq 
Error: The following directories are not writable by your user:
/usr/local/lib/pkgconfig

You should change the ownership of these directories to your user.
  sudo chown -R $(whoami) /usr/local/lib/pkgconfig

And make sure that your user has write permission.
  chmod u+w /usr/local/lib/pkgconfig

メッセージの説明に従い、自分に対して/usr/local/lib/pkgconfigに書き込み権限を付けます

$ sudo chown -R $(whoami) /usr/local/lib/pkgconfig
$ chmod u+w /usr/local/lib/pkgconfig
,