bin/pg_config
を実行すると、問題の原因と簡単な解決策の両方が明らかになりました。 コマンドラインで。
pg_config
コンパイルとリンクを制御するために使用される変数を生成します。特に興味深いのは、LIBDIRとLDFLAGSです。 LIBDIRは静的ライブラリの場所を指定し、LDFLAGSは動的ライブラリを検索する場所を提供します。私のシステムでは、LIBDIRが/LibraryPostgreSQL/9.3/lib
に正しく設定されていました 、ただし、LDFLAGSは次のように設定されています:
LDFLAGS = -L../../../src/common -L/usr/local/lib -L/opt/local/20140109/lib -Wl,-dead-strip-dylibs
libpq.5.dylib
以降 これらの場所のいずれにも存在しなかったため、gemはそれを見つけることができず、代わりに/usr/lib
にたまたまインストールされた古いバージョンを見つけました。 。
これを修正する1つの方法は、おそらくextconf.rb
のコードを変更することにより、正しいファイルの場所をLDFLAGSに挿入することです。 設定ファイルを生成します。ただし、この場合のはるかに簡単な修正は、/usr/local/lib
にシンボリックリンクを追加することです。 正しいファイルの場所へ:
/usr/local/lib> ln -s /Library/PostgreSQL/9.3/lib/libpq.5.dylib libpq.5.dylib
同様の問題が発生した場合は、pg_config
の出力を調べてください。 、およびLDFLAGSによってすでに指定されているディレクトリの1つに正しいファイルの場所へのシンボリックリンクを配置できるかどうかを確認します。