FreeBSD 4.9-RELEASE-p4
/root/test.pl
Can't locate loadable object for module Pg in @INC (@INC contains: /usr/local/lib/perl5/5.8.8/BSDPAN /usr/local/lib/perl5/site_perl/5.8.8/mach /usr/local/lib/perl5/site_perl/5.8.8 /usr/local/lib/perl5/site_perl/5.005 /usr/local/lib/perl5/site_perl /usr/local/lib/perl5/5.8.8/mach /usr/local/lib/perl5/5.8.8 .) at /root/test.pl line 3
Compilation failed in require at /root/test.pl line 3.
BEGIN failed--compilation aborted at /root/test.pl line 3.#test.pl
#!/usr/bin/perl
#
use Pg;print ('test perl script');
Помогите разобратся где собака зарыта!
Ну видимо надо установить модуль Pg
>Ну видимо надо установить модуль Pg
Уснановил! Задачя не решилась!
>>Ну видимо надо установить модуль Pg
>Уснановил! Задачя не решилась!Создаем следующий скрипт(test.pl, например):
#!/usr/bin/perl -wuse 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И результат в студию.
>>>Ну видимо надо установить модуль Pg
>>Уснановил! Задачя не решилась!
>
>Создаем следующий скрипт(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
>
>И результат в студию./root > ./test.pl | grep -i pg
Pg.pm
/root >
Как устанавливался модуль? Руками, через CPAN, из портов?
>Как устанавливался модуль? Руками, через CPAN, из портов?
Из портов!
>>Как устанавливался модуль? Руками, через CPAN, из портов?
>
>
>Из портов!
а если
use DBI;
use DBD:Pg;
>>Как устанавливался модуль? Руками, через CPAN, из портов?
>
>
>Из портов!
а если
use DBI;
# sorry
use DBD::Pg;
>>Как устанавливался модуль? Руками, через CPAN, из портов?
>
>
>Из портов!
Если из портов, то что именно ставили.
Как отрабатывает
perldoc Pg
>>>Как устанавливался модуль? Руками, через CPAN, из портов?
>>
>>
>>Из портов!
>
>
>Если из портов, то что именно ставили.p5-DBD-Pg-13
>Как отрабатывает
>perldoc Pg
Извените.Не понял??
>>>>Как устанавливался модуль? Руками, через CPAN, из портов?
>>>
>>>
>>>Из портов!
>>
>>
>>Если из портов, то что именно ставили.
>
>p5-DBD-Pg-13
>
>>Как отрабатывает
>>perldoc Pg
>Извените.Не понял??
Да! Это случилось после переустановки перла 5.6.1 на 5.8.8 , первый был после удален!
>>>>>Как устанавливался модуль? Руками, через CPAN, из портов?
>>>>
>>>>
>>>>Из портов!
>>>
>>>
>>>Если из портов, то что именно ставили.
>>
>>p5-DBD-Pg-13
>>
>>>Как отрабатывает
>>>perldoc Pg
>>Извените.Не понял??
>
>
>Да! Это случилось после переустановки перла 5.6.1 на 5.8.8 , первый был
>после удален!а portupgrade нынче не в почете?
>>>>>>Как устанавливался модуль? Руками, через CPAN, из портов?
>>>>>
>>>>>
>>>>>Из портов!
>>>>
>>>>
>>>>Если из портов, то что именно ставили.
>>>
>>>p5-DBD-Pg-13
>>>
>>>>Как отрабатывает
>>>>perldoc Pg
>>>Извените.Не понял??
>>
>>
>>Да! Это случилось после переустановки перла 5.6.1 на 5.8.8 , первый был
>>после удален!
>
>а portupgrade нынче не в почете?
ну!После боя!!!... Решение найти надо! нужно очень!!!
>>>>>>>Как устанавливался модуль? Руками, через CPAN, из портов?
>>>>>>
>>>>>>
>>>>>>Из портов!
>>>>>
>>>>>
>>>>>Если из портов, то что именно ставили.
>>>>
>>>>p5-DBD-Pg-13
>>>>
>>>>>Как отрабатывает
>>>>>perldoc Pg
>>>>Извените.Не понял??
>>>
>>>
>>>Да! Это случилось после переустановки перла 5.6.1 на 5.8.8 , первый был
>>>после удален!
>>
>>а portupgrade нынче не в почете?
>ну!После боя!!!... Решение найти надо! нужно очень!!!Заходишь порт p5-DBD-Pg-13 и
make deinstall && make install
>>>>>Как устанавливался модуль? Руками, через CPAN, из портов?
>>>>
>>>>
>>>>Из портов!
>>>
>>>
>>>Если из портов, то что именно ставили.
>>
>>p5-DBD-Pg-13
>>
>>>Как отрабатывает
>>>perldoc Pg
>>Извените.Не понял??
>
>
>Да! Это случилось после переустановки перла 5.6.1 на 5.8.8 , первый был
>после удален![root@ackinak-mob.bsd] /usr/ports/:make search key=Pg | grep /usr/ports/ | grep Pg
Path: /usr/ports/databases/p5-Class-DBI-Pg
Path: /usr/ports/databases/p5-DBD-Pg
Path: /usr/ports/databases/p5-DBD-Pg-13
Path: /usr/ports/databases/p5-DBD-PgPP
Path: /usr/ports/databases/p5-DBD-PgSPI
Path: /usr/ports/databases/p5-Pg
Path: /usr/ports/databases/py-pyPgSQL
Path: /usr/ports/devel/p5-DateTime-Format-Pgесли вы ставили p5-DBD-Pg, то и вызывать должны
use DBD::Pg;
как, кстати и говорилось выше.
а perldoc Pg просто при установленном Pg выдает документацию по модулю. Если он выдал, соответственно модуль стоит.
По теме, продолжаю:
cd /usr/ports/databases/p5-Pg
make all install clean
и после этого пробуем:
#!/usr/pin/perl -w
use Pg;
print "Pg is working now!\n";
exit(0);
>>>>>>Как устанавливался модуль? Руками, через CPAN, из портов?
>>>>>
>>>>>
>>>>>Из портов!
>>>>
>>>>
>>>>Если из портов, то что именно ставили.
>>>
>>>p5-DBD-Pg-13
>>>
>>>>Как отрабатывает
>>>>perldoc Pg
>>>Извените.Не понял??
>>
>>
>>Да! Это случилось после переустановки перла 5.6.1 на 5.8.8 , первый был
>>после удален!
>
>[root@ackinak-mob.bsd] /usr/ports/:make search key=Pg | grep /usr/ports/ | grep Pg
>Path: /usr/ports/databases/p5-Class-DBI-Pg
>Path: /usr/ports/databases/p5-DBD-Pg
>Path: /usr/ports/databases/p5-DBD-Pg-13
>Path: /usr/ports/databases/p5-DBD-PgPP
>Path: /usr/ports/databases/p5-DBD-PgSPI
>Path: /usr/ports/databases/p5-Pg
>Path: /usr/ports/databases/py-pyPgSQL
>Path: /usr/ports/devel/p5-DateTime-Format-Pg
>
>если вы ставили p5-DBD-Pg, то и вызывать должны
>use DBD::Pg;
>как, кстати и говорилось выше.
>а perldoc Pg просто при установленном Pg выдает документацию по модулю. Если
>он выдал, соответственно модуль стоит.
>По теме, продолжаю:
>cd /usr/ports/databases/p5-Pg
>make all install clean
>и после этого пробуем:
>#!/usr/pin/perl -w
>use Pg;
>print "Pg is working now!\n";
>exit(0);
Pg.xs: In function `XS_PG_results_printTuples':
Pg.xs:730: structure has no member named `result'
*** Error code 1Stop in /ftp/ports/databases/p5-Pg/work/Pg-2.1.1.
*** Error code 1Stop in /ftp/ports/databases/p5-Pg.
/ftp/ports/databases/p5-Pg >
(
Прежде чем что-то выяснять:# less /usr/ports/UPDATING
...
20060220:
AFFECTS: users of lang/perl5.8
AUTHOR: tobez@FreeBSD.orglang/perl5.8 has been updated to 5.8.8. You should update everything
depending on perl. The easiest way to do that is to use
perl-after-upgrade script supplied with lang/perl5.8. Please see
its manual page for details.
...
и тд и тп
20050201:
AFFECTS: users of lang/perl5 and lang/perl5.8
AUTHOR: tobez@FreeBSD.orglang/perl5 has been updated to 5.6.2, and lang/perl5.8 has been
updated to 5.8.6. you should update everything depending on perl, that
is:* first, upgrade your perl installation (use either lang/perl5 or
lang/perl5.8, the latter being recommended);
* for FreeBSD 4.X, run "use.perl port", so that the system knows you
have 5.8.6 or 5.6.2; this step is not needed on FreeBSD 5.X and
FreeBSD -CURRENT;
* run some magic incantations to upgrade all ports depending on perl,
that is run something like :
portupgrade -f `(pkg_info -R perl-5\* |tail +4; \
find /usr/local/lib/perl5/site_perl/5.[68].[1245] -type f -print0 \
| xargs -0 pkg_which -fv | sed -e '/: ?/d' -e 's/.*: //')|sort -u`
This is likely to fail for a few ports, you'll have to upgrade them
afterwards by hand.Если вы уж засели на старой системе, так не мешало бы быть в КУРСЕ, сколько
можно одни и те же грабли расписывать (можно было бы и поиском воспользоваться)В 4.x есть СИСТЕМНЫЙ perl, есть порты с perl56 и perl58 - перед сборкой любого
из портов, ЛУЧШЕ удалить ПРЕДЫДУЩИЙ, либо не забывать про:
use.perl и perl-after-upgradeВыше в UPDATING ну все расписано и здесь НЕ РАЗ разжевывалось, самый надежный способ:
# ls -lA /var/db/pkg | grep p5-
сохранить СПИСОК всех модулей которые нужны
- удалить предыдущий perl56
- собрать и установить новый не забывая про выше-описанные скрипты
- удалить все старые модули p5-
- пересобрать эти модули по новой, НЕ забывая о том что НЕкоторые могут НЕпонадобиться
всвязи с тем что присутствуют в базовом perl58Вот тогда фсЁ заколоситься, если делать все правильно, из портов и не забывать читать
сообщения на экране выдаваемые при make install, уже не говоря об /usr/ports/UPDATING
1. find / -name "Pg.pm"
2. в начале до use :
push (@INC,'found_PATH');
3. workaround кнечено, лучше по путному переставить, но если срочно..
а если под root все нормально скрипт отрабатывает а под другим пользователем
su - www -c script.cgi
пишет
Can't locate loadable object for module DBI in @INC (@INC contains: /usr/local/lib/perl5/5.8.8/BSDPAN /usr/local/lib/perl5/site_perl/5.8.8/mach /usr/local/lib/perl5/site_perl/5.8.8 /usr/local/lib/perl5/site_perl /usr/local/lib/perl5/5.8.8/mach /usr/local/lib/perl5/5.8.8) at /usr/local/lib/perl5/site_perl/5.8.8/mach/DBI.pm line 261
BEGIN failed--compilation aborted at /usr/local/lib/perl5/site_perl/5.8.8/mach/DBI.pm line 261.
Compilation failed in require at ./script.cgi line 6.
BEGIN failed--compilation aborted at ./script.cgi line 6.
где копатьфайл /usr/local/lib/perl5/site_perl/5.8.8/mach/DBI.pm есть в наличии
>а если под root все нормально скрипт отрабатывает а под другим пользователем
>
>su - www -c script.cgi
>пишет....
at /usr/local/lib/perl5/site_perl/5.8.8/mach/DBI.pm line 261
>BEGIN failed--compilation aborted at /usr/local/lib/perl5/site_perl/5.8.8/mach/DBI.pm line 261.
>где копатьв строке 261 модуля DBI.pm- что он не может найти при подключении доп модулей
и посмотреть различия @INC для пользователя www и для root'а
>
>файл /usr/local/lib/perl5/site_perl/5.8.8/mach/DBI.pm есть в наличииа вообще лучше системный подход - как написано lavr'ом
>а вообще лучше системный подход - как написано lavr'омсистемный подход не причем
все оказалось чисто в правах на dbi.so
чуток не хватало как оказалось