FastNetMon

Friday, 29 January 2010

Перенос PAR пэкаджа с 32 битной на 64 битную платформу

Я уже говорил, что PAR кроме pm модулей на чистом Перле складывает в свой архив .so расширения, и обещался провести эксперимент переноса рабочего приложения с 32 битной на 64 битную платформу.

Внимание, рабочая машинка имеет конфу (сервер, никаких спец модулей для Perl нету):
2.6.18-ovz-smp-alt14 #1 SMP Wed May 2 15:41:34 MSD 2007 x86_64 x86_64 x86_64 GNU/Linux
девелоперская:
Linux nrg-desktop 2.6.24-22-generic #1 SMP Mon Nov 24 18:32:42 UTC 2008 i686 GNU/Linux

Как собрать PAR пэкадж я уже говорил в http://perlaround.blogspot.com/2009/03/par-catalyst.html, сейчас обсудим комплекс мер по подготовке второй системы к приёму пэкадажа :)

Ставим PAR: sudo cpan PAR PAR::Packer (возможно, PAR::Packer придётся ставить через cpan force).
Переливаем пэкадж на новую машину каким-то образом (я предпочитаю sftp, т.к. он сходу работает в Гноме).

Запускаем и обламываемся:

Can't load '/tmp/par-nrg/cache-e463425e9fd4743fd99b42ffc3b1f2aee266f2aa/2b152795.so' for module HTML::Parser: /tmp/par-nrg/cache-e463425e9fd4743fd99b42ffc3b1f2aee266f2aa/2b152795.so: неправильный класс ELF: ELFCLASS32 at /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/DynaLoader.pm line 230.
at /usr/lib/perl5/site_perl/5.8.8/PAR/Heavy.pm line 109
Compilation failed in require at HTML/Entities.pm line 147.
Compilation failed in require at Catalyst/Engine.pm line 8.
BEGIN failed--compilation aborted at Catalyst/Engine.pm line 8.
Compilation failed in require at (eval 19) line 3.
...propagated at /usr/lib/perl5/5.8.8/base.pm line 85.
BEGIN failed--compilation aborted at Catalyst/Engine/CGI.pm line 4.
Compilation failed in require at (eval 18) line 3.
...propagated at /usr/lib/perl5/5.8.8/base.pm line 85.
BEGIN failed--compilation aborted at Catalyst/Engine/HTTP.pm line 4.
Compilation failed in require at ./script/catapp_server.pl line 9.
BEGIN failed--compilation aborted at ./script/catapp_server.pl line 10.


Как вариант, можно попробовать собрать в Пэкадж ещё и сам Перл интерпретатор (дада, вы не ослышались!), делается это так pp -o имя_нового_пэкаджа_с_перлом catapp_server.par, но в моём случае это тоже не помогло.

Что же, пока принимаю поражение, но не сдаюсь.

Добавление: вообще, вариант проблему решить посредством виртулизации, например, на qemu -- т.е. собрать дистрибутив, в котором будет 1) ядро ОС 2) Перл 3) Всё необходимое для пуска Перла и в таком виде его раздавать :) Но тут возникает ещё большая куча проблем -- как быть с диском для виртулки, как работать с сетью и проч. Так что тоже для мелочи не вариант.

Часть инфы взята из: http://catalyst.infogami.com/cookbook/par

No comments :

Post a Comment

Note: only a member of this blog may post a comment.