少し前に開発機の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用語、よく知らないで使っていたので調べてしまいまいした。
参照
- Homebrew terminology | Formula Cookbook — Homebrew Documentation
- 【Mac】Homebrewとは? – からのFormula、keg、Cellar、Tapってなに?
話を戻すと、libqpをインストールしてもパスが通っていないので、以下のどちらかの手順を実行してパスを通します。
brew link
コマンドで/usr/local/binにシンボリックリンクを作成する
$ brew link --force libpq
.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