2010-01-21 3 views
2
Error: Can't load '/home/oracle/.cpan/build/DBD-Pg-2.16.1/blib/arch/auto/DBD/Pg/Pg.so' for module DBD::Pg: libpq.so.5: cannot open shared object file: No such file or directory at /usr/lib/perl5/5.8.8/i386-linux-thread-multi/DynaLoader.pm line 230. 

У кого-либо была такая же ошибка при установке модуля DBD :: Pg perl? что я могу сделать, чтобы исправить это?Почему установка DBD :: Pg не выполняется в DynaLoader?

+1

Похоже, что у вас нет установленных Postgres или DBD :: Pg не может найти библиотеку. btw ... Может ли сменить тег на «postgresql» – draegtun

+0

У меня установлен postgre. Я подключился к базе данных. Я установил глобальные переменные HOME, LIB и еще один, я не могу вспомнить имя. прямо сейчас –

ответ

4

Вы должны пойти под perl для решения этих проблем динамического связывания. Используйте strace program &> out, а затем grep для libpq.so.5. Мое предположение, что ваш libpq.so.5 находится не в том месте, или ваш DynaLoader не сконфигурирован. Прочтите документы по адресу @dl_library_path.

Вы можете увидеть, что ваш путь поиска с это (Трассирование также покажет, что пытается найти .so, проверяя каждый каталог):

perl -MDynaLoader -le'print for @DynaLoader::dl_library_path;' 

Убедитесь, что ваши libpq.5.so падения в одном из них. strace также покажет, возвращает ли ядро ​​ошибку DynaLoader, что она клоакирует; Более того, он обязательно скажет вам все, что знает DynaLoader.

0

Отсутствует файл libpq.so.5, который указывает, что у вас нет установленной клиентской библиотеки Postgresql. В Ubuntu этот файл предоставляется пакетом libpq5.

+0

У меня он установлен. Я могу вручную найти libpq.so, и все права правильные –

0

Убедитесь, что путь к библиотеке PostgreSQL находится либо в файле ld.so.conf, либо в файле в файле ld.so.conf.d и повторно запускается «sudo ldconf» (или sudo/sbin/ldconf). Это позаботилось об этой проблеме, когда я столкнулся с ней в прошлом.

0

Я знаю, что многие люди ответили на ваш вопрос, но я думал, что добавлю еще одну вещь. Makefile.PL находит библиотеки postgres, выполняя pg_config. Если этого не удается найти на вашем пути, вы обнаружите такую ​​ошибку. Интересно, однако, он ищет заголовки таким же образом. Попробуйте запустить pg_config с вашего терминала и посмотреть, что такое выход. Если он не найден на вашем пути, найдите его, добавьте в свой путь и попробуйте снова построить DBD::Pg

Смежные вопросы