Кто знает, почему не подключаются пакеты в Перл, которые на самом деле установлены.
Я пробую из командной строки perl -e "use XML::Parser" и все отлично.
Но в скрипте использую XML::Simple и он не может подключить XML::Parser.
Я понимаю, что проблема в моем скрипте. Он запускается как демон, то есть форкает себя и меняет uid gid, директория и т.п. Возможно кто то знает в чем дело?
>Кто знает, почему не подключаются пакеты в Перл, которые на самом деле
>установлены.
>Я пробую из командной строки perl -e "use XML::Parser" и все отлично.
>
>Но в скрипте использую XML::Simple и он не может подключить XML::Parser.
>Я понимаю, что проблема в моем скрипте. Он запускается как демон, то
>есть форкает себя и меняет uid gid, директория и т.п. Возможно
>кто то знает в чем дело?Возможно у вас в системе два перла, и один вы вызываете из командной строки (допустим /usr/bin/perl), а в скрипте прописан #!/usr/local/bin/perl ?
>[оверквотинг удален]
>>установлены.
>>Я пробую из командной строки perl -e "use XML::Parser" и все отлично.
>>
>>Но в скрипте использую XML::Simple и он не может подключить XML::Parser.
>>Я понимаю, что проблема в моем скрипте. Он запускается как демон, то
>>есть форкает себя и меняет uid gid, директория и т.п. Возможно
>>кто то знает в чем дело?
>
>Возможно у вас в системе два перла, и один вы вызываете из
>командной строки (допустим /usr/bin/perl), а в скрипте прописан #!/usr/local/bin/perl ?Нашел проблему, как яч понимаю, все дело в том, что скрипт работает как демон.
Скрипт просто не мог сделать require или use. Так как ИМХО эти операции это
открытие файла. В общем все решается тем, что нужно подключить все пакеты, которые подключаются чере другие пакеты, до того как скрипт создаст потомка и поменяет ему uid и gid.
Теперь другая проблема, скрипт не может запустить другой скрипт через exec.
А что в этом случае в $! ? Так как вы отвязаны от терминала, то запишите в файл.
>А что в этом случае в $! ? Так как вы отвязаны
>от терминала, то запишите в файл.Спасибо. Разобрался проблемой уже.
$! - пишет что не может найти пакет и выводит содержимое @ISA. Естественно директория, где пакет лежит там присутсвует.
Я просто включил все пакеты, которые используются до того как скрипт форкается.
А вообще как я понял все дело в chroot. Не подумал, как то что пакеты тожене будут видны.