Как стать автором
Поиск
Написать публикацию
Обновить

Публикация модуля на cpan

Время на прочтение3 мин
Количество просмотров2.7K
Хочу поделиться опытом первой публикации своего модуля на cpan.org. Будем считать, что сам модуль уже написан. В моем случае это был модуль VK::App. Речь пойдет о том, как правильно собрать дистрибутив и опубликовать его на 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 примерно через сутки.
Теги:
Хабы:
Всего голосов 18: ↑18 и ↓0+18
Комментарии3

Публикации

Ближайшие события