2014-09-26 5 views
1

Похоже, что большинство модулей Perl объявляют свои зависимости от других модулей в Makefile.PL, а затем CPAN использует это для установки этих зависимостей.Метод установки зависимостей для приложения, не предназначенного для CPAN

Но теперь я делаю не модуль, а приложение конечного пользователя, которое никогда не закончится в CPAN, и мне бы хотелось, чтобы было легко установить зависимости этого приложения на любой заданной машине. Есть ли стандартный способ Perl?

+3

Сделайте его модулем в любом случае (возможно, называйте его «App :: ...»). Затем он может быть установлен с любой используемой системой сборки (например, ['Module :: Build'] (https://metacpan.org/pod/Module::Build)) или с помощью таких инструментов, как [' cpanm'] (https: //metacpan.org/pod/App::cpanminus). Система сборки будет заботиться о зависимостях, но также упростит установку, тестирование и т. Д. – Biffen

ответ

3

Сделайте это модулем в любом случае и поместите его в App::… namespace. Код будет жить в библиотечных файлах lib/App/**.pm, и скрипт будет только тонкой оболочкой; perlfind - хороший пример. Используйте инфраструктуру CLI, такую ​​как MooseX::App, чтобы разделить функциональность на модули, что упрощает тестирование и повторное использование кода.

Как вы уже знаете, распределение модуля на основе объявляет его зависимость либо непосредственно с metafile или косвенно с системой сборки, и затем упаковывает вами с любой системой сборки (например Module::Build) или устанавливается пользователем с любым (например, cpanm).

+0

Ответ на основе и более ранний комментарий [http://stackoverflow.com/q/26052341#comment-40813549), любезно увеличьте [Biffen] (http://stackoverflow.com/u/418066). – daxim

+0

Спасибо. Последующий вопрос: Module :: Build, похоже, использует оболочку CPAN для установки зависимостей. Но некоторые из них не будут установлены, потому что не все тесты проходят. Если я сам открою оболочку, я могу принудительно установить, но есть ли способ настроить Module :: Build для принудительной установки или проверки установки зависимостей? –

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