未元雑記

メモ用紙

【MacOS HighSierra】PostgreSQLを入れるのに躓いた話

授業でPostgreSQLを使うのでインストールしようとしたら躓いたのでエラー対処の勉強も兼ねてその時の解決法を記録しておく。

このときの環境は

macOS High Sierra バージョン10.13.4

まずbrewでインストールしようとした。するとこんなメッセージがでた。

 Library not loaded: /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib 

なんかよくわからなかったので(低IQ)「仕方ない、パッケージ版でインストールしよう」と思い、公式サイトからパッケージ版をダウンロード。このとき、対応OSがXまでしかなかったので若干不安になったがパッケージを起動してインストール。

ターミナルに戻ってバージョン確認したところ表示されず、Postgresのディレクトリに飛んでlsしても何もファイルがない。
(よくよく考えればbrewでインストールした時のディレクトリとパッケージでインストールした時のディレクトリは違ったので何もファイルがないのは当然である。)

メッセージをよくみると、opensslのライブラリの何かが見つからないということらしい。とりあえずopensslを再インストール

$ brew reinstall openssl 


PostgreSQLも再インストールしたところ、無事にインストールされた。

postgres (PostgreSQL) 10.4

 
次にサーバーを起動しようとしたが、ここでもエラーが発生しPostgreSQLを起動できなかった。

LOG: could not bind IPv6 address "::1": Address already in use

LOG: could not bind IPv4 address "127.0.0.1": Address already in use

WARNING: could not create listen socket for "localhost"

ログを見ると、すでにIPアドレスが使われているということ。しばらくの間どういうことかわからずググりまくっていたら、どうやら二重に起動しようとしているということがわかった。二重に起動しているということはパッケージ版とbrewでインストールしたのが原因ということか。

ここでパッケージ版とbrewで入れたやつを同居させてはいけないようだと気づく。

というわけでターミナルでパッケージ版をインストールしたディレクトリのひとつ前に飛んでPostgreSQLディレクトリをremoveして再度起動させてみる。

waiting for server to start....2018-05-29 12:27:48.359 JST [44559] LOG: listening on IPv6 address "::1", port 5432
2018-05-29 12:27:48.359 JST [44559] LOG: listening on IPv4 address "127.0.0.1", port 5432
2018-05-29 12:27:48.361 JST [44559] LOG: listening on Unix socket "/tmp/.s.PGSQL.5432"
2018-05-29 12:27:48.395 JST [44560] LOG: database system was shut down at 2018-05-29 11:24:55 JST
2018-05-29 12:27:48.405 JST [44559] LOG: database system is ready to accept connections
done
server started

無事に起動した。

ログやメッセージをちゃんと読むって大事だねってお話でした。