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

Исходное сообщение
"Пакеты в Перл"

Отправлено Kos84 , 22-Ноя-07 21:44 
Кто знает, почему не подключаются пакеты в Перл, которые на самом деле установлены.
Я пробую из командной строки perl -e "use XML::Parser" и все отлично.
Но в скрипте использую XML::Simple и он не может подключить XML::Parser.
Я понимаю, что проблема в моем скрипте. Он запускается как демон, то есть форкает себя и меняет uid gid, директория и т.п. Возможно кто то знает в чем дело?

Содержание

Сообщения в этом обсуждении
"Пакеты в Перл"
Отправлено anonymous , 23-Ноя-07 03:13 
>Кто знает, почему не подключаются пакеты в Перл, которые на самом деле
>установлены.
>Я пробую из командной строки perl -e "use XML::Parser" и все отлично.
>
>Но в скрипте использую XML::Simple и он не может подключить XML::Parser.
>Я понимаю, что проблема в моем скрипте. Он запускается как демон, то
>есть форкает себя и меняет uid gid, директория и т.п. Возможно
>кто то знает в чем дело?

Возможно у вас в системе два перла, и один вы вызываете из командной строки (допустим /usr/bin/perl), а в скрипте прописан #!/usr/local/bin/perl ?


"Пакеты в Перл"
Отправлено Kos84 , 23-Ноя-07 13:14 
>[оверквотинг удален]
>>установлены.
>>Я пробую из командной строки perl -e "use XML::Parser" и все отлично.
>>
>>Но в скрипте использую XML::Simple и он не может подключить XML::Parser.
>>Я понимаю, что проблема в моем скрипте. Он запускается как демон, то
>>есть форкает себя и меняет uid gid, директория и т.п. Возможно
>>кто то знает в чем дело?
>
>Возможно у вас в системе два перла, и один вы вызываете из
>командной строки (допустим /usr/bin/perl), а в скрипте прописан #!/usr/local/bin/perl ?

Нашел проблему, как яч понимаю, все дело в том, что скрипт работает как демон.
Скрипт просто не мог сделать require или use. Так как ИМХО эти операции это
открытие файла. В общем все решается тем, что нужно подключить все пакеты, которые подключаются чере другие пакеты, до того как скрипт создаст потомка и поменяет ему uid и gid.
Теперь другая проблема, скрипт не может запустить другой скрипт через exec.


"Пакеты в Перл"
Отправлено angra , 23-Ноя-07 18:18 
А что в этом случае в $! ? Так как вы отвязаны от терминала, то запишите в файл.

"Пакеты в Перл"
Отправлено Kos84 , 23-Ноя-07 21:08 
>А что в этом случае в $! ? Так как вы отвязаны
>от терминала, то запишите в файл.

Спасибо. Разобрался проблемой уже.

$! - пишет что не может найти пакет и выводит содержимое @ISA. Естественно директория, где пакет лежит там присутсвует.
Я просто включил все пакеты, которые используются до того как скрипт форкается.
А вообще как я понял все дело в chroot. Не подумал, как то что пакеты тожене будут видны.