The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Perl + Postgres"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [ Отслеживать ]

"Perl + Postgres"  +/
Сообщение от R4z0R email(??) on 02-Дек-08, 10:04 
Грохнулся хард, на котором был сайт и БД на Postgresql 8.1, данные восстановили и закинули в БД в другую директорию (бд была в /pgsql а стало в /usr/local/pgsql), путь в /etc/init.d/postgresql исправил на новый, все запускается. Теперь про запуск сайта - сайт сделан на perl и использует для коннекта DBD::Pg, при запуске выдает ошибку: Internal Server Error, в логах такая запись:
install_driver(Pg) failed: Can't load '/usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/auto/DBD/Pg/Pg.so' for module DBD::Pg: libpq.so.4: cannot open shared object file: No such file or directory at /usr/lib/perl5/5.8.5/i386-linux-thread-multi/DynaLoader.pm line 230
хотя сам файл по такому пути есть. Теперь подробности:

[root@web /]# cat /etc/ld.so.conf
include ld.so.conf.d/*.conf
/usr/X11R6/lib
/usr/local/pgsql/lib
/usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/auto/DBD/Pg

[root@web /]# echo $POSTGRES_LIB
/usr/local/pgsql/lib

LD_LIBRARY_PATH - не определена,
и после установки cpan -i DBD::Pg, модуль perl-DBD-Pg в списке не появился:

[root@web /]# rpm -qa | grep perl
perl-libxml-enno-1.02-31
perl-5.8.5-12.1
perl-DBI-1.40-8
perl-HTML-Tagset-3.03-30
perl-XML-SAX-0.12-7
perl-5.8.5-24.RHEL4
perl-XML-Parser-2.34-5
perl-Crypt-SSLeay-0.51-5
perl-Parse-Yapp-1.05-32
perl-libwww-perl-5.79-5
perl-XML-Encoding-1.01-26
perl-Net-DNS-0.48-1
perl-XML-NamespaceSupport-1.08-6
perl-XML-Twig-3.13-6
perl-DateManip-5.42a-3
perl-URI-1.30-4
perl-DBD-MySQL-2.9004-3.1
perl-HTML-Parser-3.35-6
perl-XML-Dumper-0.71-2
perl-Digest-HMAC-1.01-13
perl-Convert-ASN1-0.18-3
perl-LDAP-0.31-5
perl-XML-LibXML-1.58-1
perl-libxml-perl-0.07-30
perl-Digest-SHA1-2.07-5
perl-XML-LibXML-Common-0.13-7
perl-Filter-1.30-6
perl-Time-HiRes-1.55-3
perl-XML-Grove-0.46alpha-27

Что нужно сделать, чтобы perl приконектился к Pg?

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

  • Perl + Postgres, Pahanivo, 10:12 , 02-Дек-08, (1)  
    • Perl + Postgres, R4z0R, 10:26 , 02-Дек-08, (2)  
      • Perl + Postgres, R4z0R, 11:03 , 02-Дек-08, (3)  
        • Perl + Postgres, R4z0R, 11:34 , 02-Дек-08, (4)  
          • Perl + Postgres, R4z0R, 12:41 , 02-Дек-08, (5)  
            • Perl + Postgres, Pahanivo, 13:48 , 02-Дек-08, (6)  
              • Perl + Postgres, R4z0R, 13:50 , 02-Дек-08, (7)  
                • Perl + Postgres, angra, 15:54 , 02-Дек-08, (8)  
                  • Perl + Postgres, R4z0R, 16:56 , 02-Дек-08, (9)  
                    • Perl + Postgres, HiTek, 20:47 , 16-Май-09, (10)  

Сообщения по теме [Сортировка по времени | RSS]


1. "Perl + Postgres"  +/
Сообщение от Pahanivo email(ok) on 02-Дек-08, 10:12 
попробуй переставить модули на которые ругается
cpan те в помащь )


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Perl + Postgres"  +/
Сообщение от R4z0R email(??) on 02-Дек-08, 10:26 
>попробуй переставить модули на которые ругается
>cpan те в помащь )

пробовал cpan -i DBD::Pg - не помогло, или надо по другому? ОСь - RHEL4, создал скрипт:

test.pl

#!/usr/bin/perl -w

use Storable;
foreach my $list(@INC){
        print "$list :\n";
        my $ll = `ls -aF $list | grep -i \.pm`;
        print "$ll\n\n";
}
exit(0);

Выполнил
./test.pl | grep -i pg

Результат нулевой...блин

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Perl + Postgres"  +/
Сообщение от R4z0R email(??) on 02-Дек-08, 11:03 
[root@web /]# cpan -i Pg
дает ошибку:
Running make test
PERL_DL_NONLAZY=1 /usr/bin/perl "-Iblib/lib" "-Iblib/arch" test.pl
Can't call method "errorMessage" on an undefined value at test.pl line 99.
make: *** [test_dynamic] Error 255
  /usr/bin/make test -- NOT OK
Running make install
  make test had returned bad status, won't install without force


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Perl + Postgres"  +/
Сообщение от R4z0R email(??) on 02-Дек-08, 11:34 
установил руками:
[root@web pgsql_perl5-1.9.0]# perl Makefile.PL
Configuring Pg
Remember to actually read the README file !
OS: linux
Checking if your kit is complete...
Looks good
Writing Makefile for Pg
[root@web pgsql_perl5-1.9.0]# make
cp Pg.pm blib/lib/Pg.pm
AutoSplitting blib/lib/Pg.pm (blib/lib/auto/Pg)
/usr/bin/perl /usr/lib/perl5/5.8.5/ExtUtils/xsubpp  -typemap /usr/lib/perl5/5.8.5/ExtUtils/typemap -typemap typemap  Pg.xs > Pg.xsc && mv Pg.xsc Pg.c
gcc -c  -I/usr/local/pgsql/include -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -O2 -pipe -m32 -march=i386 -mtune=pentium4   -DVERSION=\"1.9.0\" -DXS_VERSION=\"1.9.0\" -fPIC "-I/usr/lib/perl5/5.8.5/i386-linux-thread-multi/CORE"   Pg.c
Running Mkbootstrap for Pg ()
chmod 644 Pg.bs
rm -f blib/arch/auto/Pg/Pg.so
gcc  -shared -L/usr/local/lib Pg.o  -o blib/arch/auto/Pg/Pg.so   -L/usr/local/pgsql/lib -lpq
chmod 755 blib/arch/auto/Pg/Pg.so
cp Pg.bs blib/arch/auto/Pg/Pg.bs
chmod 644 blib/arch/auto/Pg/Pg.bs
Manifying blib/man3/Pg.3pm
[root@web pgsql_perl5-1.9.0]# make install
Installing /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/auto/Pg/Pg.bs
Installing /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/auto/Pg/Pg.so
Files found in blib/arch: installing files in blib/lib into architecture dependent library tree
Installing /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/Pg.pm
Installing /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/auto/Pg/autosplit.ix
Installing /usr/share/man/man3/Pg.3pm
Writing /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/auto/Pg/.packlist
Appending installation info to /usr/lib/perl5/5.8.5/i386-linux-thread-multi/perllocal.pod

все вроде ок, тестовый скрипт не ругается

#!/usr/bin/perl
#
use Pg;

print ('test perl script');

выдает test perl script, но ошибка install_driver(Pg) failed: Can't load '/usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/auto/DBD/Pg/Pg.so' for module DBD::Pg: libpq.so.4: cannot open shared object file: No such file or directory at /usr/lib/perl5/5.8.5/i386-linux-thread-multi/DynaLoader.pm line 230.,
осталась


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Perl + Postgres"  +/
Сообщение от R4z0R email(??) on 02-Дек-08, 12:41 
вроде нашел, если скрипт
#!/usr/bin/perl
#
use Pg;

print ('test perl script');
запускать от рута, то все ок, если от апача, то ошибка

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "Perl + Postgres"  +/
Сообщение от Pahanivo email(ok) on 02-Дек-08, 13:48 
>вроде нашел, если скрипт
>#!/usr/bin/perl
>#
>use Pg;
>
>print ('test perl script');
>запускать от рута, то все ок, если от апача, то ошибка

Ты Pg переставлял ил DBD::Pg? Это такто два разных модуля.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "Perl + Postgres"  +/
Сообщение от R4z0R email(??) on 02-Дек-08, 13:50 
и то и то

от рута заработало, от апача нет :(

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "Perl + Postgres"  +/
Сообщение от angra (ok) on 02-Дек-08, 15:54 
Проверь что на новой машине апач не в чруте.
Напиши или найди простой скрипт на перле, имитирующий шелл через веб и посмотри что ему видно и с какими правами, не забудь защитить его от мира.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "Perl + Postgres"  +/
Сообщение от R4z0R email(??) on 02-Дек-08, 16:56 
>Проверь что на новой машине апач не в чруте.
>Напиши или найди простой скрипт на перле, имитирующий шелл через веб и
>посмотри что ему видно и с какими правами, не забудь защитить
>его от мира.

разобрался, прав не хватало

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

10. "Perl + Postgres"  +/
Сообщение от HiTek on 16-Май-09, 20:47 
>>Проверь что на новой машине апач не в чруте.
>>Напиши или найди простой скрипт на перле, имитирующий шелл через веб и
>>посмотри что ему видно и с какими правами, не забудь защитить
>>его от мира.
>
>разобрался, прав не хватало

Столкнулся с такой же проблемой. Дело не в правах, а в том, что библиотека libpq.so не загружена. О решении данной проблемы можно прочитать в README самого модуля DBD::Pg.

Необходимо сделать следующее:
1. прописать путь к директории содержащей библиотеку libpq.so в /etc/ld.so.conf
2. запустить /sbin/ldconfig

Вот выдержка из самого ридми.

DBD::Pg uses the libpq library that comes with Postgres. If the shared libpq
library is not available, DBD::Pg will error with a message that
usually mentions a file names libpq.so, like this:

    Can't load './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 .../DynaLoader.pm line 230.

This means that the libraries are not installed in a place where the system
can find them when it tries to load the Pg.so file. On some systems, you
can run /sbin/ldconfig -v to see a list of shared modules, or just search
the system for the file with "locate libpq.so". If it exists but is not being
loaded, you may need to add the directory it is in to /etc/ld.so.conf file
and run the ldconfig command. Otherwise, you may need to add the path to
the environment variable LD_LIBRARY_PATH.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Спонсоры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2023 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру