Хочу поделиться опытом первой публикации своего модуля на cpan.org. Будем считать, что сам модуль уже написан. В моем случае это был модуль VK::App. Речь пойдет о том, как правильно собрать дистрибутив и опубликовать его на cpan.org.
Публикация модуля состоит трех этапов:
Для загрузки модулей на cpan сделана специальная система pause.perl.org. Идем по ссылке, проходим не сложную процедуру регистрации. В итоге получаем pause_id и email вида pause_id@cpan.org. На email, который вы ввели при регистрации будут приходить сообщения от систем pause.perl.org и cpantesters.org. Но в документации к вашему модулю рекомендуется указывать в качестве email именно pause_id@cpan.org. Для того что бы настроить редирект с pause_id@cpan.org на ваш приватный email логинимся на pause.perl.org, идем в пункт меню «Edit Account Info», в поле «Secret email address» вводим email для редиректа, в самом низу страницы выбираем радио кнопку «my secret email address», давим Submit. Изменения вступят в силу через несколько часов. Кстати, если не настроить такой редирект, то не получиться привязать свой свой cpan аккаунт к замечательному сервису metacpan.org т.к. для привязки ему требуется ваш pause_id на который он высылает письмо для активации.
Существует множество инструментов для автоматизации этого процесса. Вот в этой статье описано большинство из них.
Я остановил свой выбор на ExtUtils::ModuleMaker. Пишем маленький скрипт make_module.pl:
Помещаем его в какую нибудь временную директорию и запускаем. Он генерирует шаблон для нашего дистрибутива. Далее создаем директорию для самого дистрибутива. Если название модуля VK::App и его версия 0.01, то директория должна называться VK-App-0.01. После этого копируем в VK-App-0.01 шаблон и заменяем шаблонный App.pm реальным.
Зависимости вашего модуля от других указываются в Makefile.PL.
У меня таких было всего два: LWP и JSON. Test::Simple туда добавляется автоматически при герерации шаблона дистрибутива. Версии модулей можно узнать командами:
Если подойдет любая версия, в Makefile.PL указывается 0.
Все дистрибутив готов. Нужно его запаковать и можно проверить работоспособность.
Важный этап в публикации модуля — регистрация его названия. Для этого в pause.perl.org идем в «Register Namespace» и вдумчиво заполняем все поля. Особое внимание надо уделить полям «Modules with similar functionality» и «Rationale». В первом надо перечислить названия похожих модулей. Во втором подробно рассказать, чем ваш модуль отличается от других и почему он должен называться именно так, как вы его назвали.
После этого идем в «Upload a file to CPAN» загружаем туда наш архив VK-App-0.01.tar.gz и ждем. В моем случае модуль появился на cpan.org примерно через сутки.
Публикация модуля состоит трех этапов:
- регистрация на pause.perl.org
- сборка дистрибутива модуля
- регистрация названия модуля и загрузка дистрибутива на сервер pause.perl.org.
Регистрация на pause.perl.org
Для загрузки модулей на cpan сделана специальная система pause.perl.org. Идем по ссылке, проходим не сложную процедуру регистрации. В итоге получаем pause_id и email вида pause_id@cpan.org. На email, который вы ввели при регистрации будут приходить сообщения от систем pause.perl.org и cpantesters.org. Но в документации к вашему модулю рекомендуется указывать в качестве email именно pause_id@cpan.org. Для того что бы настроить редирект с pause_id@cpan.org на ваш приватный email логинимся на pause.perl.org, идем в пункт меню «Edit Account Info», в поле «Secret email address» вводим email для редиректа, в самом низу страницы выбираем радио кнопку «my secret email address», давим Submit. Изменения вступят в силу через несколько часов. Кстати, если не настроить такой редирект, то не получиться привязать свой свой cpan аккаунт к замечательному сервису metacpan.org т.к. для привязки ему требуется ваш pause_id на который он высылает письмо для активации.
Сборка дистрибутива
Существует множество инструментов для автоматизации этого процесса. Вот в этой статье описано большинство из них.
Я остановил свой выбор на ExtUtils::ModuleMaker. Пишем маленький скрипт make_module.pl:
#!/usr/bin/perl use ExtUtils::ModuleMaker; $mod = ExtUtils::ModuleMaker->new( NAME => 'VK::App', ABSTRACT => 'Creation client applications for vk.com', VERSION => '0.01', LICENSE => 'perl', # You can choose one of the standard licenses by includin BUILD_SYSTEM => 'ExtUtils::MakeMaker', NEED_POD => '0', # Include POD section in *.pm files created. (Default is on NEED_NEW_METHOD => '0', # Include a simple new() method in the *.pm files cr INCLUDE_TODO => '0', INCLUDE_SCRIPTS_DIRECTORY => '1', AUTHOR => 'Misha Genaev', EMAIL => 'mag@cpan.org', CPANID => 'MAG', WEBSITE => 'http://genaev.com', FIRST_TEST_NUMBER => '1', ); $mod->complete_build();
Помещаем его в какую нибудь временную директорию и запускаем. Он генерирует шаблон для нашего дистрибутива. Далее создаем директорию для самого дистрибутива. Если название модуля VK::App и его версия 0.01, то директория должна называться VK-App-0.01. После этого копируем в VK-App-0.01 шаблон и заменяем шаблонный App.pm реальным.
$ perl make_module.pl $ mkdir VK-App-0.01 $ cp -r VK/App/* VK-App-0.01 $ cp real/App.pm VK-App-0.01/lib/VK
Зависимости вашего модуля от других указываются в Makefile.PL.
PREREQ_PM => { 'Test::Simple' => 0.44, 'LWP' => 5.834, 'LWP::Protocol::https' => '0', 'JSON' => 2.53, },
У меня таких было всего два: LWP и JSON. Test::Simple туда добавляется автоматически при герерации шаблона дистрибутива. Версии модулей можно узнать командами:
$ perl -MLWP -e 'print "$LWP::VERSION\n"' $ perl -MJSON -e 'print "$JSON::VERSION\n"'
Если подойдет любая версия, в Makefile.PL указывается 0.
Все дистрибутив готов. Нужно его запаковать и можно проверить работоспособность.
$ tar -czf VK-App-0.01.tar.gz VK-App-0.01 $ cd VK-App-0.01 $ perl Makefile.PL $ make $ make test
Регистрация названия модуля и загрузка дистрибутива
Важный этап в публикации модуля — регистрация его названия. Для этого в pause.perl.org идем в «Register Namespace» и вдумчиво заполняем все поля. Особое внимание надо уделить полям «Modules with similar functionality» и «Rationale». В первом надо перечислить названия похожих модулей. Во втором подробно рассказать, чем ваш модуль отличается от других и почему он должен называться именно так, как вы его назвали.
После этого идем в «Upload a file to CPAN» загружаем туда наш архив VK-App-0.01.tar.gz и ждем. В моем случае модуль появился на cpan.org примерно через сутки.
