2012-04-14 4 views
1

У меня есть приложение, которое я развертываю на Linux (Red Hat) и Unix (Solaris). Мое приложение устанавливает себя с помощью встроенного Perl, а затем создает собственный локальный Perl (новый пользователь).Развертывание C-зависимых библиотек Perl

Я хотел бы знать, что является лучшим способом для развертывания Curses::UI? В настоящее время я устанавливаю другие модули, просто скопировав их в свою локальную папку perl lib, но это чистые модули Perl, которые не зависят от библиотек C (также общие объекты, XS и т. Д.).

Также мне нужно будет скомпилировать libncurses для каждой платформы заранее?

ПРИМЕЧАНИЕ: У компьютера нет сетевого подключения, поэтому я не могу использовать модуль CPAN.

+0

Нет сети, никаких проблем. Сделайте копию [minicpan] (http://p3rl.org/minicpan) и перенесите ее в цель. Настройте свой клиент CPAN на [читать из локальной файловой системы] (http://p3rl.org/CPAN#The-urllist-parameter-has-CD-ROM-support) вместо сети. – daxim

ответ

2

Для развертывания модулей, таких как Curses :: UI от CPAN, следует использовать клиент CPAN (CPAN.pm, CPANPLUS). Обычно вам нужны библиотеки разработки для компиляции модулей XS. Для Curses :: UI пакет Ubuntu называется libncurses-dev. Другие дистрибутивы Linux, вероятно, имеют пакет ncurses devel под тем же или похожим именем.

Вы сказали, что у вас есть локальная библиотека Perl. Очень хороший способ иметь локальную библиотеку - это модуль с таким же именем - local::lib. В его документации рассказывается, как легко устанавливать модули в локальный :: lib с помощью CPAN-клиента.

+0

поэтому я могу использовать CPAN :: Mini для создания локального репозитория, который состоит только из Curses :: UI и его зависимостей? – snoofkin

1

Для модулей CPAN, которые необходимо построить, попробуйте посмотреть на carton. Он имеет команду связки, которая объединит все ваши модули cpan, чтобы они могли быть установлены/созданы на целевых компьютерах без какой-либо сети.

Что касается libcurses, я, вероятно, склоняюсь к тому, что пользовательский установщик будет создавать его на целевой машине, если он еще не установлен. Это или запретить установку программного обеспечения, если эта библиотека не найдена. К сожалению, я не знаю, как правильно построить зависимые библиотеки C, кроме выполнения пользовательского сценария сборки.

Смежные вопросы