| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Общие вопросы > Использование CPAN-модулей без установки |
| Автор: Lvovich2011 10.10.2011, 00:56 | ||||||
| Здравствуйте. Есть Perl-система: интернет-магазин. Каждый купивший ее клиент вынужден обращаться к своему хостеру и давать заявку на установку дополнительных Perl-модулей. Да и со стандартными модулями у многих хостеров наблюдается определенный бардак. У клиента, разумеется, нет никаких прав и знаний об установке модулей. Хочется сделать так, чтобы система не зависела от того, какой дистрибутив Perl и в каком объеме установлен у хостера. Т.е., например, устанавливается система в cgi-bin, внутри директория lib, где расположены необходимые модули. Скажите, возможно ли использовать CPAN-модули без установки, а просто накачать со CPAN, развернуть в lib и прописать в скрипте
Тогда установка упростится, у клиента просто разворачивается архив, и система готова к работе "из коробки". Мечты, конечно, но реализуемы вполне. Одна затычка - не удается все необходимые библиотеки так подцепить. Например, при попытке использования Crypt::SSLeay возникает ошибка
А при использовании MIME::Base64 без установки ошибка
Есть ли варианты решения данной проблемы? Буду очень благодарен за помощь! |
| Автор: gcc 10.10.2011, 01:01 |
| есть PAR: http://search.cpan.org/search?mode=all&query=par |
| Автор: taryk 10.10.2011, 01:24 |
| MIME::Base64 - стандартный модуль который уже есть в системе. Crypt::SSLeay содержит xs который нужно скомпилировать. |
| Автор: Lvovich2011 10.10.2011, 08:08 | ||
Вы не подскажете, как скомпилировать? Я с nix не работал на таком уровне :( И еще: компиляция - это привязка к ОС, да? Или нет? Просто, цель у меня - сделать так, чтобы в директории lib были рабочие библиотеки, которые не требуют допиливания при развороте у клиента. Библиотеки такие: SOAP::Lite, Crypt::SSLeay. |
| Автор: arto 10.10.2011, 11:40 |
| 1. обычно все опиано в README или INSTALL 2. компиляция -- привязка к конкретной архитектуре, конкретной версии perl и конкретной версии библиотеки 3. проще вам нанять специалиста, слишком много нетривиальных вопросов надо вам будет решить. |
| Автор: Lvovich2011 10.10.2011, 12:38 | ||
Получается, я должен по-любому сделать: 1. Скопировать необходимые библиотеки в любую директорию 2. запустить необходимые процедуры установки (возможно, makefile.pl - с prefix='cgi-bin/lib') Т.е., простое копирование библиотек в мой директорию lib может не дать нормальной работы (останется конфликт версий или отсутствие загружаемых объектов, или еще что-нибудь...). Жаль, конечно :( Хотелось сделать так, чтобы не пришлось устанавливать библиотеки... |
| Автор: shamber 10.10.2011, 13:03 |
| не пользуйтесь теми, что XS и все. |
| Автор: Lvovich2011 11.10.2011, 10:34 | ||
К сожалению, вынужден использовать. Задача - сопряжение наших данных с Яндекс Директом посредством API Директа. Для этого нужны библиотеки: SOAP::Lite Crypt::SSLeay LWP::UserAgent С хостерами клиентов при этом постоянно возникают проблемы: то не установлено, то версия старая. Вот и возникла идея "тащить" эти библиотеки с собой. Т.е., мы разворачиваем клиенту свой дистрибутив в cgi-bin, и все нужные библиотеки уже есть и берутся из cgi-bin/lib с помощью директивы use 'lib'. Остальные библиотеки - стандартные, у всех хостеров есть в Perl-е. Если бы удалось подцепить эти три библиотеки, то требования к зоне значительно снизились бы. Может, все-таки, есть вариант решения данной задачи? |
| Автор: taryk 11.10.2011, 11:46 |
Чтобы обеспечить кроссплатформенность - нужно скомпилировать под каждую платформу (linux-x86, linux-amd64, solaris-x86, solaris-sparc, freebsd-x86, etc) и подгружать нужный модуль в зависимости от платформы. смотрите в сторону http://search.cpan.org/~smueller/PAR-1.002/lib/PAR.pm |