Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Использование CPAN-модулей без установки, для "коробочного" софта 
:(
    Опции темы
Lvovich2011
Дата 10.10.2011, 00:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 9.10.2011

Репутация: нет
Всего: нет



Здравствуйте.
Есть Perl-система: интернет-магазин.
Каждый купивший ее клиент вынужден обращаться к своему хостеру и давать заявку на установку дополнительных Perl-модулей.
Да и со стандартными модулями у многих хостеров наблюдается определенный бардак.
У клиента, разумеется, нет никаких прав и знаний об установке модулей.

Хочется сделать так, чтобы система не зависела от того, какой дистрибутив Perl и в каком объеме установлен у хостера.
Т.е., например, устанавливается система в cgi-bin, внутри директория lib, где расположены необходимые модули.

Скажите, возможно ли использовать CPAN-модули без установки, а просто накачать со CPAN, развернуть в lib и прописать в скрипте 
Код

use 'lib';
 ???

Тогда установка упростится, у клиента просто разворачивается архив, и система готова к работе "из коробки".
Мечты, конечно, но реализуемы вполне.
Одна затычка - не удается все необходимые библиотеки так подцепить.
Например, при попытке использования Crypt::SSLeay возникает ошибка
Код

Can't locate loadable object for module Crypt::SSLeay in @INC

А при использовании MIME::Base64 без установки ошибка
Код

MIME::Base64 object version 3.07 does not match bootstrap parameter 3.13 at /usr/local/lib/perl5/5.8.8/mach/DynaLoader.pm line 253.


Есть ли варианты решения данной проблемы? Буду очень благодарен за помощь!
PM MAIL   Вверх
gcc
Дата 10.10.2011, 01:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 1
Всего: 17



PM WWW ICQ Skype GTalk Jabber   Вверх
taryk
Дата 10.10.2011, 01:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 16.1.2011
Где: Ukraine

Репутация: нет
Всего: нет



MIME::Base64 - стандартный модуль который уже есть в системе.
Crypt::SSLeay содержит xs который нужно скомпилировать.
PM MAIL   Вверх
Lvovich2011
Дата 10.10.2011, 08:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 9.10.2011

Репутация: нет
Всего: нет



Цитата(taryk @ 10.10.2011,  01:24)
MIME::Base64 - стандартный модуль который уже есть в системе.
Crypt::SSLeay содержит xs который нужно скомпилировать.

Вы не подскажете, как скомпилировать? Я с nix не работал на таком уровне :(
И еще: компиляция - это привязка к ОС, да? Или нет?
Просто, цель у меня - сделать так, чтобы в директории lib были рабочие библиотеки, которые не требуют допиливания при развороте у клиента.
Библиотеки такие: SOAP::Lite, Crypt::SSLeay.
PM MAIL   Вверх
arto
Дата 10.10.2011, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



1. обычно все опиано в README или INSTALL
2. компиляция -- привязка к конкретной архитектуре, конкретной версии perl и конкретной версии библиотеки
3. проще вам нанять специалиста, слишком много нетривиальных вопросов надо вам будет решить.
PM MAIL ICQ   Вверх
Lvovich2011
Дата 10.10.2011, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 9.10.2011

Репутация: нет
Всего: нет



Цитата(arto @ 10.10.2011,  11:40)
1. обычно все опиано в README или INSTALL
2. компиляция -- привязка к конкретной архитектуре, конкретной версии perl и конкретной версии библиотеки
3. проще вам нанять специалиста, слишком много нетривиальных вопросов надо вам будет решить.

Получается, я должен по-любому сделать:
1. Скопировать необходимые библиотеки в любую директорию
2. запустить необходимые процедуры установки (возможно, makefile.pl - с prefix='cgi-bin/lib')

Т.е., простое копирование библиотек в мой директорию lib может не дать нормальной работы (останется конфликт версий или отсутствие загружаемых объектов, или еще что-нибудь...).

Жаль, конечно :(
Хотелось сделать так, чтобы не пришлось устанавливать библиотеки...
PM MAIL   Вверх
shamber
Дата 10.10.2011, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



не пользуйтесь теми, что XS и все.
PM MAIL Jabber   Вверх
Lvovich2011
Дата 11.10.2011, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 9.10.2011

Репутация: нет
Всего: нет



Цитата(shamber @ 10.10.2011,  13:03)
не пользуйтесь теми, что XS и все.

К сожалению, вынужден использовать.
Задача - сопряжение наших данных с Яндекс Директом посредством API Директа.
Для этого нужны библиотеки:
SOAP::Lite
Crypt::SSLeay
LWP::UserAgent

С хостерами клиентов при этом постоянно возникают проблемы: то не установлено, то версия старая.

Вот и возникла идея "тащить" эти библиотеки с собой. Т.е., мы разворачиваем клиенту свой дистрибутив в cgi-bin, и все нужные библиотеки уже есть и берутся из cgi-bin/lib с помощью директивы use 'lib'. Остальные библиотеки - стандартные, у всех хостеров есть в Perl-е.
Если бы удалось подцепить эти три библиотеки, то требования к зоне значительно снизились бы.

Может, все-таки, есть вариант решения данной задачи?
PM MAIL   Вверх
taryk
Дата 11.10.2011, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 16.1.2011
Где: Ukraine

Репутация: нет
Всего: нет



Цитата(Lvovich2011 @  10.10.2011,  07:08 Найти цитируемый пост)
И еще: компиляция - это привязка к ОС, да? Или нет?


Чтобы обеспечить кроссплатформенность - нужно скомпилировать под каждую платформу (linux-x86, linux-amd64, solaris-x86, solaris-sparc, freebsd-x86, etc) и подгружать нужный модуль в зависимости от платформы.

смотрите в сторону PAR

Это сообщение отредактировал(а) taryk - 11.10.2011, 11:50
PM MAIL   Вверх
Lvovich2011
Дата 13.10.2011, 07:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 9.10.2011

Репутация: нет
Всего: нет



Цитата(taryk @  11.10.2011,  11:46 Найти цитируемый пост)
Чтобы обеспечить кроссплатформенность - нужно скомпилировать под каждую платформу (linux-x86, linux-amd64, solaris-x86, solaris-sparc, freebsd-x86, etc) и подгружать нужный модуль в зависимости от платформы.


О! Это - последняя капля! Что ж , не судьба, значит, использовать CPAN-модули в своей директории + директиву use 'lib'
Тогда, думаю, просто обрежем базовую версию системы, уберем из нее несколько режимов, требующих CPAN-модулей с компиляцией XS.

А насчет PAR: мне уже qcc здесь же его предлагал. Смысл? По-моему, любая разархивация упакованного кода увеличивает время запуска и требования к памяти. А, если Perl-система достаточно велика, да еще и число входов на сайт большое, потери будут также очень велики.
Но, если имелось в виду архивировать с помощью PAR только откомпилированные CPAN-модули, то я уже сказал: скорее всего, мы откажемся от этой идеи :(

Всем, кто помог мне прояснить ситуацию, большое спасибо!

Это сообщение отредактировал(а) Lvovich2011 - 13.10.2011, 07:29
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0781 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.