共有ライブラリ読み込み中のエラー: libpq.so.5: 共有オブジェクトファイルを開くことができません。そのようなファイルやディレクトリはありません

Debian上で動作するPostgreSQL 9.0.4サーバで pg_dump を実行しようとしていますが、以下のエラーが表示されます。

./pg_dump: error while loading shared libraries: libpq.so.5: cannot open shared object file: No such file or directory 

libpq.so.5 は、以下のように libpq.so.5.3 にリンクしています。

lrwxrwxrwx 1 root root     12 Jun 27 16:24 libpq.so.5 -> libpq.so.5.3
-rwxr-xr-x 1 root root 180749 Jun 21 02:43 libpq.so.5.3

何か間違っているのでしょうか?

これを試してみてください。

1: libpq.so.5 のパスを知る。

find / -name libpq.so.5

出力例です。 /usr/pgsql-9.4/lib/libpq.so.5` と出力されました。 何も見つからなかった場合は、使用しているpostgresqlのバージョンとOSプラットフォームに適したpostgresql-libsが既にインストールされているかどうか確認してください。

2: そのライブラリを /usr/lib などのよく知られたライブラリパスにシンボリックリンクしてください。

ln -s /usr/pgsql-9.4/lib/libpq.so.5 /usr/lib/libpq.so.5

注意 64ビット版の場合は、64ビット版のライブラリパスにもシンボリックリンクを張らなければなりません。

ln -s /usr/pgsql-9.4/lib/libpq.so.5 /usr/lib64/libpq.so.5

3: Be happy !

解説 (0)

これらの libpq ファイルはどのディレクトリにありますか?環境変数 LD_LIBRARY_PATH にこのディレクトリを指すように設定するか、標準的な場所にあることを確認してみてください。

また、以下のようなセクションに libpq.so.5 のリンクが表示されないのはなぜですか?もしかしたら、ldconfigを実行すればいいのでは?

解説 (16)

RHEL 6.5上のPostgres 9.5で同じエラーメッセージが出ていたので、この投稿にたどり着きました。 しかし、libpq.so.5というファイルを探しても何も返ってこないので、さらに混乱しました。

結局、以下のシンボリックリンクで実行できました。

ln -s /opt/rh/rh-postgresql95/root/usr/lib64/libpq.so.rh-postgresql95-5  /usr/lib64/libpq.so.rh-postgresql95-5 
ln -s /opt/rh/rh-postgresql95/root/usr/lib64/libpq.so.rh-postgresql95-5  /usr/lib/libpq.so.rh-postgresql95-5

これらのパスは RHEL 用です。find / -name libpq.so を使ってインストール場所を確認し、オリジナルのファイル名で /usr/lib//usr/lib64/ に追加してください。

根本的な原因は、インストール時にこのファイルを共有の場所に置かなかったことにあるようです。

解説 (2)