URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 70253
[ Назад ]

Исходное сообщение
"Помогите с Perl"

Отправлено igal , 15-Ноя-06 00:45 
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');

Помогите разобратся где собака зарыта!


Содержание

Сообщения в этом обсуждении
"Помогите с Perl"
Отправлено gibbon , 15-Ноя-06 01:15 
Ну видимо надо установить модуль Pg

"Помогите с Perl"
Отправлено igal , 15-Ноя-06 01:40 
>Ну видимо надо установить модуль Pg
Уснановил! Задачя не решилась!

"Помогите с Perl"
Отправлено Skif , 15-Ноя-06 03:38 
>>Ну видимо надо установить модуль 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

И результат в студию.


"Помогите с Perl"
Отправлено igal , 15-Ноя-06 14:10 
>>>Ну видимо надо установить модуль 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 >


"Помогите с Perl"
Отправлено Skif , 15-Ноя-06 16:14 
Как устанавливался модуль? Руками, через CPAN, из портов?

"Помогите с Perl"
Отправлено igal , 15-Ноя-06 18:13 
>Как устанавливался модуль? Руками, через CPAN, из портов?


Из портов!


"Помогите с Perl"
Отправлено kvk , 15-Ноя-06 18:39 
>>Как устанавливался модуль? Руками, через CPAN, из портов?
>
>
>Из портов!


а если
use DBI;
use DBD:Pg;


"Помогите с Perl"
Отправлено kvk , 15-Ноя-06 18:40 
>>Как устанавливался модуль? Руками, через CPAN, из портов?
>
>
>Из портов!


а если
use DBI;
# sorry
use DBD::Pg;


"Помогите с Perl"
Отправлено Skif , 15-Ноя-06 18:48 
>>Как устанавливался модуль? Руками, через CPAN, из портов?
>
>
>Из портов!


Если из портов, то что именно ставили.
Как отрабатывает
perldoc Pg


"Помогите с Perl"
Отправлено igal , 15-Ноя-06 21:08 
>>>Как устанавливался модуль? Руками, через CPAN, из портов?
>>
>>
>>Из портов!
>
>
>Если из портов, то что именно ставили.

p5-DBD-Pg-13

>Как отрабатывает
>perldoc Pg
Извените.Не понял??


"Помогите с Perl"
Отправлено igal , 15-Ноя-06 21:35 
>>>>Как устанавливался модуль? Руками, через CPAN, из портов?
>>>
>>>
>>>Из портов!
>>
>>
>>Если из портов, то что именно ставили.
>
>p5-DBD-Pg-13
>
>>Как отрабатывает
>>perldoc Pg
>Извените.Не понял??


Да! Это случилось после переустановки перла 5.6.1 на 5.8.8 , первый был после удален!


"Помогите с Perl"
Отправлено Hammer , 15-Ноя-06 21:54 
>>>>>Как устанавливался модуль? Руками, через CPAN, из портов?
>>>>
>>>>
>>>>Из портов!
>>>
>>>
>>>Если из портов, то что именно ставили.
>>
>>p5-DBD-Pg-13
>>
>>>Как отрабатывает
>>>perldoc Pg
>>Извените.Не понял??
>
>
>Да! Это случилось после переустановки перла 5.6.1 на 5.8.8 , первый был
>после удален!

а portupgrade нынче не в почете?


"Помогите с Perl"
Отправлено igal , 15-Ноя-06 22:12 
>>>>>>Как устанавливался модуль? Руками, через CPAN, из портов?
>>>>>
>>>>>
>>>>>Из портов!
>>>>
>>>>
>>>>Если из портов, то что именно ставили.
>>>
>>>p5-DBD-Pg-13
>>>
>>>>Как отрабатывает
>>>>perldoc Pg
>>>Извените.Не понял??
>>
>>
>>Да! Это случилось после переустановки перла 5.6.1 на 5.8.8 , первый был
>>после удален!
>
>а portupgrade нынче не в почете?
ну!После боя!!!... Решение найти надо! нужно очень!!!


"Помогите с Perl"
Отправлено Hammer , 16-Ноя-06 05:47 
>>>>>>>Как устанавливался модуль? Руками, через CPAN, из портов?
>>>>>>
>>>>>>
>>>>>>Из портов!
>>>>>
>>>>>
>>>>>Если из портов, то что именно ставили.
>>>>
>>>>p5-DBD-Pg-13
>>>>
>>>>>Как отрабатывает
>>>>>perldoc Pg
>>>>Извените.Не понял??
>>>
>>>
>>>Да! Это случилось после переустановки перла 5.6.1 на 5.8.8 , первый был
>>>после удален!
>>
>>а portupgrade нынче не в почете?
>ну!После боя!!!... Решение найти надо! нужно очень!!!

Заходишь порт p5-DBD-Pg-13 и

make deinstall && make install


"Помогите с Perl"
Отправлено Skif , 16-Ноя-06 11:56 
>>>>>Как устанавливался модуль? Руками, через 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);


"Помогите с Perl"
Отправлено igal , 16-Ноя-06 21:10 
>>>>>>Как устанавливался модуль? Руками, через 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 1

Stop in /ftp/ports/databases/p5-Pg/work/Pg-2.1.1.
*** Error code 1

Stop in /ftp/ports/databases/p5-Pg.
/ftp/ports/databases/p5-Pg >
(


"Помогите с Perl"
Отправлено lavr , 16-Ноя-06 21:25 
Прежде чем что-то выяснять:

# less /usr/ports/UPDATING
...
20060220:
  AFFECTS: users of lang/perl5.8
  AUTHOR: tobez@FreeBSD.org

  lang/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.org

  lang/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


"Помогите с Perl"
Отправлено timmy , 16-Ноя-06 10:42 

1. find / -name "Pg.pm"

2. в начале до use   :

push (@INC,'found_PATH');

3. workaround кнечено, лучше по путному переставить, но если срочно..


"Помогите с Perl"
Отправлено Константин , 23-Июл-07 08:08 
а если под 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  есть в наличии


"Помогите с Perl"
Отправлено timmy , 24-Июл-07 09:25 
>а если под 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'ом


"Помогите с Perl"
Отправлено Константин , 25-Июл-07 06:00 

>а вообще лучше системный подход - как написано lavr'ом

системный подход не причем
все оказалось чисто в правах на dbi.so
чуток не хватало как оказалось