Jump to content

Репозиторий программного обеспечения

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

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

Пример подписанного ключа репозитория (с ZYpp в openSUSE )

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

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

В корпоративной среде репозиторий программного обеспечения обычно используется для хранения артефактов или для зеркалирования внешних репозиториев, которые могут быть недоступны из-за ограничений безопасности. Такие репозитории могут предоставлять дополнительные функции, такие как контроль доступа, управление версиями, проверки безопасности загруженного программного обеспечения, функциональность кластера и т. д., и обычно поддерживают множество форматов в одном пакете, чтобы удовлетворить все потребности предприятия и, таким образом, стремятся предоставить единую точку истины. Популярные примеры: JFrog Artifactory, [2] [3] Репозиторий Нексуса [4] и Клаудсмит, [5] облачный продукт.

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

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

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

[ редактировать ]

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

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

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

Выбранные репозитории

[ редактировать ]

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

Очень немногие люди имеют возможность тестировать свое программное обеспечение в нескольких операционных системах с разными версиями основного кода и с другими дополнительными пакетами, которые они могут использовать. Для языка программирования R Comprehensive R Archive Network (CRAN) регулярно проводит тесты.

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

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

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

Язык , цель Процесс разработки пакета Репозиторий Методы установки Платформа для совместной разработки Автопроверки
Хаскелл Общая архитектура для создания приложений и библиотек [6] Хакадж клика (программное обеспечение)
Ява Мавен [7]
Юлия [8]
Общий Лисп Квиклисп [9]
.СЕТЬ NuGet NuGet [10] dotnet добавить пакет <пакет>
Node.js узел НПМ , [11] пряжа , беседка npm install <пакет>

пряжа добавить <пакет>

установка беседки <пакет>

Перл КПАН ППМ [12] Активстате
PHP ГРУША , Композитор PECL , Упаковщик композитору требуется <пакет>

груша установить <пакет>

Питон Инструменты настройки , Поэзия [13] ПиПИ пип , EasyInstall , PyPM, Анаконда
Р R Процесс проверки CMD [14] [15] КРАН [16] install.packages [17]
пульты [18]
GitHub [19] Часто на 12 платформах или комбинациях разных версий R (devel, prerel, patched, Release) в разных операционных системах (разные версии Linux, Windows, macOS и Solaris).
Руби RubyGems RubyGems [20] Рубиновые драгоценности, [20] Бандлер [21]
Ржавчина Груз [22] crates.io [23] Груз [22]
Идти идти pkg.go.dev иди и возьми <пакет> GitHub [19]
Дарт трепетать pub.dev флаттер паб получить <пакет>
Д Дублирование dlang.org дублировать добавить <пакет>
ТеХ , Латекс КТАН

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

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

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

Менеджеры пакетов

[ редактировать ]

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

Популярные менеджеры пакетов
Менеджер пакетов Описание
НПМ Менеджер пакетов для Node.js [25]
пункт Установщик пакетов для Python [26]
подходящий Для управления пакетами Debian [27]
Домашнее пиво Установщик пакетов для MacOS, который позволяет устанавливать пакеты, которых нет у Apple. [28]
vcpkg Менеджер пакетов для C и C++. [29] [30]
ням и днф Менеджер пакетов для Fedora и Red Hat Enterprise Linux [31]
пакман Менеджер пакетов для Arch Linux [32]

Менеджеры репозитория

[ редактировать ]

Отношение к непрерывной интеграции

[ редактировать ]

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

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

Артефакты и пакеты

[ редактировать ]

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

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

Метаданные

[ редактировать ]

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

Тип метаданных Используется для
Доступные версии Автоматическое обновление и понижение версии
Зависимости Укажите другие артефакты, от которых зависит текущий артефакт
Нижестоящие зависимости Укажите другие артефакты, которые зависят от текущего артефакта
Лицензия Соблюдение законодательства
Дата и время сборки Прослеживаемость
Документация Обеспечение автономной доступности контекстной документации в IDE.
Информация об одобрении Прослеживаемость
Метрики Покрытие кода, соответствие правилам, результаты тестирования
Метаданные, созданные пользователем Пользовательские отчеты и процессы

См. также

[ редактировать ]
  1. ^ itmWEB: Борьба с компьютерными вирусами. Архивировано 14 октября 2007 г., в Wayback Machine.
  2. ^ «JFrog Artifactory — wikieduonline» . Архивировано из оригинала 05 марта 2021 г. Проверено 25 апреля 2021 г.
  3. ^ «Артифабрика — универсальное управление артефактами» . Архивировано из оригинала 1 мая 2021 г. Проверено 25 апреля 2021 г.
  4. ^ «Репозиторий Nexus | Управление программными компонентами» . Архивировано из оригинала 25 апреля 2021 г. Проверено 25 апреля 2021 г.
  5. ^ «Хранилище артефактов Cloudsmith» . Архивировано из оригинала 16 июля 2023 г. Проверено 11 сентября 2023 г.
  6. ^ «Кабала Haskell | Обзор» . www.haskell.org . Архивировано из оригинала 10 апреля 2019 г. Проверено 25 марта 2019 г.
  7. ^ «Maven – Добро пожаловать в Apache Maven» . maven.apache.org . Архивировано из оригинала 24 июля 2011 г. Проверено 25 марта 2019 г.
  8. ^ «Список пакетов Джулии» . pkg.julialang.org . Архивировано из оригинала 20 января 2019 г. Проверено 25 марта 2019 г.
  9. ^ «Бета-версия Quicklisp» . www.quicklisp.org . Архивировано из оригинала 23 марта 2019 г. Проверено 25 марта 2019 г.
  10. ^ Каранн-MSFT. «Справочник по пользовательскому интерфейсу диспетчера пакетов NuGet» . docs.microsoft.com . Архивировано из оригинала 25 марта 2019 г. Проверено 25 марта 2019 г.
  11. ^ "НПМ" . www.npmjs.com . Архивировано из оригинала 13 апреля 2018 г. Проверено 25 марта 2019 г.
  12. ^ «Установка модулей Perl — www.cpan.org» . www.cpan.org . Архивировано из оригинала 14 марта 2019 г. Проверено 25 марта 2019 г.
  13. ^ «Поэзия» . python-poetry.org . Архивировано из оригинала 22 мая 2024 г. Проверено 22 мая 2024 г.
  14. ^ Лейш, Фридрих. «Создание пакетов R: руководство» (PDF) . Архивировано (PDF) из оригинала 9 декабря 2017 г. Проверено 19 июля 2016 г.
  15. ^ Грейвс, Спенсер Б.; Дораи-Радж, Сундар. «Создание пакетов R с использованием CRAN, R-Forge и локальных сетей архивов R и репозиториев Subversion (SVN)» (PDF) . Архивировано (PDF) из оригинала 5 июля 2017 г. Проверено 19 июля 2016 г.
  16. ^ «Комплексная сеть архивов R» . cran.r-project.org . Архивировано из оригинала 23 января 2019 г. Проверено 25 марта 2019 г.
  17. ^ «Установка и администрирование R» . cran.r-project.org . Архивировано из оригинала 23 ноября 2015 г. Проверено 25 марта 2019 г.
  18. ^ Уикхэм, Хэдли; Брайан, Дженни. «Структура и состояние пакета» . Р-пакеты . О'Рейли. Архивировано из оригинала 09.11.2020 . Проверено 20 ноября 2020 г.
  19. ^ Jump up to: а б Декан, Александр; Менс, Том; Клаас, Малик; Грожан, Филипп (2015). «О разработке и распространении пакетов R: эмпирический анализ экосистемы R» . Материалы Европейской конференции по семинарам по архитектуре программного обеспечения 2015 года . стр. 1–6. дои : 10.1145/2797433.2797476 . ISBN  9781450333931 . S2CID   1680582 . Архивировано из оригинала 18 января 2023 г. Проверено 26 октября 2021 г.
  20. ^ Jump up to: а б «RubyGems.org — ваш хостинг драгоценных камней сообщества» . рубигемы . Архивировано из оригинала 13 февраля 2019 г. Проверено 3 февраля 2022 г.
  21. ^ «Bundler: лучший способ управлять драгоценными камнями приложения Ruby» . Bundler.io . Архивировано из оригинала 29 января 2022 г. Проверено 3 февраля 2022 г.
  22. ^ Jump up to: а б «Грузовая книга» . Документация. Язык программирования Rust . Архивировано из оригинала 28 апреля 2019 г. Проверено 26 августа 2019 г.
  23. ^ «Реестр пакетов Rust» . crates.io . Архивировано из оригинала 28 августа 2019 г. Проверено 26 августа 2019 г.
  24. ^ «Список лучших репозиториев по языкам программирования» . Переполнение стека . Архивировано из оригинала 26 декабря 2018 г. Проверено 14 апреля 2010 г.
  25. ^ «npm О» . www.npmjs.com . Архивировано из оригинала 19 ноября 2019 г. Проверено 21 ноября 2019 г.
  26. ^ разработчики, The pip, pip: рекомендуемый PyPA инструмент для установки пакетов Python. , заархивировано из оригинала 14 июля 2020 г. , получено 21 ноября 2019 г.
  27. ^ «Апт — Debian Wiki» . wiki.debian.org . Архивировано из оригинала 19 октября 2019 г. Проверено 22 ноября 2019 г.
  28. ^ «Домашнее пивоварение» . Домашнее пиво . Архивировано из оригинала 5 октября 2022 г. Проверено 22 ноября 2019 г.
  29. ^ «Yelp запускает Yelp Fusion, Microsoft создает инструмент Vcpkg и новый Touch Sense SDK для разработчиков Android» . СД Таймс . 20 сентября 2016 г. Архивировано из оригинала 27 ноября 2020 г. . Проверено 19 ноября 2020 г.
  30. ^ «Менеджер библиотек Microsoft C++ теперь доступен для Linux и macOS» . СД Таймс . 25 апреля 2018 года. Архивировано из оригинала 22 сентября 2020 года . Проверено 19 ноября 2020 г.
  31. ^ Чинтагунта, Кирти (22 апреля 2020 г.). «Управление пакетами Linux с помощью YUM и RPM» . Включите сисадмина . Архивировано из оригинала 11 апреля 2021 г. Проверено 11 апреля 2021 г.
  32. ^ «пакман — ArchWiki» . wiki.archlinux.org . Архивировано из оригинала 18 августа 2017 г. Проверено 11 апреля 2021 г.
  33. ^ Крис, Такер (15 марта 2007 г.). «Менеджер установки/удаления оптимальных пакетов» (PDF) . Калифорнийский университет в Сан-Диего: 1. Архивировано (PDF) из оригинала 14 июня 2011 г. Проверено 14 сентября 2011 г. {{cite journal}}: Для цитирования журнала требуется |journal= ( помощь )
  34. ^ «Схемы классификации репозиториев Linux» . www.brainticle.blogspot.com. 13 января 2006 г. Архивировано из оригинала 11 октября 2007 г. Проверено 1 марта 2008 г.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 91518c13bfc1bf84ca307231cfa15e6e__1721245620
URL1:https://arc.ask3.ru/arc/aa/91/6e/91518c13bfc1bf84ca307231cfa15e6e.html
Заголовок, (Title) документа по адресу, URL1:
Software repository - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)