Оригинальный автор(ы) | Эрик Троан, Марк Юинг , [1] Red Hat |
---|---|
Разработчик(и) | Сообщество и Red Hat [2] [3] |
Первоначальный выпуск | 1997 ( 1997 ) | [1]
Стабильный релиз | 4.20 / 7 октября 2024 г. ( 2024-10-07 ) |
Репозиторий |
|
Написано в | С , 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 включают в себя:
.tar.gz
, .tar.bz2
) включены в SRPM, что упрощает проверкуПакеты могут поступать из определенного дистрибутива (например, Red Hat Enterprise Linux ) или быть собраны для него другими сторонами (например, RPM Fusion для Fedora Linux). [13] Циклические зависимости между взаимозависимыми RPM (так называемый « ад зависимостей ») могут быть проблематичными; [14] в таких случаях одной команде установки необходимо указать все соответствующие пакеты.
RPM часто собираются централизованно в одном или нескольких репозиториях в Интернете. Сайт часто имеет свои собственные репозитории RPM, которые могут либо действовать как локальные зеркала таких интернет-репозиториев, либо быть локально поддерживаемыми коллекциями полезных RPM.
Несколько интерфейсов RPM облегчают процесс получения и установки RPM из репозиториев и помогают разрешить их зависимости. К ним относятся:
rpmquery
, утилита командной строки, доступная, например, в Red Hat Enterprise Linuxlibzypp
, для ОС SailfishРаботая за кулисами менеджера пакетов, база данных 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>
i386
libgnomeuimm-2.0-2.0.0_3.src.rpm
RPM с noarch.rpm
расширением не зависят от конкретной архитектуры ЦП. Например, эти RPM могут содержать графику и текст для использования другими программами. Они также могут содержать скрипты оболочки или программы, написанные на других интерпретируемых языках программирования, таких как Python .
В комплект RPM также входит этикетка упаковки , на которой указана следующая информация:
Поля метки пакета не обязательно должны совпадать с именем файла.
Библиотеки распространяются в двух отдельных пакетах для каждой версии. Один содержит предварительно скомпилированный код для использования во время выполнения, а второй содержит связанные файлы разработки, такие как заголовки и т. д. Эти пакеты имеют "-devel" в поле имени. Системный администратор должен убедиться, что версии двоичных пакетов и пакетов разработки совпадают.
Формат является двоичным и состоит из четырех разделов: [6]
rpm2cpio
Инструмент позволяет извлекать файл cpio без необходимости установки пакета RPM. [18]«Рецепт» создания пакета 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 состоялась в июле 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 с 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]
{{cite web}}
: CS1 maint: бот: исходный статус URL неизвестен ( ссылка )()