CPAN

Есть замечательный язык программирования Perl. В мире этого языка есть много хороших штуковин. Одна из таких штуковин — это огромной архив готового кода под названием CPAN. CPAN — это аббревиатура составленная из начальных букв названия "The Comprehensive Perl Archive Network" (на самое деле, в повседневной жизни это рассшифровка почти никогда не используется, так что помнить ee не нужно).

Я слышал несколько версий как произносить CPAN. Первый вариант — говорить "сипан" и я придерживаюсь именно этого варианта. Еще я слышал "цпан", но на мой взгляд такой вариант хуже: английская буква "c" — все-таки читается как "си", а не как "ц"; и слово "цпан" сложнее произносить чем "сипан".

Официальный запуск CPAN случился 26 октября 1995 года. В интернете есть огромная страница с кучей интересных подброностей про историю языка Perl. Например, интересно узнать какие еще слова рассматривались при выборе названия:

Есть 2 популярных сайта с помощью которых можно работать с CPAN. Первый — это старый-престарый сайт search.cpan.org который долгое время решал все задачи по работе с CPAN. 2 года назад появился новый сайт metacpan.org, который позволяет делать все то же самое, но сильно удобнее. Сайт metacpan.org лучше чем search.cpan.org в куче разнообразных мелочей. И стоит использовать именно сайт metacpan.org.

MetaCPAN logo

Итак, CPAN. Много готового кода и куча терминологии. Я хочу рассказать о терминологии объектов, которые хранятся на CPAN. У меня на CPAN выложено несколько библиотек, в том чисте маленькая библиотека StatusBoard::Graph, на примере которой я покажу некоторе важные термины.

Дистрибутив

Я придумал название, написал код, создал специльный tar.gz файл, залил его на CPAN и тем самым я создал сущность под названием "Дистрибутив" (одновременно с этим я еще и создал сущностью "релиз", но сейчас говорим о дистрибутиве). В качестве имени для дистрибутива я выбрал название "StatusBoard-Graph". Это стандартная практика именования — взять имя главного модуля (в моем случае это "StatusBoard::Graph") и заменить все "::" на "-".

В файле META.yml моего дистрибутива StatusBoard-Graph есть запись:

name: StatusBoard-Graph

Название дистрибутива не всегда совпадает с названием главного модуля. Например, есть очень популярный дистрибутив libwww-perl, гланвый модуль у которого назвается LWP.

Вот строка из файла META.yml дистрибутива libwww-perl:

name: libwww-perl

Релиз

Дистрибутив, это достаточно абстрактная сущность — это просто название. Мой дистрибутив StatusBoard::Graph сейчас состоит из двух релизов:

Вот релиз — это уже не просто абстрактная сущность. На релиз уже есть ссылка на metacpan:

И на metacpan есть ссылка, которая всегда указывает на последний релиз этого дистрибутива: https://metacpan.org/release/StatusBoard-Graph.

Модуль

Модуль это часть релиза. Например, релиз StatusBoard::Graph версии 1.0.1 содержит в себе 2 модуля:

В обоих релизах StatusBoard::Graph содержатся одни и те же модули (но немного разные по содержимому), но в общем случае в разных релизах одного и того же дистрибутива набор модулей может не совпадать — могут появлятся новые модули и исчезать старые.

Резюме терминологии

Вот рисунок:

Схема CPAN терминологии

Ссылки

TODO

Иван Бессарабов
ivan@bessarabov.ru

5 октября 2013