Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску
Логотип CPAN

Comprehensive Perl Archive Network ( CPAN ) является хранилищем более 250 000 программных модулей и сопутствующая документация для 39000 распределений, написанных на 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 или на ПАУЗУ (см. Раздел « Загрузка дистрибутивов с ПАУЗой» ).

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

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

Авторы могут загружать новые дистрибутивы в 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 может удалить дистрибутив. 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] Это примерно эквивалент PECL и PEAR для PHP ; PyPI (Python Index Package) хранилище для Python ; RubyGems для Ruby ; КРАН для R ; npm для Node.js ; LuaRocks для Lua ; Maven для Java ; и взлом для 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]

Администраторы [ править ]

Адам Кеннеди [ править ]

Адам Кеннеди в 2016 году

Адам Кеннеди - австралийский программист Perl и один из нескольких администраторов CPAN. Под своим идентификатором автора CPAN для ADAMK он поддерживает более 200 распределений модулей на CPAN, что ставит его на первое место в таблице лидеров CPAN. [21] Кеннеди является первым разработчиком более 200 модулей CPAN, многие из которых он позаимствовал у других авторов и включил в свой Открытый репозиторий, доступный для использования любым зарегистрированным автором CPAN. Он часто выступает на конференциях по открытому исходному тексту , таких как OSDC , OSCON и YAPC, а также на хакатонах Perl QA.

Кеннеди разработал несколько важных модулей для языка программирования Perl, особенно в области инструментов для улучшения разработки и построения цепочки инструментов, таких как PPI [22] (парсер Perl), CPAN :: Metrics [23] (генерирует метрики на 16 m + строк кода в CPAN), Portable Perl [24] (он же «Perl на палке») и Padre (Perl IDE) . Он также был ярым сторонником равенства платформ для Perl в Windows и основал как Win32 Perl Wiki, так и дистрибутив Strawberry Perl для Windows.

PPI

Perl PPI Parser является важным строительным блоком для анализа кода Perl 5, документации и инструментов рефакторинга. Perl :: Critic [25] использует PPI ​​для критики исходного кода Perl по критериям Perl Best Practices ; Padre IDE использует PPI ​​для анализа кода и рефакторинга. Документация PPI ссылается на трюизм, что «только perl (интерпретатор) может анализировать Perl (исходный код)», потому что это динамический язык ; сообщение на PerlMonks представляет собой формальное доказательство. [26]

Клубничный перл

Strawberry Perl - это двоичный дистрибутив Perl для операционной системы Windows. В отличие от большинства дистрибутивов Perl для Windows, Strawberry Perl также включает в себя компилятор C, инструмент make и некоторые предварительно сконфигурированные модули для улучшения совместимости со средой Windows. Цель этого дистрибутива - предоставить практическую среду для тестирования и использования последних модулей, доступных от CPAN. Ларри Уолл , создатель Perl, одобрил это как хороший порт для Windows. [27]

Portable Perl (он же «Perl на палочке»)

Portable Perl [28] - это первый дистрибутив Perl, подходящий для установки на портативные устройства флэш-памяти, плееры iPod, мобильные телефоны, камеры и т. Д. Первый выпуск был распространен на флэш-накопителях USB на OSCON 2008. [29] Первоначальная работа над этим проектом была профинансирована. за счет гранта Фонда Perl.

Обсуждение библиографии

Адам Кеннеди выступал на ряде технических конференций по всему миру, в том числе на OSCON , OSDC , Linux.conf.au и на многочисленных мероприятиях YAPC . Эти беседы включают:

  • PITA - смехотворно крупномасштабное тестирование , YAPC :: NA 2006 [30]
  • Ничего не может пойти не так , Linux.conf.au 2007 [31]
  • Strawberry Perl, Достижение равенства платформ Win32 , OSCON 2008 [32]
  • Padre - Perl IDE для нормальных людей , OSDC 2009 [33]
Текущая работа

Адам переехал в Сан-Франциско , штат Калифорния, США в 2012 году. Он работал в Kaggle с 2012 по 2015 год и начал работать инженером в Apple в 2016 году. [34] В настоящее время он занимает должность менеджера по разработке данных Siri Search в Apple. [35]

Ссылки [ править ]

  1. ^ "Первая страница CPAN" . Проверено 27 января +2016 .
  2. ^ "Как лицензируются модули Perl и CPAN?" . Большинство, хотя и не все, модули на CPAN находятся под лицензией GNU General Public License (GPL) или лицензией Artistic ...
  3. ^ «Хронология Perl и его культуры» .
  4. ^ "Взлом 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. ^ "Что такое Гитпан?" . 2 декабря 2015 . Проверено 16 ноября +2016 .
  9. ^ "CPAN :: Meta :: History" . Проверено 20 декабря 2019 .
  10. ^ "Зеркальная сеть CPAN" . Проверено 16 ноября +2016 .
  11. ^ "Как отразить CPAN" . CPAN.org . Проверено 15 ноября +2016 .
  12. ^ «Статус и статистика CPAN» . Проверено 9 мая 2010 года .
  13. ^ «Конец эпохи: прощаемся с search.cpan.org» . log.perl.org . Проверено 22 мая 2018 .
  14. ^ «Прощаемся с search.cpan.org» . perl.com . Проверено 26 июня 2018 .
  15. ^ "Операционная модель ПАУЗА" . Проверено 20 декабря 2019 .
  16. ^ "Re: Приложения-убийцы в 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 .
  21. ^ http://thegestalt.org/simon/perl/wholecpan.html
  22. ^ https://metacpan.org/module/PPI
  23. ^ https://metacpan.org/module/CPAN::Metrics
  24. ^ https://metacpan.org/module/Portable
  25. ^ https://metacpan.org/module/Perl::Critic
  26. ^ http://www.perlmonks.org/?node_id=663393
  27. ^ http://www.computerworld.com.au/article/270267/-z_programming_languages_perl?pp=3&fp=&fpid=
  28. ^ "Архивная копия" . Архивировано из оригинала 21 июля 2011 года . Проверено 30 июня 2009 года .CS1 maint: заархивированная копия как заголовок ( ссылка )
  29. ^ "Архивная копия" . Архивировано из оригинала 6 июля 2010 года . Проверено 30 июня 2009 года .CS1 maint: archived copy as title (link)
  30. ^ http://www.media-landscape.com/yapc/2006-06-26.AdamKennedy/
  31. ^ http://lca2007.linux.org.au/talk/122.html
  32. ^ http://en.oreilly.com/oscon2008/public/schedule/detail/2769
  33. ^ "Архивная копия" . Архивировано из оригинального 24 -го октября 2009 года . Проверено 28 ноября 2009 года .CS1 maint: archived copy as title (link)
  34. ^ https://www.linkedin.com/in/adamatalias
  35. ^ "Speaker Bio 2019" .

Внешние ссылки [ править ]

  • Официальный веб-сайт
  • MetaCPAN
  • Список официальных зеркал CPAN , статус зеркал
  • ZCAN - «Дзен комплексных архивных сетей» - документ, целью которого является объяснение того, как и почему удалось добиться успеха CPAN и как его дублировать в аналогичных усилиях. (9 января 2003 г., Яркко Хиетаниеми ).