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

Хранилище программного обеспечения , или «репо» для краткости, это место для хранения пакетов программного обеспечения . Часто вместе с метаданными также сохраняется оглавление. Репозиторий программного обеспечения обычно управляется системой контроля версий или менеджерами репозиториев. Менеджеры пакетов позволяют устанавливать и обновлять репозитории (иногда называемые «пакетами») вместо того, чтобы делать это вручную.

Обзор [ править ]

Многие издатели программного обеспечения и другие организации поддерживают серверы в Интернете для этой цели либо бесплатно, либо за абонентскую плату. Репозитории могут быть исключительно для определенных программ, таких как CPAN для языка программирования Perl , или для всей операционной системы . Операторы таких репозиториев обычно предоставляют систему управления пакетами , инструменты, предназначенные для поиска, установки и иного управления пакетами программного обеспечения из репозиториев. Например, многие дистрибутивы Linux используют Advanced Packaging Tool (APT), обычно встречающийся в дистрибутивах на основе Debian , или yum, найденный вРаспределения на основе Red Hat . Также существует несколько независимых систем управления пакетами, таких как pacman, используемый в Arch Linux, и equo, найденный в Sabayon Linux .

Поскольку программные репозитории предназначены для включения полезных пакетов, основные репозитории разработаны таким образом, чтобы не содержать вредоносных программ . Если компьютер настроен на использование репозитория с цифровой подписью от известного поставщика и связан с соответствующей системой разрешений , это значительно снижает угрозу вредоносного ПО для этих систем. В качестве побочного эффекта многие системы, обладающие этими возможностями, не требуют антивирусного программного обеспечения, такого как антивирусное программное обеспечение . [1]

Большинство основных дистрибутивов Linux имеют множество репозиториев по всему миру, которые отражают основной репозиторий.

В корпоративной среде репозиторий программного обеспечения обычно используется для хранения артефактов или для зеркалирования внешних репозиториев, которые могут быть недоступны из-за ограничений безопасности. Такие репозитории могут предоставлять дополнительные функции, такие как контроль доступа, управление версиями, проверки безопасности для загруженного программного обеспечения, функциональные возможности кластера и т. Д., И обычно поддерживают различные форматы в одном пакете, чтобы удовлетворить все потребности предприятия, и, таким образом, стремясь обеспечить единую истину. Популярные примеры - Artifactory и Nexus.

На стороне клиента менеджер пакетов помогает устанавливать и обновлять репозитории.

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

Система управления пакетами и процесс разработки пакетов [ править ]

Система управления пакетами отличается от процесса разработки пакетов .

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

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

Выбранные репозитории [ править ]

В следующей таблице перечислены несколько языков с репозиториями для предоставленного программного обеспечения. В столбце «Автоматические проверки» описаны выполненные стандартные проверки.

Очень немногие люди имеют возможность тестировать свое программное обеспечение в нескольких операционных системах с разными версиями основного кода и с другими добавленными пакетами, которые они могут использовать. Для R - комплексная сеть архивов R (CRAN)регулярно проводит тесты. Чтобы увидеть, насколько это ценно, предположим, что Салли предоставляет пакет A. Салли запускает только текущую версию программного обеспечения под одной версией Microsoft Windows и только тестировала ее в этой среде. С более или менее регулярными интервалами CRAN тестирует вклад Салли в дюжине комбинаций операционных систем и версий программного обеспечения на основном языке R. Если один из них выдает ошибку, она получает это сообщение об ошибке. Если повезет, этого сообщения об ошибке может быть достаточно, чтобы позволить ей исправить ошибку, даже если она не может воспроизвести ее с помощью имеющегося у нее оборудования и программного обеспечения. Затем предположим, что Джон вносит в репозиторий пакет B, который использует пакет A. Пакет B проходит все тесты и становится доступным для пользователей. Позже Салли представляет улучшенную версию A, которая, к сожалению, ломает B.

Этот пример демонстрирует как сильные, так и слабые стороны системы дополнительных пакетов R: CRAN поддерживает этот вид автоматического тестирования добавленных пакетов, но для пакетов, внесенных в CRAN, нет необходимости указывать версии других добавленных пакетов, которые они используют. Существуют процедуры для запроса конкретных версий пакетов, но участники могут не использовать эти процедуры.

Помимо этого, репозиторий, такой как CRAN, выполняющий регулярные проверки предоставленных пакетов, на самом деле предоставляет обширный набор специальных тестов для разрабатываемых версий основного языка. Если Салли (в приведенном выше примере) получает сообщение об ошибке, которое она не понимает или считает неуместным, особенно из разрабатываемой версии языка, она может (и часто делает с R) обратиться за помощью к основной группе разработчиков. . Таким образом, репозиторий может способствовать повышению качества программного обеспечения на основном языке.

(Части этой таблицы были скопированы из «Списка самых популярных репозиториев по языку программирования» на сайте Stack Overflow [17] )

Многие другие языки программирования, в том числе C , C ++ и Fortran , не имеют центрального репозитория программного обеспечения с универсальной областью действия. Известные репозитории с ограниченным объемом включают:

  • Netlib , в основном математические процедуры для Fortran и C, исторически один из первых открытых репозиториев программного обеспечения;
  • Boost , строго подобранный набор высококачественных библиотек для C ++; некоторый код, разработанный в Boost, позже стал частью стандартной библиотеки C ++.

Менеджеры пакетов [ править ]

Менеджеры пакетов помогают управлять репозиториями и их распространением. Если репозиторий обновляется, менеджер пакетов обычно позволяет пользователю обновлять этот репозиторий через менеджер пакетов. Они также помогают управлять такими вещами, как зависимости между другими репозиториями программного обеспечения. Вот некоторые примеры менеджеров пакетов:

Менеджеры репозитория [ править ]

Связь с непрерывной интеграцией [ править ]

В рамках жизненного цикла разработки исходный код постоянно встраивается в двоичные артефакты с использованием непрерывной интеграции . Он может взаимодействовать с менеджером двоичного репозитория так же, как разработчик, получая артефакты из репозиториев и отправляя туда сборки. Тесная интеграция с серверами CI позволяет хранить важные метаданные, такие как:

  • Какой пользователь запустил сборку (вручную или путем фиксации в системе контроля версий)
  • Какие модули были построены
  • Какие источники использовались (идентификатор фиксации, ревизия, ветка)
  • Используемые зависимости
  • Переменные среды
  • Установленные пакеты

Артефакты и пакеты [ править ]

Артефакты и пакеты по своей сути означают разные вещи. Артефакты - это просто вывод или набор файлов (например, JAR, WAR, DLLS, RPM и т. Д.), И один из этих файлов может содержать метаданные (например, файл POM). В то время как пакеты представляют собой один архивный файл в четко определенном формате (например, NuGet ), который содержит файлы, соответствующие типу пакета (например, DLL, PDB). [24] Многие артефакты возникают в результате сборки, но другие типы также имеют решающее значение. Пакеты - это, по сути, одно из двух: библиотека или приложение. [25]

По сравнению с исходными файлами двоичные артефакты часто на порядок больше, они редко удаляются или перезаписываются (за исключением редких случаев, таких как моментальные снимки или ночные сборки), и они обычно сопровождаются большим количеством метаданных, таких как идентификатор, имя пакета, версия , лицензия и многое другое.

Метаданные [ править ]

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


Локальные продукты, обеспечивающие управление репозиториями [ править ]

Программное обеспечение для управления репозиториями (менеджеры репозиториев) включает:

  • Apache Archiva - «программное обеспечение для управления репозиторием [для] репозитория артефактов сборки» [26]
  • ProGet от Инедо  - «Универсальный менеджер пакетов. Возможности мирового уровня. Доступен для всех». [27]
  • JFrog Artifactory [28] [29]
  • Package Drone - «репозиторий диспетчера пакетов для OSGi» [30]
  • Sonatype's Nexus -: работает с такими инструментами сборки, как Ant, Ivy, Gradle, Maven, SBT и другими. [31]
  • Pulp - «бесплатная платформа с открытым исходным кодом для управления репозиториями программных пакетов и предоставления их большому количеству потребителей. Поддерживаемые типы: RPM, Python, Puppet, Docker и OSTree». [32]
  • Artipie - инструмент управления двоичными артефактами с открытым исходным кодом [33]

Программное обеспечение как услуга Продукты, предоставляющие репозитории программного обеспечения [ править ]

  • Лазурные артефакты [34]
  • CloudRepo - «Полностью управляемые облачные, частные и общедоступные репозитории». [35]
  • Cloudsmith - «Новый стандарт в управлении пакетами и распространении программного обеспечения». [36]
  • Dist - «Надежные, безопасные, частные и быстрые реестры контейнеров Docker и репозитории Maven, размещенные в облаке». [37]
  • feedz.io - «Хостинг и распространение пакетов» [38]
  • Реестр пакетов GitHub [39]
  • Gitlab [40]
  • MyGet - «служба непрерывной доставки, на которой размещены тысячи репозиториев пакетов NuGet, Bower и NPM» [41]
  • Packagecloud - «Единый удобный для разработчиков интерфейс для всех ваших артефактов». [42]
  • ProgramOnChain - «Создайте свой проект в сети» [43]

См. Также [ править ]

  • Менеджер пакетов
  • Менеджер пакетов RPM
  • Синаптический
  • Порты FreeBSD
  • Полная медиа-библиотека
  • dpkg
  • Simtel
  • APTonCD

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

  1. ^ itmWEB: Как справиться с компьютерными вирусами. Архивировано 14 октября 2007 г. на Wayback Machine.
  2. ^ "The Haskell Cabal | Обзор" . www.haskell.org . Проверено 25 марта 2019 .
  3. ^ «Maven - Добро пожаловать в Apache Maven» . maven.apache.org . Проверено 25 марта 2019 .
  4. ^ "Список пакетов Джулии" . pkg.julialang.org . Проверено 25 марта 2019 .
  5. ^ "Quicklisp beta" . www.quicklisp.org . Проверено 25 марта 2019 .
  6. ^ karann-msft. «Справочник по пользовательскому интерфейсу диспетчера пакетов NuGet» . docs.microsoft.com . Проверено 25 марта 2019 .
  7. ^ "нпм" . www.npmjs.com . Проверено 25 марта 2019 .
  8. ^ «Установка модулей Perl - www.cpan.org» . www.cpan.org . Проверено 25 марта 2019 .
  9. ^ Leisch, Фридрих. «Создание пакетов R: учебное пособие» (PDF) .
  10. ^ Graves, Spencer B .; Дораи-Радж, Сундар. «Создание пакетов R с использованием CRAN, R-Forge и локальных сетей архивов R и репозиториев Subversion (SVN)» (PDF) .
  11. ^ "Всеобъемлющая сеть архивов R" . cran.r-project.org . Проверено 25 марта 2019 .
  12. ^ «Установка и администрирование R» . cran.r-project.org . Проверено 25 марта 2019 .
  13. ^ Уикхэм, Хэдли; Брайан, Дженни. «Состав и состояние упаковки» . R пакеты . О'Рейли.
  14. ^ Декан, Александр; Mens, Tom; Клаас, Мелик; Грожан, Филипп (2015). «О разработке и распространении R-пакетов: эмпирический анализ экосистемы R». Труды Европейской конференции 2015 г. по семинарам по архитектуре программного обеспечения - ECSAW '15 : 1–6. DOI : 10.1145 / 2797433.2797476 .
  15. ^ а б «Грузовая книга» . Документация. Язык программирования Rust . Проверено 26 августа 2019 .
  16. ^ "Реестр пакетов Rust" . crates.io . Проверено 26 августа 2019 .
  17. ^ «Список самых популярных репозиториев по языку программирования» . Переполнение стека . Проверено 14 апреля 2010 .
  18. ^ "npm О" . www.npmjs.com . Проверено 21 ноября 2019 .
  19. ^ разработчики, pip, pip: инструмент, рекомендуемый PyPA для установки пакетов Python. , получено 21.11.2019
  20. ^ "Apt - Debian Wiki" . wiki.debian.org . Проверено 22 ноября 2019 .
  21. ^ "Домашнее пиво" . Домашнее пиво . Проверено 22 ноября 2019 .
  22. ^ «Yelp запускает Yelp Fusion, Microsoft создает инструмент Vcpkg и новый Touch Sense SDK для разработчиков Android» . SD Times . 20 сентября 2016 г.
  23. ^ «Диспетчер библиотек Microsoft C ++ теперь доступен для Linux и macOS» . SD Times . 25 апреля 2018.
  24. ^ Крис, Такер (2007-03-15). «Оптимальный менеджер установки / удаления пакетов» (PDF) . Калифорнийский университет в Сан-Диего: 1 . Проверено 14 сентября 2011 . Цитировать журнал требует |journal=( помощь )
  25. ^ "Схемы классификации репозиториев Linux" . braintickle.blogspot.com . Проверено 1 марта 2008 .
  26. ^ "Apache Archiva: Менеджер хранилища артефактов сборки" . Фонд программного обеспечения Apache . Проверено 17 апреля 2013 . Apache Archiva [...] - это расширяемое программное обеспечение для управления репозиториями, которое помогает заботиться о вашем личном или корпоративном репозитории артефактов сборки.
  27. ^ "ProGet" . Инедо . Проверено 11 февраля 2016 . Последовательность, непрерывность, соответствие - все в одном централизованном универсальном диспетчере пакетов с ProGet.
  28. ^ "JFrog Artifactory" . Wikieduonline. JFrog Artifactory - это программное обеспечение для управления двоичным репозиторием, предназначенное для хранения двоичных выходных данных процесса сборки для использования при распространении и развертывании
  29. ^ «Artifactory. Управляйте своими двоичными файлами» . JFrog . Проверено 20 октября 2014 . Как первое решение для управления двоичным репозиторием, Artifactory изменила способ контроля, хранения и управления двоичными файлами на протяжении всего цикла выпуска программного обеспечения.
  30. ^ "Пакет Drone" . Проверено 23 января 2015 . Идея состоит в том, чтобы создать рабочий процесс Tycho Compile -> опубликовать в репозиторий -> Tycho Compile (с использованием развернутых артефактов). И некоторые инструменты репозитория, такие как очистка, замораживание, проверка.
  31. ^ "Менеджер репозитория Nexus" . Сонатип . Проверено 21 мая 2014 . Nexus Pro дает вам больше информации, больше контроля и лучшую совместную работу в вашей команде, чем когда-либо прежде. И он работает с такими инструментами сборки, как Ant, Ivy, Gradle, Maven, SBT и другими. Используйте Nexus в качестве основы для вашего полного подхода к управлению жизненным циклом компонентов.
  32. ^ "Целлюлоза | Управление репозиторием программного обеспечения" . pulpproject.org . Проверено 11 июля 2017 .
  33. ^ «Artipie: инструмент управления бинарными артефактами» . Артипи . Проверено 30 декабря 2020 . Artipie - это инструмент управления двоичными артефактами с открытым исходным кодом, который поддерживает различные типы хранилищ и многие типы репозиториев.
  34. ^ «Лазурные артефакты» . Лазурные артефакты
  35. ^ "CloudRepo" . CloudRepo . Проверено 1 января 2017 . CloudRepo - это облачный менеджер репозиториев артефактов, предлагающий как публичные, так и частные репозитории. CloudRepo позволяет высокопроизводительным командам разработчиков программного обеспечения безопасно хранить и обмениваться артефактами для использования в других сборках и процессах разработки.
  36. ^ "Cloudsmith" . Cloudsmith . Проверено 20 мая 2020 . Cloudsmith - предпочтительная программная платформа для безопасного хранения и совместного использования пакетов и контейнеров. Мы распространили миллионы пакетов для инновационных компаний по всему миру.
  37. ^ "Расст ." Расст . Проверено 4 марта 2020 . Разрабатывайте и развертывайте с уверенностью. Ваши артефакты являются важной частью ваших конвейеров разработки и развертывания. Dist спроектирован так, чтобы быть высокодоступным, чтобы соответствовать вашим производственным потребностям, и быстрым, чтобы ваши разработчики были счастливы и продуктивны.
  38. ^ «Хостинг и распространение пакетов» . feedz.io . Проверено 10 февраля 2020 . Храните и распространяйте свои частные пакеты NuGet и npm без ограничений для пользователей и прозрачных цен
  39. ^ https://github.blog/2019-05-10-introduction-github-package-registry/
  40. ^ "Пакеты и реестры | GitLab" . docs.gitlab.com . Проверено 11 января 2021 .
  41. ^ «MyGet: размещенные NuGet, NPM, Bower и Vsix» . MyGet . Проверено 13 марта 2013 . MyGet содержит тысячи репозиториев NuGet, Bower и NPM, используемых компаниями и отдельными разработчиками по всему миру. MyGet поставляется со встроенными службами сборки, а также обеспечивает беспроблемную интеграцию с GitHub, BitBucket и Visual Studio Online.
  42. ^ Каналы, Армандо (2018-06-25). «Непрерывная публикация пакетов, часть I: введение в управление пакетами в CI / CD» . circleci.com . [packagecloud] содержит частные и общедоступные репозитории пакетов для множества различных типов пакетов и без проблем работает с различными менеджерами пакетов.
  43. ^ «ProgramOnChain устанавливает первую платформу для разработки альтернативы Github на основе блокчейна» . Bloomberg.com . 2020-10-28 . Проверено 17 февраля 2021 .