Как мне установить deps для CPAN модуля без его установки? - PullRequest
4 голосов
/ 10 ноября 2009

Это продолжение моего предыдущего вопроса о разработке приложений на Perl . Допустим, я разрабатываю приложение как модуль CPAN, используя Module::Install. Теперь я загружаю код на рабочий сервер, скажем, с помощью git push, и я хотел бы установить зависимости приложения, перечисленные в Makefile.PL. Если я просто запускаю cpan ., он пытается установить приложение как обычный модуль Perl, т.е. начинает копировать модули и документацию в стандартные каталоги Perl по всей системе.

Это так и должно быть? Вы устанавливаете приложение в стандартные каталоги Perl? Я привык иметь свои приложения Perl в одном каталоге с отдельным lib. В противном случае, похоже, мне пришлось бы управлять многими другими вещами, такими как установка ресурсов где-нибудь по пути и т. Д. Если я просто хочу установить deps, объявленный в Makefile.PL, и запустить тесты приложений, чтобы убедиться, что все работает, что должно Я делаю?

(Это где-то задокументировано? Я имею в виду, есть ли что-то вроде наилучшей практики для развертывания и обновления нетривиальных приложений Perl? Или все делают это по-своему?)

Ответы [ 3 ]

10 голосов
/ 10 ноября 2009

Возможно, я неправильно понимаю, но я думаю, что вы ищете

perl Makefile.PL
make installdeps
8 голосов
/ 10 ноября 2009

Если вы используете Module :: Install , вы действительно используете ExtUtils :: MakeMaker за кулисами. Вы можете использовать все функции MakeMaker и цели, которые он обеспечивает. Хотя в документации не показаны все функции, в сгенерированном Makefile.

есть некоторые ценные вещи.

Тем не менее, MakeMaker - это старые новости, и большинство всех просило Санта-Клауса исчезнуть. Если вам нужен лучший контроль, включая создание собственных целей и процессов, Module :: Build на несколько порядков проще в работе, а также кроссплатформенный (даже если это просто означает, что не используется другой * 1011). *, gmake или что-то в одной и той же ОС на разных компьютерах). Если вы отойдете от обычного процесса установки потребительского уровня, ваша жизнь станет проще без MakeMaker.

Некоторые люди ценят краткость файла сборки Module::Install, но после его создания вы не тратите много времени на то, чтобы связываться с файлом сборки, так что это не так уж и полезно. Когда небольшое преимущество, которое вы получаете, блокирует вас на MakeMaker, это вовсе не победа.


Обновление 2014 года: Module :: Build теперь вышло из строя и нуждается в сопровождающем. Он так и не дошел до того, что люди могли использовать его для создания и распространения модулей XS. Это устарело в Perl v5.19, хотя вы все еще можете получить его из CPAN.

4 голосов
/ 10 ноября 2009

Вы можете посмотреть на Module :: ScanDeps , чтобы сгенерировать список зависимых модулей для установки. Или Par :: Packer для упаковки всего этого как "приложения".

...