stringtranslate.com

CPAN

Логотип КПАН

Comprehensive Perl Archive Network ( 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] , который используется для создания Makefiles для сборки и установки других модулей расширения; другие, например List::Util, [6], просто используются повсеместно.

Основная цель CPAN — помочь программистам находить модули и программы, не включенные в стандартный дистрибутив Perl. Его структура децентрализована. Авторы поддерживают и улучшают свои собственные модули. Распространены разветвления и создание конкурирующих модулей для той же задачи или цели. Существует сторонняя система отслеживания ошибок, которая автоматически настраивается для любого загруженного дистрибутива, но авторы могут выбрать другую систему отслеживания ошибок, например GitHub . Аналогично, хотя GitHub является популярным местом для хранения исходного кода дистрибутивов, он может храниться в любом месте, которое предпочитает автор, или может быть вообще недоступен для общественности. Сопровождающие могут предоставлять другим разрешения на поддержание или захват своих модулей, а администраторы могут предоставлять разрешения тем, кто хочет захватить заброшенные модули. Предыдущие версии обновленных дистрибутивов сохраняются на CPAN до тех пор, пока не будут удалены загрузчиком, а вторичная зеркальная сеть BackPAN сохраняет дистрибутивы, даже если они удалены из CPAN. [7] Кроме того, полная история CPAN и всех его модулей доступна как проект GitPAN, [8] позволяющий легко просматривать полную историю для всех модулей и для легкого обслуживания форков. CPAN также используется для распространения новых версий Perl, а также связанных проектов, таких как Parrot и Raku .

Структура

Файлы на CPAN называются дистрибутивами . Дистрибутив может состоять из одного или нескольких модулей, файлов документации или программ, упакованных в общий формат архивации, например, сжатый gzip -архив tar или файл ZIP . Дистрибутивы часто содержат установочные скрипты (обычно называемые Makefile.PL или Build.PL ) и тестовые скрипты, которые можно запустить для проверки правильности работы содержимого дистрибутива. Новые дистрибутивы загружаются на сервер загрузки Perl Authors Upload Server или 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] Каждое полное зеркало содержит около 36 гигабайт данных. [11]

Большинство зеркал обновляются ежечасно, ежедневно или дважды в день с главного сайта CPAN. [12] Некоторые сайты являются крупными FTP-серверами, которые зеркалируют множество другого программного обеспечения, но другие являются просто серверами, принадлежащими компаниям, которые активно используют Perl. На каждом континенте, кроме Антарктиды, есть как минимум два зеркала.

Было написано несколько поисковых систем, чтобы помочь программистам Perl разобраться в CPAN. Официальный search.cpan.org включает текстовый поиск, просматриваемый индекс модулей и извлеченные копии всех дистрибутивов, которые в настоящее время находятся на CPAN. 16 мая 2018 года Perl Foundation объявил, что search.cpan.org будет закрыт 29 июня 2018 года (после 19 лет работы) из-за его устаревшей кодовой базы и бремени обслуживания. Пользователи будут переведены и перенаправлены на стороннюю альтернативу MetaCPAN. [13] [14]

Тестировщики CPAN — это группа добровольцев, которые будут загружать и тестировать дистрибутивы по мере их загрузки на CPAN. Это позволяет авторам тестировать свои модули на многих платформах и средах, к которым у них в противном случае нет доступа, тем самым улучшая переносимость и качество. Тестировщики Smoke отправляют отчеты, которые затем сопоставляются и используются для различных презентационных сайтов, включая основной сайт отчетов, статистику и зависимости.

Авторы могут загружать новые дистрибутивы на CPAN через Perl Authors Upload Server (PAUSE). Для этого им необходимо запросить учетную запись PAUSE.

После регистрации они могут использовать веб-интерфейс 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 был добавлен в ядро ​​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 для Ruby ; 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 Archive Network. JSAN — это почти прямой порт инфраструктуры CPAN для использования с языком JavaScript, который на протяжении большей части своего существования не имел сплоченного «сообщества».

В 2008 году после случайной встречи с администратором CPAN Адамом Кеннеди на конференции разработчиков открытого исходного кода разработчик ядра Linux Расти Рассел создал CCAN, Comprehensive C Archive Network. CCAN — это прямой порт архитектуры CPAN для использования с языком C.

CRAN (Comprehensive R Archive Network) — это набор зеркал, на которых размещаются дистрибутивы языка R , документация и предоставленные расширения. [20]

Ссылки

  1. ^ "CPAN front page" . Получено 27 января 2016 г. .
  2. ^ «Как лицензируются Perl и модули CPAN?». Большинство, хотя и не все, модулей на CPAN лицензируются по GNU General Public License (GPL) или Artistic license...
  3. ^ «Хронология Perl и его культуры».
  4. ^ "Grokking the CPAN" (PDF) . Предлагаю объединить усилия для создания единой структуры, подобной проекту CTAN, которому удалось создать коллекцию канонических сайтов для TeX.
  5. ^ "ExtUtils::MakeMaker - Создание модуля Makefile - Perldoc Browser". perldoc.perl.org . Получено 18 ноября 2020 г. .
  6. ^ "List::Util - Выборка подпрограмм списка общего назначения - Perldoc Browser". perldoc.perl.org . Получено 18 ноября 2020 г. .
  7. ^ "BackPAN" . Получено 20 декабря 2019 .
  8. ^ "Что такое Gitpan?". GitHub . 2 декабря 2015 г. Получено 16 ноября 2016 г.
  9. ^ "CPAN::Meta::History" . Получено 20 декабря 2019 г. .
  10. ^ "CPAN Mirror Network" . Получено 16 ноября 2016 г.
  11. ^ "Как зеркалировать CPAN". CPAN.org . Получено 22 августа 2024 г. .
  12. ^ "CPAN Status and Statistics" . Получено 9 мая 2010 г. .
  13. ^ "Конец эпохи: прощание с search.cpan.org". log.perl.org . Получено 22 мая 2018 г. .
  14. ^ "Прощание с search.cpan.org". perl.com . Получено 26 июня 2018 г. .
  15. ^ "PAUSE Operating Model". GitHub . Получено 20 декабря 2019 г.
  16. ^ "Re: Killer Apps in PERL" . Получено 24 февраля 2013 г. .
  17. ^ "Элементы программирования на Perl". 12 октября 2000 г. Получено 25 апреля 2013 г.
  18. ^ "Используйте этот formmail.pl ради развлечения и, ну, развлечения". 7 августа 2001 г. Получено 25 апреля 2013 г.
  19. ^ «Архив сценариев Мэтта снова наносит удар!». 4 июля 2001 г. Получено 25 апреля 2013 г.
  20. ^ "Что такое CRAN?" . Получено 20 декабря 2019 г. .

Внешние ссылки