アプリ版:「スタンプのみでお礼する」機能のリリースについて

今まで問題なく動いていた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

A 回答 (2件)

がると申します。


えっと…ログに原因の大本はそのまんま書いてあると思うのですが。
直接的には

> 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ファイルに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が見つからないようです。
こういった場合どう対処すればよいのでしょうか・・・?

補足日時:2006/08/22 19:20
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/08/22 19:29

がるです。


root権限で、以下を実行してみてください。

1.
/etc/ld.so.conf ファイルに、"/usr/local/pgsql/lib/"を追記してください。
最後の行でOKです。

2.
ldconfigコマンドを実行してください。多分、/sbin/ldconfig が、正しいフルパスのはずです。

3.
もう一回、ldd実行してみてください。not findがなくなってれば、OKです。

どうでしょうか?
    • good
    • 0
この回答へのお礼

ありがとうございます。
# 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プログラムも動くようになりました。
ありがとうございました!!

お礼日時:2006/08/23 09:41

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!