Есть ли самый простой способ собрать пакет Perl? - PullRequest
12 голосов
/ 05 марта 2012

Я написал несколько библиотек Perl (.pm) и Perlscripts (.pl) в Ubuntu, и мне нужно распространить их среди моих коллег в моем офисе. Эти сценарии и библиотеки требуют сторонних библиотек. Я хочу сделать это очень просто.

Информация обо мне.

  • Я знаю, как создать Perl-скрипт.
  • Я знаю, как создать файл bash.
  • У меня нет опыта в создании файлов MAKE, rpm, Deb и т. Д.

Ответы [ 2 ]

15 голосов
/ 05 марта 2012

Я бы рекомендовал использовать Module::Starter для настройки шаблона для каждого модуля. После установки вы можете вызвать module-starter из командной строки, например:

module-starter --module=My::Module --author="Jessada Thutkawkorapin" --email=your@email.com

или, если вы хотите дистрибутив с несколькими модулями:

module-starter --distro=Foo --module=Foo,Foo::Bar,Foo::Baz --author="Jessada Thutkawkorapin" --email=your@email.com

Затем просто замените файлы .pm на свои модули, включите любые модульные тесты, которые вы хотите запустить (тесты по умолчанию в основном проверяют синтаксис модуля вместе с синтаксисом pod). Базовая установка модулей выполняется через

perl Makefile.PL
make
make test
make install

(технически, make test не является обязательным, но настоятельно рекомендуется).

Теперь, если эти модули используют другие модули CPAN, вы можете использовать модуль CPAN для их установки, например:

use strict;
use warnings;
use CPAN;

#populate however you'd like, either hard-coded, read from a file, etc.
my @modules_to_install=(); 

foreach(@modules_to_install)
{
  CPAN::Shell->install($_);
}

Таким образом, вы можете распространять zip / tarball / etc с папками и файлами, которые module-starter были запущены (и которые вы изменили) вместе с вышеуказанным сценарием для установки любых зависимостей CPAN, и вызывать его, скажем, cpan_install.pl , Если вы хотите, вы можете обернуть все в окончательный сценарий, называемый, скажем, install.pl, который выполняет все эти вещи.

2 голосов
/ 12 марта 2012

Мой обычный метод в эти дни - просто скопировать файл Build.PL из одного из моих существующих дистрибутивов и перейти оттуда.Очевидно, что это не очень полезная стратегия для первого, но CPAN полон тысяч этих файлов.

Для простого однопользовательского .pm дистрибутива чистого perl, вероятно, проще всего начать с копирования чужого Build.PL файл и отредактируйте поля в зависимости от вашего случая.Скорее всего, все, что вам нужно изменить, это поля module_name и requires.

Вот мое простое поле, которое вы можете украсть ^ W, вдохновленное:

use strict;
use warnings;

use Module::Build;

my $build = Module::Build->new(
   module_name => 'Your::Name::Here',
   requires => {
      'Your::Requirements::Here' => '1.23',
   },
   build_requires => {
      'Test::More' => 0,
   },
   license => 'perl',
   create_makefile_pl => 'traditional',
   create_license => 1,
   create_readme  => 1,
);

$build->create_build_script;

Эти поляпо порядку означает:

  • Имя основного модуля в дистрибутиве - отсюда берется имя самого дистрибутива, а также его версия и аннотация *
  • Другие модули, от которых будет зависеть этот дистрибутив, для сборки или запуска
  • Другие модули, от которых будет зависеть этот дистрибутив, но он не потребуется после установки (обычно это будут Test:: модули илидругие инструменты сборки)
  • Условия лицензирования, применяемые к дистрибутиву
  • Создание устаревшего Makefile.PL для старых клиентов CPAN, которые не понимают протокол Build.PL
  • СозданиеLICENSE файл автоматически из заявленных условий лицензирования выше
  • Создайте файл README автоматически, превратив документацию POD основного модуля в открытый текст
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...