エラーの内容は'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.'です
エラーの原因は不明です
perlからpostgres連携時にエラー発生
今まで問題なく動いていたperlモジュールが、停電でサーバダウンした影響で起動しなくなりました。
LOGには
[notice] Accept mutex: sysvsem (Default: sysvsem)
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.
at /web/recruit.pl line 7
Compilation failed in require at /web/recruit.pl line 7.
と出力されており、use Pg;の行でエラーになっているのですが、原因が分かりません・・・
環境:
OS:vine linux
sql:postgres
がると申します。
えっと…ログに原因の大本はそのまんま書いてあると思うのですが。
直接的には
> 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が見えているかどうかを確認してみてください。
お礼
ちなみにlibpq.soファイルは、以下のディレクトリにありました。 /usr/local/pgsql/lib/libpq.so
補足
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が見つからないようです。 こういった場合どう対処すればよいのでしょうか・・・?