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

Система управления пакетами
Менеджер пакетов RPM (RPM)
Оригинальный автор(ы)Эрик Троан, Марк Юинг , [1] Red Hat
Разработчик(и)Сообщество и Red Hat [2] [3]
Первоначальный выпуск1997 ; 27 лет назад [1] ( 1997 )
Стабильный релиз
4.20 / 7 октября 2024 г. ; 9 дней назад ( 2024-10-07 )
Репозиторий
  • github.com/rpm-software-management/rpm
Написано вС , Perl [4]
Операционная системаLinux , Unix-подобные
Доступно в40 языков [5]
ТипСистема управления пакетами
ЛицензияGPL
Веб-сайтrpm.org

RPM Package Manager ( RPM ) (первоначально Red Hat Package Manager , теперь рекурсивная аббревиатура ) — это бесплатная система управления пакетами с открытым исходным кодом . [6] Название RPM относится к формату файла и самой программе-менеджеру пакетов. RPM был предназначен в первую очередь для дистрибутивов Linux ; формат файла является базовым форматом пакета Linux Standard Base ..rpm

Хотя он был создан для использования в Red Hat Linux , RPM теперь используется во многих дистрибутивах Linux, таких как PCLinuxOS , Fedora Linux , AlmaLinux , CentOS , openSUSE , OpenMandriva и Oracle Linux . Он также был портирован на некоторые другие операционные системы , такие как Novell NetWare (начиная с версии 6.5 SP3), IBM AIX (начиная с версии 4), [7] IBM i , [8] и ArcaOS . [9]

Пакет RPM может содержать произвольный набор файлов. Большинство файлов RPM являются «двоичными RPM» (или BRPM), содержащими скомпилированную версию некоторого программного обеспечения. Существуют также «исходные RPM» (или SRPM), содержащие исходный код , используемый для сборки двоичного пакета. Они имеют соответствующий тег в заголовке файла, который отличает их от обычных (B)RPM, заставляя их извлекаться в /usr/src при установке. SRPM обычно имеют расширение файла «.src.rpm» (.spm в файловых системах, ограниченных 3 символами расширения, например, старый DOS FAT ).

История

Первоначально RPM был написан в 1997 году Эриком Троаном и Марком Юингом [1] на основе опыта pms, rpp, и .pm

pmбыла написана Риком Фейтом и Дугом Хоффманом в мае 1995 года для Red Hat Software, на ее дизайн и реализацию большое влияние оказала pms, система управления пакетами, разработанная Фейтом и Кевином Мартином осенью 1993 года для Bogus Linux Distribution. pmсохраняет парадигму « Pristine Sources + patches» pms, добавляя при этом функции и устраняя произвольные ограничения, присутствующие в реализации. pmобеспечивает значительно улучшенную поддержку базы данных для отслеживания и проверки установленных пакетов. [4] [10] [11]

Функции

Для системного администратора, выполняющего установку и обслуживание программного обеспечения, использование управления пакетами вместо ручной сборки имеет такие преимущества, как простота, последовательность и возможность автоматизации и неинтерактивности этих процессов. rpm использует Berkeley DB в качестве внутренней базы данных, хотя с версии 4.15 в 2019 году он поддерживает сборку пакетов rpm без Berkeley DB ( –disable-bdb). [12]

Возможности RPM включают в себя:

  • Пакеты RPM могут быть криптографически проверены с помощью GPG и MD5
  • Архив(ы) исходного источника (например .tar.gz, .tar.bz2) включены в SRPM, что упрощает проверку
  • Обновление Delta : PatchRPM и DeltaRPM, эквивалент RPM- файла исправления , могут постепенно обновлять программное обеспечение, установленное с помощью RPM.
  • Автоматическая оценка зависимостей во время сборки.

Местные операции

Пакеты могут поступать из определенного дистрибутива (например, Red Hat Enterprise Linux ) или быть собраны для него другими сторонами (например, RPM Fusion для Fedora Linux). [13] Циклические зависимости между взаимозависимыми RPM (так называемый « ад зависимостей ») могут быть проблематичными; [14] в таких случаях одной команде установки необходимо указать все соответствующие пакеты.

Репозитории

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

Передние части

Несколько интерфейсов RPM облегчают процесс получения и установки RPM из репозиториев и помогают разрешить их зависимости. К ним относятся:

Локальная база данных установки RPM

Работая за кулисами менеджера пакетов, база данных RPM хранится в . В качестве бэкэнда /var/lib/rpmон использует Berkeley DBPackages . Он состоит из одной базы данных ( ), содержащей всю метаинформацию установленных RPM. Несколько баз данных создаются для целей индексации, реплицируя данные для ускорения запросов. База данных используется для отслеживания всех файлов, которые изменяются и создаются, когда пользователь (используя RPM) устанавливает пакет, что позволяет пользователю (через RPM) отменить изменения и удалить пакет позже. Если база данных повреждена (что возможно, если клиент RPM был убит ), базы данных индекса можно воссоздать с помощью rpm --rebuilddbкоманды. [17]

Описание

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

Имя файла пакета и метка

RPM поставляется в виде одного файла, обычно с именем в следующем формате:

<name>-<version>-<release>.src.rpmдля исходных пакетов или
<name>-<version>-<release>.<architecture>.rpmдля двоичных файлов.

Например, в имени файла пакета libgnomeuimm-2.0-2.0.0_3.i386.rpmесть, есть <name>, есть и есть . Соответствующий исходный пакет будет называтьсяlibgnomeuimm<version>2.0<release>2.0.0_3<architecture>i386libgnomeuimm-2.0-2.0.0_3.src.rpm

RPM с noarch.rpmрасширением не зависят от конкретной архитектуры ЦП. Например, эти RPM могут содержать графику и текст для использования другими программами. Они также могут содержать скрипты оболочки или программы, написанные на других интерпретируемых языках программирования, таких как Python .

В комплект RPM также входит этикетка упаковки , на которой указана следующая информация:

  • название программного обеспечения
  • версия программного обеспечения (версия, взятая из исходного источника программного обеспечения)
  • выпуск пакета (количество раз, когда пакет был пересобран с использованием той же версии программного обеспечения). Это поле также часто используется для указания конкретного дистрибутива, для которого предназначен пакет, путем добавления строк, таких как "mdv" (ранее "mdk") ( Mandriva Linux ), "mga" ( Mageia ), "fc4" ( Fedora Core 4), "rh9" ( Red Hat Linux 9), "suse100" ( SUSE Linux 10.0) и т. д.
  • архитектура, для которой был собран пакет (i386, i686, x86_64, ppc и т. д.)

Поля метки пакета не обязательно должны совпадать с именем файла.

Упаковка библиотеки

Библиотеки распространяются в двух отдельных пакетах для каждой версии. Один содержит предварительно скомпилированный код для использования во время выполнения, а второй содержит связанные файлы разработки, такие как заголовки и т. д. Эти пакеты имеют "-devel" в поле имени. Системный администратор должен убедиться, что версии двоичных пакетов и пакетов разработки совпадают.

Двоичный формат

Формат является двоичным и состоит из четырех разделов: [6]

  • Лид, который идентифицирует файл как файл RPM и содержит некоторые устаревшие заголовки.
  • Подпись, которая может быть использована для подтверждения целостности и/или подлинности.
  • Заголовок, содержащий метаданные , включая имя пакета, версию, архитектуру, список файлов и т. д.
  • Файловый архив ( полезная нагрузка ), который обычно находится в формате cpio , сжатый с помощью gzip . rpm2cpioИнструмент позволяет извлекать файл cpio без необходимости установки пакета RPM. [18]
    • Linux Standard Base требует использования gzip, но пакеты Fedora 30 сжаты xz , а пакеты Fedora 31 могут быть сжаты zstd . [19] Последние версии RPM также могут использовать сжатие bzip2 , lzip , [20] или lzma .
    • Формат RPM 5.0 поддерживает использование xar для архивирования.

SPEC-файл

«Рецепт» создания пакета RPM — это файл спецификации. Файлы спецификаций заканчиваются суффиксом «.spec» и содержат имя пакета, версию, номер ревизии RPM, шаги по сборке, установке и очистке пакета, а также журнал изменений. При желании из одного файла спецификации RPM можно собрать несколько пакетов. Пакеты RPM создаются из файлов спецификации RPM с помощью инструмента rpmbuild.

Файлы спецификаций обычно распространяются в файлах SRPM, которые содержат файл спецификации, упакованный вместе с исходным кодом.

СРПМ

Типичный RPM — это предварительно скомпилированное программное обеспечение, готовое к прямой установке. Соответствующий исходный код также может распространяться. Это делается в SRPM, который также включает файл "SPEC", описывающий программное обеспечение и то, как оно построено. SRPM также позволяет пользователю компилировать и, возможно, изменять сам код.

Пакет программного обеспечения может содержать только независимые от платформы скрипты. В таком случае разработчик может предоставить только SRPM, который по-прежнему является устанавливаемым RPM.

НОСРЦ

Это специальная версия SRPM. Она содержит файл "SPEC" и опциональные патчи, но не включает исходники (обычно из-за лицензии). [21]

Вилки

По состоянию на июнь 2010 года [обновлять]в разработке находятся две версии RPM: одна из них находится под руководством Fedora Project и Red Hat, а другая — под руководством отдельной группы, возглавляемой предыдущим разработчиком RPM, бывшим сотрудником Red Hat.

RPM.org

Первая крупная ревизия кода сообщества rpm.org состоялась в июле 2007 года; версия 4.8 была выпущена в январе 2010 года, версия 4.9 — в марте 2011 года, 4.10 — в мае 2012 года, 4.11 — в январе 2013 года, 4.12 — в сентябре 2014 года и 4.13 — в июле 2015 года.

Эта версия используется такими дистрибутивами, как Fedora Linux , Red Hat Enterprise Linux и производными , openSUSE , SUSE Linux Enterprise , Unity Linux , Mageia , [22] OpenEmbedded , Tizen и OpenMandriva Lx (ранее Mandriva ).

RPM v5 (несуществующий)

Джефф Джонсон, сопровождающий RPM с 1999 года, продолжил разработку совместно с участниками из нескольких других дистрибутивов. Версия RPM 5 была выпущена в мае 2007 года.

Эта версия использовалась такими дистрибутивами, как Wind River Linux (до Wind River Linux 10), Rosa Linux и OpenMandriva Lx (бывший Mandriva Linux, перешедший на rpm5 в 2011 году [23] ), а также проектом OpenPKG , который предоставляет пакеты для других распространенных UNIX-платформ.

OpenMandriva Lx вернулась на rpm.org [24] для выпуска 4.0. [ требуется обновление ]

OpenEmbedded , последний крупный пользователь RPM5, перешел обратно на rpm.org из-за проблем в RPM5. [25] [26]

Смотрите также

  • Autopackage — «дополнительная» система управления пакетами
  • Delta ISO — образ ISO, содержащий файлы RPM Package Manager
  • dpkg — система управления пакетами, используемая Debian и его производными
  • Список дистрибутивов Linux на основе RPM
  • pkg-config — запрашивает библиотеки для компиляции программного обеспечения из исходного кода

Ссылки

  1. ^ abc "RPM timeline". rpm.org . Получено 2020-06-25 .
  2. ^ "RPM -- plans, goals, etc". Макс Спевак. Архивировано из оригинала 2012-10-06 . Получено 2011-01-20 .
  3. ^ "RPM.org FAQ". Архивировано из оригинала 2016-11-05 . Получено 2013-08-25 .
  4. ^ ab Бейли, Эдвард С. (2000). "Глава 1: Введение в управление пакетами". Максимальные обороты в минуту: доводя Red Hat Package Manager до предела. Red Hat, Inc. стр. 22–25. ISBN 978-1888172782. Архивировано из оригинала 2016-09-10 . Получено 2013-08-13 .
  5. ^ "po/LINGUAS". GitHub. 2022-04-23. Архивировано из оригинала 2022-04-23 . Получено 2022-04-23 .
  6. ^ ab Бейли, Эдвард С. (2000). "Приложение A: Формат файла RPM". Максимальный RPM: Доводя Red Hat Package Manager до предела. Red Hat, Inc. стр. 325–336. ISBN 978-1888172782. Архивировано из оригинала 2016-04-21 . Получено 2010-11-22 .
  7. ^ "Настройка YUM и создание локальных репозиториев на IBM AIX". 2018-10-24. Архивировано из оригинала 2020-10-03 . Получено 2020-09-03 .
  8. ^ "RPM и Yum имеют большое значение для IBM i. Вот почему". 2018-07-18. Архивировано из оригинала 2019-06-29 . Получено 2020-09-03 .
  9. ^ "Package Manager". Архивировано из оригинала 2016-03-25 . Получено 2020-09-04 .
  10. ^ "RPM Guide-RPM - Design Goals". Архивировано из оригинала 2014-03-21 . Получено 2014-04-14 .
  11. ^ "BOGUS Announce". Архивировано из оригинала 2013-11-04 . Получено 2014-04-14 .
  12. ^ "rpm4 поддерживал сборку rpm без Berkeley DB (–disable-bdb)". Форумы FreeBSD . 2020-01-29. Архивировано из оригинала 2024-02-23 . Получено 2023-09-18 .
  13. ^ "RPM Fusion". rpmfusion.org. Архивировано из оригинала 2019-02-11 . Получено 2010-11-22 .
  14. ^ "Анализ дрейфа валидации RPM" (PDF) . Ассоциация USENIX. Архивировано (PDF) из оригинала 2011-07-28 . Получено 2011-03-15 .
  15. ^ "Zypper - MeeGo wiki". Архивировано из оригинала 2013-09-25 . Получено 2014-04-14 .
  16. ^ "FAQs: About the Projects". Официальный сайт Ark Linux. Архивировано из оригинала 2012-02-11 . Получено 2014-04-14 .
  17. ^ "Безопасное восстановление базы данных RPM". Архивировано из оригинала 2019-08-06 . Получено 2011-11-11 .
  18. ^ "Supplemental Packaging Software". Проект Fedora. Архивировано из оригинала 2016-03-10 . Получено 2011-11-11 .
  19. ^ "Переключить RPM на сжатие zstd". Fedora Project (Wiki). Архивировано из оригинала 2019-06-02 . Получено 2019-06-02 .
  20. ^ "[PATCH] Добавить поддержку lzip". Архивировано из оригинала 2016-03-04 . Получено 2013-10-24 .
  21. ^ "Как упаковать проприетарное программное обеспечение". 10 декабря 2014 г. Архивировано из оригинала 2018-07-02 . Получено 2018-07-02 .
  22. ^ "Mageia 3 Release Notes: Package management". mageia.org . 2013-05-19. Архивировано из оригинала 2014-02-07 . Получено 2014-04-14 .
  23. ^ Боднар, Ладислав и Смит, Джесси (22.11.2010). "DistroWatch Weekly". DistroWatch . Архивировано из оригинала 23.06.2018 . Получено 22.11.2010 .
  24. ^ "Форум: Переход на RPMv4". Архивировано из оригинала 2022-01-14 . Получено 2018-03-03 .
  25. ^ "YP Core - Pyro 2.3". Yocto Project . 2017-05-12. Архивировано из оригинала 2017-12-05 . Получено 2017-12-04 .{{cite web}}: CS1 maint: бот: исходный статус URL неизвестен ( ссылка )()
  26. ^ "[Openembedded-architecture] Изменения, которые вызовет переключение со smart на dnf". Yocto Project . 2017-02-14. Архивировано из оригинала 2018-11-05 . Получено 2018-11-04 .
  • Шредер, Джефф (2008-01-30). "Расширенные строки запросов RPM". www.digitalprognosis.com . Архивировано из оригинала 2011-08-09 . Получено 2018-03-28 .
  • Домашняя страница проекта RPM.org
  • Справочник команд RPM и DPKG Архивировано 28 октября 2016 г. на Wayback Machine
  • История RPM Архивировано 01.02.2013 на archive.today Мэттом Фраем в журнале Red Hat Архивировано 29.09.2007 на Wayback Machine
  • Как создать RPM-пакет
  • Видеоуроки по сборке и исправлению RPM-пакетов
  • Заметки RPM — простой способ создания RPM
  • Упаковка программного обеспечения с помощью RPM. Часть 1: Создание и распространение пакетов
  • Изучаем Linux, 101: Управление пакетами RPM и YUM
Получено с "https://en.wikipedia.org/w/index.php?title=RPM_Package_Manager&oldid=1250215697"