Имеется приложение на Perl, которое имеет множество зависимостей. Задача - упростить установку зависимостей такого приложения.
Есть несколько подходов к решению данной задачи, но я расскажу лишь про тот вариант, который я использую и он мне нравится больше всего.
Все модули я ставлю с CPAN в локальную директорию пользователя, использую для этого "local::lib".
Предварительно необходимо описать все зависимости приложения в Makefile.PL. Например, файл может выглядеть вот так:
Есть несколько подходов к решению данной задачи, но я расскажу лишь про тот вариант, который я использую и он мне нравится больше всего.
Все модули я ставлю с CPAN в локальную директорию пользователя, использую для этого "local::lib".
Предварительно необходимо описать все зависимости приложения в Makefile.PL. Например, файл может выглядеть вот так:
Процедура установки:
- Копируем код приложения на чистый сервер.
- Устанавливаем и настраиваем "local::lib" (инструкция)
- Устанавливаем "App::cpanminus" в локальную директорию ( возможно придется установить вручную - make, make test, make install ).
- Переходим в папку с приложением и выполняем команду - "cpanm --installdeps ." и ждем пока установятся все зависимости.
5 коммент.:
А как же XS-ы? Вот у меня один из проектов использует XS-модули. Разработку я веду под FreeBSD, а на боевом сервере - CentOS.
А в чем проблема с XS? XS модули ставятся с CPAN без проблем. Конечно должен быть компилятор на сервере. Ну придется сделать предварительно yum groupinstall "Development tools", но это ж не проблема.
Мне почему-то показалось, что речь идет о копировании модулей на сервер. Моя ошибка.
#!/bin/bash
depend=( LWP XML::SAX XML::Simple Digest::MD5 Net::CUPS Net::IP Net::SNMP Proc::Daemon ExtUtils::MakeMaker Net::SSLeay Proc::PID::File Crypt::SSLeay )
for i in "${depend[@]}"
do
#export PERL_MM_USE_DEFAULT=1 && cpan -i ${i}
export PERL_MM_USE_DEFAULT=1 && perl -MCPAN -e "install ${i}"
done
А?
2des:
Зачем ??? o_O
У меня в каждом проекте есть Makefile.PL, который описывает все зависимости и , ИМХО, такой подход более правильный по следующим причинам:
1. Большинство разработчиков умеют писать мейкфайлы, а кто не умеет всегда может посмотреть в перлдок
2. Мейкфайл содержит много дополенительной инфорации, кроме зависимостей.
3. Очень желателен для запуска тестов - "make test". Особенно, когда тесты прогоняются сторонним CI(Continuous Integration)-инструментом
4. Нужен для развертывания приложений во всяких клауд-хостингах.
5. Мейкфайл более кроссплатформенен чем bash-скрипт
6. ...
Отправить комментарий
Не забудьте добавить себя в постоянные читатели и включить уведомления о новых комментариях, либо воспользуйтесь RSS каналом ;)