web-dev-qa-db-ja.com

共有ライブラリのロード中にエラーが発生しました: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

私が間違っているのは何ですか?

19
McKibet

これを試して:

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:幸せになろう!

21
Yahya Yahyaoui

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

また、「下に示すように」セクションにlibpq.so.5リンクが表示されないのはなぜですか?たぶんldconfigを実行するだけですか?

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/元のファイル名を使用。

根本的な原因は、インストールがこのファイルを共有場所に配置しなかったためです。

6
oden