Какую платформу я должен использовать для записи модулей? [закрытый]

21
задан Ether 29 December 2009 в 00:54
поделиться

11 ответов

ПРИМЕЧАНИЕ Этот совет устарел. Модуль:: Сборка была удалена из ядра Perl , но жизни на как модуль CPAN. За и против все еще стоят, и мои мнения о MakeMaker все еще стоят.

<час>

Как бывший специалист по обслуживанию ExtUtils:: MakeMaker, мне нравится рекомендовать Модуль:: Сборка, потому что MakeMaker является шоу ужасов. Модуль:: Сборка настолько лучше соединена. Но те не Ваши проблемы, и я представлю свое "наименьшее количество стычки для Вас", отвечают.

Резюме:

, поскольку Модуль:: поддержка Сборки существует не 100% через весь Perl, запустите с MakeMaker. Если Вы хотите сделать какую-либо настройку вообще, переключиться на Модуль:: Сборка. Начиная с их базового макета опции и интерфейс почти идентичны, это будет безболезненным. Столь обольстительный, как это смотрит, избегайте Модуля:: Установка.

, К счастью, Модуль:: Сборка может эмулировать MakeMaker, который помогает некоторым, но не помогает, если Вы собираетесь сделать какую-либо настройку. См. Модуль:: Сборка:: Compat.

Для выпусков CPAN с помощью Модуля:: Сборка прекрасна. Существует достаточно Модуля:: материал Сборки на CPAN теперь, когда все имели дело с получением его, уже загрузился.

Наконец, новое configure_requires опция сообщает оболочкам CPAN для установки Модуля:: Сборка, прежде чем они смогут начать создавать модуль. К сожалению, только последние оболочки CPAN знают о configure_requires.

, О, независимо от того, что Вы делаете не, используют h2xs (если Вы не пишете код XS... и даже тогда думаете об этом).

Профессионалы MakeMaker:

  • Идет с Perl и используемый ядром Perl (поэтому, это активно сохраняется и останется таким навсегда)
  • , Все знает, что сделать с Make-файлом. МН
  • Большая часть модуля авторская документация будет касаться MakeMaker.
  • Использование делает (те, кто знает, делают, может отладить и исправить процесс сборки)

Недостатки MakeMaker:

  • Требует, делают (думайте Windows)
  • Трудный настроить
  • Еще тяжелее, чтобы настроить и сделать кросс-платформенным
  • Трудный отладить, когда что-то идет не так, как надо (если Вы не понимаете, делают)

Модуль:: Профессионалы Сборки:

  • Легче настроить/разделить на подклассы
  • Чистый Perl
  • , Легче отладить (это - Perl)
  • , Может эмулировать MakeMaker несколькими способами
  • , оболочка CPAN установит Модуль:: Сборка для Вас

Модуль:: Недостатки Сборки:

  • Модуль:: Создайте специалистов по обслуживанию (и действительно вся Банда Набора инструментальных средств Perl) ненавидят его
  • , Более старые версии клиентов CPAN (включая CPANPLUS) ничего не знают о Модуле:: Сборка.

Модуль:: Профессионалы Установки:

  • интерфейс Slick
  • Связывает себя, у Вас есть известная версия
  • , которую Все знает, как иметь дело с Make-файлом. МН

Модуль:: Недостатки Установки:

  • Требует, делают
  • Всегда комплектная версия использования, уязвимая для внешней поломки
  • Трудный настроить вне ее интерфейса
  • Навозы с кишками MakeMaker, таким образом, новый выпуск MakeMaker в конечном счете повредит его.
  • не знает, как генерировать Метафайл с помощью v2 метаспецификации (все больше проблема с более новыми инструментами)
49
ответ дан 9 revs, 2 users 87% 29 November 2019 в 06:07
поделиться

Здесь существует два вопроса.

Первый, никогда не используйте h2xs. Это - старая устаревшая злобность, хотя я предполагаю, пытаетесь ли Вы на самом деле превратить заголовочный файл в код XS, это могло бы быть полезно (никогда не делавшийся что сам).

обновление 2011 года: Я настоятельно рекомендую смотреть на Dist:: Zilla, особенно если Вы думаете, что будете поддерживать больше чем один модуль.

Для создания нового модуля, используйте Модуль:: Начинающий. Это работает отлично и имеет некоторые хорошие плагины для настройки вывода.

115-секундный, Вы спрашиваете, какую систему сборки необходимо использовать. Этими тремя соперниками является ExtUtils:: MakeMaker (EUMM), Модуль:: Сборка (МБ) и Модуль:: Установка (MI).

EUMM является неприятной противной обрабатываемой деталью, но он работает, и если Вы не настраиваете свой процесс сборки вообще, работает просто великолепно.

МБ является новым ребенком, и он имеет своих хулителей. Это является большим плюс, то, что, если Вы хотите в большой степени настроить свою установку и процесс сборки, довольно возможно сделать это нормально (и межплатформенным способом) использование МБ. Это - действительно не возможное использование EUMM.

Наконец, MI является в основном декларативной оберткой сверху EUMM. Это также пакеты само наряду с Вашим дистрибутивом, в попытке работать вокруг проблем с пользователями, пытающимися устанавливать модули со старыми модулями набора инструментальных средств. Оборотная сторона "пакета сам" прием - то, что, если существует ошибка в самом MI, необходимо повторно выпустить все модули только для фиксации его.

, Насколько настройка идет, существуют некоторые плагины для MI, но если Вы захотите пойти вне их, то Вы вернетесь в проблеме контакта с Make-файлами и создадите инструменты через дюжину + платформы, таким образом, это действительно не соберется помогать Вам слишком много в той области.

35
ответ дан Dave Rolsky 29 November 2019 в 06:07
поделиться

Я просто загрузил Распределение:: Плита к CPAN. Это - то, что я использую для создания новых дистрибутивов. Хорошая вещь об этом состоит в том, что Ваши дистрибутивы могут быть тем, что Вы любите: Вы просто готовите некоторые шаблоны. Я не забочусь, использует ли кто-либо его. Для меня это - простая, низкая технология и не вызывает дополнительные проблемы.

Вы могли бы запустить с чего-то как Модуль:: Начинающий , чтобы заставить Ваши шаблоны начинающего затем добавить Ваш собственный шаблон и любимый способ сделать вещи. Вы выбираете не только независимо от того, что Вы хотите в каждом файле, но и какие файлы обнаруживаются в дистрибутиве. Поскольку Вы выясняете, как Вам нравится делать вещи, Вы просто обновляете свои собственные шаблоны.

Что касается Makemaker и Модуля:: Сборкой, будущее является Модуль:: Сборка . Это - только мы старое использование парней Makemaker больше.:) Существуют способы использовать обоих (или симулировать использовать обоих) одновременно. Взгляд на Модуль:: Сборка, Модуль:: Сборка:: Compat и Модуль:: документы Установки . Модуль:: Сборка была вышиблена из Стандартной Библиотеки Perl, и это - будущее, сомнительно. Это вернулось к Makemaker как система сборки.

, Хотя это - что-то вроде ответа отговорки, попытайтесь использовать каждого только для получения небольшого опыта с каждым.

20
ответ дан brian d foy 29 November 2019 в 06:07
поделиться

Вы также могли бы хотеть посмотреть Dist-Zilla, который является новым инструментом только для автора для создания дистрибутивов. Поскольку это просто помогает создать распределение, это не поставлется с Вашим кодом или делает любую установку, это может сделать много мощного материала.

14
ответ дан Schwern 29 November 2019 в 06:07
поделиться

Единственная проблема с совместимостью относительно Модуля:: Сборка - когда пользователь пытается установить модули, не обновляя их клиент CPAN (CPAN.pm или CPANPLUS.pm), Если они устанавливают Ваш модуль от CPAN, они могут так же, как легко обновить свой клиент от того же зеркала.

, Если Вы не хотите делать что-нибудь сложный в Вашем процессе сборки, уверенном: используйте EUMM. Но если у Вас есть проблема сборки на различной целевой платформе, Вы могли бы закончить в Make-файле, который отличается на каждом изменении, делают.

Модуль:: Сборка дает Вам много функций (что-либо, о чем можно думать, если Вы расширяете ее), и весь жемчуг, таким образом, Вы никогда не заканчиваете тем, что отладили make-файл. Модуль:: Установка дает Вам функции, но необходимо связать ее, и все заканчивает тем, что пробежало, 'делают' в конце.

7
ответ дан Eric Wilhelm 29 November 2019 в 06:07
поделиться

Я также рекомендую Модуль:: Сборка и Модуль:: Начинающий (с плагин TT2 ).

2
ответ дан cjm 29 November 2019 в 06:07
поделиться

Модуль:: Сборка лучше каким-либо образом, но она менее широко поддерживается, чем ExtUtils:: MakeMaker (более конкретно, более старые версии Perl не поддерживают его из поля). Это зависит от Ваших потребностей.

2
ответ дан Leon Timmermans 29 November 2019 в 06:07
поделиться

Лично, я рекомендую Модуль:: Установка, также, как и много людей, которых я знаю - подобные людям Катализатора и Американского лося также, использует его.

2
ответ дан Penfold 29 November 2019 в 06:07
поделиться

Вот немного разъяснения направления, я надеялся, что ответы возьмут:

  • профессионалы/недостатки различных из платформ
  • основа совместимости/установки платформ
  • пригодность для внутреннего (локального) по сравнению с внешним (CPAN) выпуски
  • не пустое "использование X" ответов

, ответ Dave имеет некоторую хорошую про/обманную информацию , ответ Leon ссылается на совместимость, но не является явным. Как brian d foy упомянул , только старые шляпы используют EUMM, но я не убежден, что МБ является хорошей платформой для вещей, предназначенных для CPAN из-за него не быть частью ядра до 5.9.

2
ответ дан Community 29 November 2019 в 06:07
поделиться

Существуют за и против обоим. В эти дни я использую и рекомендую Модуль:: Сборка и Модуль:: Начинающий.

2
ответ дан Andy 29 November 2019 в 06:07
поделиться

ЕС:: MM все еще, кажется, наиболее широко поддерживаемый и популярный, но Модуль:: Build нагоняет. Кроме того, проверьте Модуль:: Начинающий для модуля, который поможет Вам начать.

0
ответ дан amoore 29 November 2019 в 06:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: