Должен ли я использовать Module :: Install или Module :: Build? - PullRequest
8 голосов
/ 15 декабря 2008

Я пишу текстовый редактор программиста (да, еще один) на Perl, который называется Kephra , который также является модулем CPAN и входит в комплект Module :: Install . Недавно я увидел, что Module :: Build вошел в ядро, поэтому, если я переключусь, я смогу уменьшить зависимости. Есть ли другая причина для переключения?

Ответы [ 3 ]

6 голосов
/ 18 февраля 2009

Мы используем Module :: Build в нашей группе.

Основная причина Легкая расширяемость .

Module :: Build позволяет вам делать больше с вашим процессом сборки в чистом Perl посредством создания подклассов. Если вы хотите сделать больше, используя Module :: Install , вы должны знать, как работают Makefiles, AFAIK. Поскольку вы, вероятно, уже знаете Perl, это может быть преимуществом.

Как вы сказали, использование Module :: Build удаляет зависимость от внешней make программы, что можно рассматривать как хорошую вещь.

Однако основные минусы, о которых я могу подумать:

  • Несмотря на то, что Module :: Build имеет ядро, не все будут использовать последнюю версию Perl. Для пользователей со старыми версиями ядра вы создадите новую зависимость.
  • Множество ветеранов (не обязательно Perl) привыкли к парадигме perl Makemaker.PL; make; make install и могут быть отброшены с помощью Build.PL. Надеюсь, это не имеет большого значения.
  • Module :: Build иногда ломал наши сборки, когда его функциональность изменялась, потому что документация не охватывала крайний случай, который мы использовали. Затем крайний случай был изменен и задокументирован, но нам пришлось перекодировать наш подкласс, чтобы наша сборка снова заработала (это произошло для нас при недавнем обновлении с 0.2808 до 0.3).

Все это говорит о том, что я по-прежнему рекомендую Module :: Build просто для расширяемости. Если это не проблема для вас, вам лучше придерживаться Module :: Install.

5 голосов
/ 15 декабря 2008

Жвачку, которая уже была немного разжевана ранее в «Какой фреймворк мне использовать для написания модулей?»

После того, как выплюнул жвачку, я решил пойти с Module :: Build , но возможны разные ответы! (хотя я до сих пор доволен M :: B).

5 голосов
/ 15 декабря 2008

Хорошо, Module::Build - довольно хороший модуль, он должен быть заменен на ExtUtils::MakeMaker, то есть заменить Makefile.PL на Build.PL, который генерирует Build вместо Makefile. Это также означало, что «простые вещи должны оставаться простыми, сложные вещи должны быть возможными».

Module::Install использует другой подход и генерирует Makefile.

Кроме того, не забывайте, что не все запускают последнюю версию всего: -)

Я не помню никакого сравнения этих модулей, но я думаю, что вы могли бы найти несколько вещей из Module::Build и Module::Install соответствующих страниц cpanratings.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...