КПАН

Комплексная сеть архивов Perl ( CPAN ) представляет собой хранилище более 250 000 программных модулей и сопроводительной документации для 39 000 дистрибутивов, написанных на Perl языке программирования более чем 12 000 участников. [1] CPAN может обозначать либо сеть архивов, либо программу Perl, которая действует как интерфейс к сети и как автоматический установщик программного обеспечения (что-то вроде менеджера пакетов ). Большая часть программного обеспечения на CPAN является бесплатным и открытым исходным кодом . [2]
История [ править ]
CPAN был задуман в 1993 году и действует в Интернете с октября 1995 года. [3] Он основан на модели CTAN и возник как место для унификации структуры разрозненных архивов Perl. [4]
Роль [ править ]
Как и многие языки программирования , Perl имеет механизмы использования внешних библиотек кода, благодаря чему один файл содержит общие процедуры, используемые несколькими программами. Perl вызывает эти модули . Модули Perl обычно устанавливаются в один из нескольких каталогов к которым , пути помещаются в интерпретатор Perl при его первой компиляции ; в Unix-подобных операционных системах общие пути включают /usr/lib/perl5 , /usr/local/lib/perl5 и несколько их подкаталогов.
Perl поставляется с небольшим набором основных модулей . Некоторые из них выполняют задачи начальной загрузки, например ExtUtils::MakeMaker, [5] который используется для создания файлов Makefile для сборки и установки других модулей расширения; другие, такие как List::Util, [6] просто обычно используются.
Основная цель CPAN — помочь программистам найти модули и программы, не включенные в стандартный дистрибутив Perl. Его структура децентрализована. Авторы поддерживают и совершенствуют собственные модули. Разветвление и создание конкурирующих модулей для одной и той же задачи или цели являются обычным явлением. Существует сторонняя система отслеживания ошибок, которая автоматически настраивается для любого загруженного дистрибутива, но авторы могут выбрать другую систему отслеживания ошибок, например GitHub . Аналогично, хотя GitHub — популярное место для хранения исходного кода для дистрибутивов, он может храниться где угодно, как пожелает автор, или вообще не быть общедоступным. Специалисты по сопровождению могут предоставлять другим разрешения на поддержку или использование своих модулей, а администраторы могут предоставлять разрешения тем, кто желает взять на себя заброшенные модули. Предыдущие версии обновленных дистрибутивов сохраняются в CPAN до тех пор, пока не будут удалены пользователем, загрузившим их, а вторичная зеркальная сеть под названием BackPAN сохраняет дистрибутивы, даже если они были удалены из CPAN. [7] Кроме того, полная история CPAN и всех его модулей доступна в виде проекта GitPAN. [8] позволяет легко просмотреть полную историю всех модулей и упрощает обслуживание вилок. CPAN также используется для распространения новых версий Perl, а также связанных с ним проектов, таких как Parrot и Raku .
Структура [ править ]
Файлы в CPAN называются дистрибутивами . Дистрибутив может состоять из одного или нескольких модулей, файлов документации или программ, упакованных в общий формат архивирования, например, сжатый tar -архив или ZIP- файл. Дистрибутивы часто содержат сценарии установки (обычно называемые Makefile.PL или Build.PL ) и тестовые сценарии, которые можно запустить, чтобы убедиться, что содержимое дистрибутива работает правильно. Новые дистрибутивы загружаются на сервер загрузки авторов Perl или PAUSE (см. раздел Загрузка дистрибутивов с помощью PAUSE ).
В 2003 году дистрибутивы начали включать файлы метаданных, называемые META. yml с указанием названия дистрибутива, версии, зависимостей и другой полезной информации; однако не все дистрибутивы содержат метаданные. Если метаданные отсутствуют в дистрибутиве, программное обеспечение PAUSE попытается проанализировать код дистрибутива в поисках той же информации; это не обязательно очень надежно. В 2010 году была создана версия 2 этой спецификации. [9] будет использоваться через новый файл под названием META. json , с файлом формата YAML, который также часто включается для обратной совместимости .
Учитывая тысячи дистрибутивов, CPAN необходимо структурировать, чтобы он был полезен. Авторы часто размещают свои модули в естественной иерархии имен модулей Perl (например, Apache::DBI
или Lingua::EN::Inflect
) в соответствии с целью или доменом, хотя это не является обязательным.
Дистрибутивы модулей CPAN обычно имеют имена в форме CGI-Application-3.1 (где :: , используемый в имени модуля, заменен тире, а к имени добавлен номер версии), но это всего лишь соглашение. ; многие известные дистрибутивы нарушают это соглашение, особенно те, которые содержат несколько модулей. Ограничения безопасности не позволяют дистрибутиву когда-либо заменяться идентичным именем файла, поэтому практически все имена дистрибутива включают номер версии .
Компоненты [ править ]
Дистрибьюторская инфраструктура CPAN состоит из всемирной сети, состоящей из более чем 250 зеркал в более чем 60 странах. [10] Каждое полное зеркало содержит около 31 гигабайта данных. [11]
Большинство зеркал обновляются ежечасно, ежедневно или два раза в день с главного сайта CPAN. [12] Некоторые сайты представляют собой основные FTP-серверы, на которых отражается множество другого программного обеспечения, а другие представляют собой просто серверы, принадлежащие компаниям, активно использующим Perl. На каждом континенте, кроме Антарктиды, есть как минимум два зеркала.
Было написано несколько поисковых систем, помогающих программистам Perl разобраться в CPAN. Официальный поиск
Тестировщики CPAN — это группа добровольцев, которые будут загружать и тестировать дистрибутивы по мере их загрузки в CPAN. Это позволяет авторам тестировать свои модули на многих платформах и средах, к которым в противном случае у них не было бы доступа, что помогает обеспечить переносимость, а также определенный уровень качества. Дым-тестеры отправляют отчеты, которые затем сопоставляются и используются для различных презентационных веб-сайтов, включая основной сайт отчетов, статистику и зависимости.
Авторы могут загружать новые дистрибутивы в CPAN через сервер загрузки авторов Perl (ПАУЗА). Для этого они должны запросить учетную запись PAUSE.
После регистрации они могут использовать веб-интерфейс паузы.perl.org или интерфейс FTP для загрузки файлов в свой каталог и их удаления. Модули в загрузке будут индексироваться как канонические только в том случае, если имя модуля не использовалось ранее (предоставление разрешения в порядке очереди загрузчику) или если у загрузчика есть разрешение на это имя, и если модуль имеет более высокую версию, чем любая другая. существующая запись. [15] Это можно указать через веб-интерфейс PAUSE.
CPAN.pm, CPANPLUS и cpanminus [ править ]
Существует также основной модуль Perl под названием CPAN; его обычно отличают от самого репозитория именем CPAN.pm. CPAN.pm — это, главным образом, интерактивная оболочка, которую можно использовать для поиска, загрузки и установки дистрибутивов. Интерактивная оболочка под названием cpan также присутствует в ядре Perl и является обычным способом запуска CPAN.pm. После короткого процесса настройки и выбора зеркала он использует инструменты, доступные на компьютере пользователя, для автоматической загрузки, распаковки, компиляции, тестирования и установки модулей. Он также способен обновляться.
Попытка заменить CPAN.pm чем-то более чистым и современным привела к созданию набора модулей CPANPLUS (или CPAN++). CPANPLUS отделяет внутреннюю работу по загрузке, компиляции и установке модулей от интерактивной оболочки, используемой для выдачи команд. Он также поддерживает несколько расширенных функций, таких как проверка криптографической подписи и отчет о результатах тестирования. Наконец, CPANPLUS может удалить дистрибутив. CPANPLUS был добавлен в ядро Perl в версии 5.10.0 и удален из него в версии 5.20.0.
Была разработана меньшая по размеру и более компактная современная альтернатива этим установщикам CPAN под названием cpanminus. cpanminus был разработан так, чтобы занимать гораздо меньше памяти, что часто требуется в средах с ограниченной памятью, и чтобы его можно было использовать как автономный сценарий, так что он может даже устанавливаться сам, требуя, чтобы был доступен только ожидаемый набор основных модулей Perl. Он также доступен на CPAN как модуль App::cpanminus, который устанавливает cpanm- скрипт. Он не поддерживает постоянную конфигурацию и не полагается на нее, а настраивается только с помощью параметров среды и командной строки. cpanminus не имеет интерактивного компонента оболочки. Он распознает формат cpanfile для указания предварительных требований, что полезно в специальных проектах Perl, которые могут не быть предназначены для установки CPAN. cpanminus также имеет возможность удалять дистрибутивы.
дистрибутива Каждый из этих модулей может проверять зависимости и рекурсивно устанавливать любые необходимые компоненты либо автоматически, либо с индивидуального одобрения пользователя. Каждый из них поддерживает FTP и HTTP и может работать через брандмауэры и прокси.
Влияние [ править ]
Опытные программисты Perl часто отмечают, что половина мощи Perl находится в CPAN. Его называют убийственным приложением Perl . [16] Это примерно эквивалентно Composer для PHP ; репозиторий PyPI ( Python Package Index) для Python ; RubyGems для Рубина ; CRAN для R ; npm для Node.js ; LuaRocks для Lua ; Maven для Java ; и Hackage для Haskell . Использование CPAN арбитражных пространств имен, режима тестирования и четко определенного стиля документации делает его уникальным.
Учитывая свою важность для сообщества разработчиков Perl, CPAN одновременно формирует и формируется под влиянием культуры Perl . Его «самопровозглашенный главный библиотекарь» Яркко Хиетаниеми часто принимает участие в первоапрельских шутках; 1 апреля 2002 года сайт был временно назван CJAN , где «J» означало «Java». В 2003 году www.cpan.org
доменное имя было перенаправлено на Matt's Script Archive , сайт, печально известный в сообществе Perl из-за плохо написанного кода. [17] [18] [19]
Некоторые раздачи на CPAN распространяются в виде шуток. Acme::
иерархия зарезервирована для модулей шуток; например, Acme::Don't
добавляет don't
функция, которая не запускает переданный ей код (чтобы дополнить do
встроенный, что и делает). Даже за пределами Acme::
иерархия, некоторые модули по-прежнему пишутся в основном для развлечения; один из примеров Lingua::Romana::Perligata
, который можно использовать для написания программ Perl на латинице.
В 2005 году группа разработчиков Perl, которые также интересовались JavaScript, собрались вместе, чтобы создать JSAN — сеть архивов JavaScript. JSAN — это практически прямой порт инфраструктуры CPAN для использования с языком JavaScript, который на протяжении большей части своего существования не имел сплоченного «сообщества».
В 2008 году, после случайной встречи с администратором CPAN Адамом Кеннеди на конференции разработчиков открытого исходного кода, разработчик ядра Linux Расти Рассел создал CCAN, Комплексную сеть архивов C. CCAN — это прямой порт архитектуры CPAN для использования с C. языком
CRAN, Комплексная сеть архивов R, представляет собой набор зеркал, на которых размещаются дистрибутивы языка программирования R , документация и дополнительные расширения. [20]
Ссылки [ править ]
- ^ «Главная страница CPAN» . Проверено 27 января 2016 г.
- ^ «Как лицензируются Perl и модули CPAN?» .
Большинство, хотя и не все, модулей CPAN лицензируются по лицензии GNU General Public License (GPL) или Artistic License...
- ^ «Хронология Perl и его культуры» .
- ^ «Гроккинг CPAN» (PDF) .
Предлагаю сотрудничать для создания единой структуры, очень похожей на проект CTAN, которому удалось создать коллекцию канонических сайтов для TeX.
- ^ «ExtUtils::MakeMaker — Создать модуль Makefile — Perldoc Browser» . perldoc.perl.org . Проверено 18 ноября 2020 г. .
- ^ «List::Util — выбор подпрограмм списка общих утилит — браузер Perldoc» . perldoc.perl.org . Проверено 18 ноября 2020 г. .
- ^ «БэкПАН» . Проверено 20 декабря 2019 г.
- ^ «Что такое Гитпан?» . Гитхаб . 2 декабря 2015 года . Проверено 16 ноября 2016 г.
- ^ "CPAN::Мета::История" . Проверено 20 декабря 2019 г.
- ^ «Зеркальная сеть CPAN» . Проверено 16 ноября 2016 г.
- ^ «Как отзеркалить CPAN» . CPAN.org . Проверено 15 ноября 2016 г.
- ^ «Состояние и статистика CPAN» . Проверено 9 мая 2010 г.
- ^ «Конец эпохи: прощаемся с search.cpan.org» . log.perl.org . Проверено 22 мая 2018 г.
- ^ «Прощаемся с search.cpan.org» . perl.com . Проверено 26 июня 2018 г.
- ^ «Операционная модель ПАУЗА» . Гитхаб . Проверено 20 декабря 2019 г.
- ^ «Re: Убойные приложения в PERL» . Проверено 24 февраля 2013 г.
- ^ «Элементы программирования на Perl» . 12 октября 2000 г. Проверено 25 апреля 2013 г.
- ^ «Используйте этот formmail.pl для развлечения и, ну, для развлечения» . 7 августа 2001 года . Проверено 25 апреля 2013 г.
- ^ «Архив сценариев Мэтта снова наносит удар!» . 4 июля 2001 года . Проверено 25 апреля 2013 г.
- ^ «Что такое КРАН?» . Проверено 20 декабря 2019 г.
Внешние ссылки [ править ]
- Официальный сайт
- МетаCPAN
- Список официальных зеркал CPAN , статус зеркал
- ZCAN — «Дзен комплексных архивных сетей» — документ, цель которого объяснить, как и почему CPAN добился успеха и как дублировать его в аналогичных усилиях. (9 января 2003 г., Яркко Хиетаниеми ).