macOS + postgresqlでエラー「dyld: Library not loaded」が出た

macOS + PostgreSQLで環境構築したところ

$ psql
dyld: Library not loaded: /usr/local/opt/readline/lib/libreadline.7.dylib
  Referenced from: /usr/local

が出たため、対応した時のメモです。

 
目次

 

環境

  • macOS 10.13.6 (High Sierra)
  • Homebrewで postgres をインストール済
    • インストール済のpostgresは、10.3

 

調査

エラーメッセージを見ると、ライブラリがなさそうでした。

念のため確認してみたところ、確かにありませんでした。

$ ls -al /usr/local/opt/readline/lib
total 1448
drwxr-xr-x  11 shinano_gold  ringo     352 12 20 06:07 .
drwxr-xr-x  12 shinano_gold  ringo     384  1 28 09:24 ..
-r--r--r--   1 shinano_gold  ringo   40396  1 28 09:24 libhistory.8.0.dylib
lrwxr-xr-x   1 shinano_gold  ringo      20 12 20 06:07 libhistory.8.dylib -> libhistory.8.0.dylib
-r--r--r--   1 shinano_gold  ringo   45880 12 20 06:07 libhistory.a
lrwxr-xr-x   1 shinano_gold  ringo      20 12 20 06:07 libhistory.dylib -> libhistory.8.0.dylib
-rw-r--r--   1 shinano_gold  ringo  239252  1 28 09:24 libreadline.8.0.dylib
lrwxr-xr-x   1 shinano_gold  ringo      21 12 20 06:07 libreadline.8.dylib -> libreadline.8.0.dylib
-r--r--r--   1 shinano_gold  ringo  405848 12 20 06:07 libreadline.a
lrwxr-xr-x   1 shinano_gold  ringo      21 12 20 06:07 libreadline.dylib -> libreadline.8.0.dylib
drwxr-xr-x   3 shinano_gold  ringo      96  1 28 09:24 pkgconfig

 
そのため、Homebrewでインストールするpostgresの依存関係を見てみました。
https://formulae.brew.sh/formula/postgresql@10

すると、

readline ✅ 8.0.0   Library for command-line editing

と、手元の readline 8.0 で動作しそうでした。

 
また、Homebrewにある最新の postgres のバージョンを確認すると、11.1 でした。
https://formulae.brew.sh/formula/postgresql

 

対応

brew switch で readline のバージョンを切り替えることも考えました。

ただ、postgresのバージョンを上げても問題ないだろうと考え、 brew upgrade しました。

$ brew upgrade postgresql

 
その後はエラーが発生しなくなりました。