• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:perlからpostgres連携時にエラー発生)

perlからpostgres連携時にエラー発生

このQ&Aのポイント
  • 停電でサーバダウンした影響で、perlモジュールが起動しなくなりました
  • エラーの内容は'Can't load '/usr/lib/perl5/site_perl/5.8.2/i386-linux-thread-multi/auto/Pg/Pg.so' for module Pg: libpq.so.2: cannot open shared object file: No such file or directory at /usr/lib/perl5/5.8.2/i386-linux-thread-multi/DynaLoader.pm line 229.'です
  • エラーの原因は不明です

質問者が選んだベストアンサー

  • ベストアンサー
  • galluda
  • ベストアンサー率35% (440/1242)
回答No.1

がると申します。 えっと…ログに原因の大本はそのまんま書いてあると思うのですが。 直接的には > Can't load '/usr/lib/perl5/site_perl/5.8.2/i386-linux-thread-multi/auto/Pg/Pg.so' for module Pg: libpq.so.2: cannot open shared objec t file: No such file or directory at /usr/lib/perl5/5.8.2/i386-linux-thread-multi/DynaLoader.pm line 229. の部分が原因に当たります。libpq.so.2が見つからないって言ってますね。 > 停電でサーバダウンした 影響だとすると…一つにはHDDが壊れ始めてる可能性が否定できないのですが。 そうでないとすると「起動後、手動で設定を追加したけどそれを起動時のシェルに登録してないから設定が霧散した」可能性でしょうか? とりあえず、libpq.soがあるかと、/usr/lib/perl5/site_perl/5.8.2/i386-linux-thread-multi/auto/Pg/Pg.soファイルにlddして、libpq.soが見えているかどうかを確認してみてください。

hahihuke
質問者

お礼

ちなみにlibpq.soファイルは、以下のディレクトリにありました。 /usr/local/pgsql/lib/libpq.so

hahihuke
質問者

補足

libpq.soファイルにlddすると下記のように表示されました。 # ldd Pg.so libpq.so.2 => not found libc.so.6 => /lib/i686/libc.so.6 (0x40033000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000) ご指摘の通りlibpq.so.2が見つからないようです。 こういった場合どう対処すればよいのでしょうか・・・?

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • galluda
  • ベストアンサー率35% (440/1242)
回答No.2

がるです。 root権限で、以下を実行してみてください。 1. /etc/ld.so.conf ファイルに、"/usr/local/pgsql/lib/"を追記してください。 最後の行でOKです。 2. ldconfigコマンドを実行してください。多分、/sbin/ldconfig が、正しいフルパスのはずです。 3. もう一回、ldd実行してみてください。not findがなくなってれば、OKです。 どうでしょうか?

hahihuke
質問者

お礼

ありがとうございます。 # ldd Pg.so libpq.so.2 => not found libc.so.6 => /lib/i686/libc.so.6 (0x40033000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000) でしたが、/etc/ld.so.conf にパスを記述すると # ldd Pg.so libpq.so.2 => /usr/local/pgsql/lib/libpq.so.2 (0x40033000) libc.so.6 => /lib/i686/libc.so.6 (0x40043000) libcrypt.so.1 => /lib/libcrypt.so.1 (0x4017d000) libresolv.so.2 => /lib/libresolv.so.2 (0x401aa000) libnsl.so.1 => /lib/libnsl.so.1 (0x401bc000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000) となり、not foundがなくなりました。 perlプログラムも動くようになりました。 ありがとうございました!!

すると、全ての回答が全文表示されます。

関連するQ&A