RPM Package Manager ( RPM ) (первоначально Red Hat Package Manager , теперь рекурсивная аббревиатура ) - это бесплатная система управления пакетами с открытым исходным кодом . [5] Название RPM относится к .rpm
формату файла и самой программе диспетчера пакетов. RPM был предназначен в первую очередь для дистрибутивов Linux ; формат файла является базовым форматом пакета Linux Standard Base .
Автор (ы) оригинала | Эрик Троан, Марк Юинг , [1] Red Hat |
---|---|
Разработчики) | Сообщество и Red Hat [2] [3] |
Первый выпуск | 1997 [1] |
Стабильный выпуск | 4.16.1.2 / 16 декабря 2020 г . |
Предварительный выпуск | 4.16.0 RC1 / 31 августа 2020 г . |
Репозиторий | |
Написано в | C , Perl [4] |
Операционная система | Linux , Unix-подобный |
Тип | Система управления пакетами |
Лицензия | GPL |
Веб-сайт | rpm |
Хотя он был создан для использования в Red Hat Linux , сейчас RPM используется во многих дистрибутивах Linux, таких как Fedora , CentOS , OpenSUSE , OpenMandriva и Oracle Linux . Он также был перенесен на некоторые другие операционные системы , такие как Novell NetWare ( начиная с версии 6.5 SP3), IBM AIX ( начиная с версии 4), [6] IBM i , [7] и ArcaOS . [8]
Пакет RPM может содержать произвольный набор файлов. Большинство файлов RPM - это «двоичные RPM» (или BRPM), содержащие скомпилированную версию некоторого программного обеспечения. Существуют также «исходные пакеты RPM» (или SRPM), содержащие исходный код, используемый для создания двоичного пакета. У них есть соответствующий тег в заголовке файла, который отличает их от обычных (B) RPM, поэтому при установке они извлекаются в / usr / src. SRPM обычно имеют расширение файла «.src.rpm» (.spm в файловых системах ограничено 3 символами расширения, например, старая DOS FAT ).
История
RPM первоначально была написана в 1997 году Эрик Troan и Марк Юинг, [1] на основе pms
, rpp
и pm
опыт.
pm
был написан Риком Фэйтом и Дугом Хоффманом в мае 1995 года для Red Hat Software, на его дизайн и реализацию сильно повлияла pms
система управления пакетами Фейт и Кевина Мартина осенью 1993 года для Bogus Linux Distribution. pm
сохраняет парадигму « Безупречные исходники + патчи» pms
, добавляя при этом функции и устраняя произвольные ограничения, присутствующие в реализации. pm
обеспечивает значительно расширенную поддержку базы данных для отслеживания и проверки установленных пакетов [4] [9] [10]
Функции
Для системного администратора, выполняющего установку и обслуживание программного обеспечения, использование управления пакетами вместо ручного создания имеет такие преимущества, как простота, согласованность и возможность автоматизации и неинтерактивности этих процессов. rpm использует Berkeley DB в качестве серверной базы данных, хотя с 4.15 в 2019 году он поддерживает создание пакетов rpm без Berkeley DB ( –disable-bdb
).
Особенности RPM включают:
- Пакеты RPM могут быть криптографически проверены с помощью GPG и MD5.
- Архив Оригинальный источник (ы) (например
.tar.gz
,.tar.bz2
), включены в SRPMS, что делает проверки проще - Дельта-обновление : PatchRPM и DeltaRPM, эквивалент RPM файла исправления , могут постепенно обновлять установленное RPM программное обеспечение.
- Автоматическая оценка зависимостей во время сборки.
Местные операции
Пакеты могут поступать из определенного дистрибутива (например, Red Hat Enterprise Linux ) или создаваться для него другими сторонами (например, RPM Fusion для Fedora). [11] Циклические зависимости между взаимозависимыми RPM (так называемый « ад зависимостей ») могут быть проблематичными; [12] в таких случаях одна команда установки должна указать все соответствующие пакеты.
Репозитории
RPM-пакеты часто собираются централизованно в одном или нескольких репозиториях в Интернете. У сайта часто есть свои собственные репозитории RPM, которые могут действовать как локальные зеркала таких интернет-репозиториев или быть локально поддерживаемыми коллекциями полезных RPM.
Передние концы
Несколько внешних интерфейсов для RPM упрощают процесс получения и установки RPM из репозиториев и помогают в разрешении их зависимостей. Это включает:
- yum используется в Fedora , CentOS 5 и выше, Red Hat Enterprise Linux 5 и выше, Scientific Linux , Yellow Dog Linux и Oracle Linux
- DNF , представленный в Fedora 18 (по умолчанию с 22 ), Red Hat Enterprise Linux 8 и CentOS Linux 8.
- up2date используется в Red Hat Enterprise Linux , CentOS 3 и 4 и Oracle Linux
- Zypper используется в Mer (и, следовательно, в Sailfish OS), MeeGo , [13] openSUSE и SUSE Linux Enterprise.
- urpmi используется в Mandriva Linux , ROSA Linux и Mageia
- apt-rpm , порт Debian Advanced Packaging Tool (APT), используемый в Ark Linux, [14] PCLinuxOS и ALT Linux.
- Smart Package Manager , используемый в Unity Linux, доступен для многих дистрибутивов, включая Fedora .
rpmquery
, утилита командной строки, доступная (например) в Red Hat Enterprise Linux
База данных локальной установки RPM
За кулисами диспетчера пакетов работает база данных RPM, хранящаяся в /var/lib/rpm
. В качестве серверной части он использует Berkeley DB . Он состоит из единой базы данных ( Packages
), содержащей всю метаинформацию об установленных RPM. Несколько баз данных создаются для целей индексации, репликации данных для ускорения запросов. База данных используется для отслеживания всех файлов, которые были изменены и созданы, когда пользователь (с помощью RPM) устанавливает пакет, что позволяет пользователю (через RPM) отменить изменения и удалить пакет позже. Если база данных повреждена (что возможно, если клиент RPM убит ), индексные базы данных можно воссоздать с помощью rpm --rebuilddb
команды. [15]
Описание
Хотя формат RPM одинаков для разных дистрибутивов Linux , подробные соглашения и рекомендации могут отличаться в зависимости от них.
Имя пакета и метка
RPM доставляется в виде одного файла, обычно с именем файла в формате:
для пакетов с исходным кодом или- - .src.rpm
для двоичных файлов.- - . .rpm
Например, в пакете имя файла libgnomeuimm-2.0-2.0.0_3.i386.rpm
, то
есть libgnomeuimm
, то
есть 2.0
, то
есть 2.0.0_3
, и
есть i386
. Связанный исходный пакет будет называтьсяlibgnomeuimm-2.0-2.0.0_3.src.rpm
RPM с noarch.rpm
расширением не зависят от конкретной архитектуры процессора. Например, эти RPM могут содержать графику и текст для использования другими программами. Они также могут содержать сценарии оболочки или программы, написанные на других интерпретируемых языках программирования, таких как Python .
Содержимое RPM также включает этикетку пакета , которая содержит следующую информацию:
- название программного обеспечения
- версии программного обеспечения (версия взяты из оригинального восходящего источника программного обеспечения)
- выпуск пакета (количество раз, когда пакет перестраивался с использованием одной и той же версии программного обеспечения). Это поле также часто используется для указания конкретного дистрибутива, для которого предназначен пакет, путем добавления таких строк, как «mdv» (ранее «mdk») ( Mandriva Linux ), «mga» ( Mageia ), «fc4» ( Fedora Core 4). , «rhl9» (Red Hat Linux 9), «suse100» ( SUSE Linux 10.0) и т. д.
- архитектура, для которой был собран пакет (i386, i686, x86_64, ppc и т. д.)
Поля метки пакета не обязательно должны совпадать с именем файла.
Упаковка библиотеки
Библиотеки распределены в двух отдельных пакетах для каждой версии. Один содержит предварительно скомпилированный код для использования во время выполнения, а второй содержит связанные файлы разработки, такие как заголовки и т. Д. В поле имени этих пакетов добавлено «-devel». Системный администратор должен убедиться, что версии двоичного пакета и пакета разработки совпадают.
Двоичный формат
Формат двоичный и состоит из четырех разделов: [5]
- Лид, который идентифицирует файл как файл RPM и содержит некоторые устаревшие заголовки.
- Подпись, которая может использоваться для обеспечения целостности и / или подлинности.
- Заголовок, содержащий метаданные, включая имя пакета, версию, архитектуру, список файлов и т. Д.
- Файловый архив ( полезная нагрузка ), обычно в формате cpio , сжатый с помощью gzip .
rpm2cpio
Инструмент позволяет извлечение файла CPIO без необходимости установки пакета RPM. [16]- Стандартная база Linux требует использования gzip, но пакеты Fedora 30 сжаты xz, а пакеты Fedora 31 могут быть сжаты zstd. [17] Последние версии RPM также могут использовать сжатие bzip2 , lzip , [18] или lzma .
- Формат RPM 5.0 поддерживает использование xar для архивирования.
Файл SPEC
«Рецепт» для создания пакета RPM - это файл спецификации. Файлы спецификации заканчиваются суффиксом «.spec» и содержат имя пакета, версию, номер редакции RPM, шаги по сборке, установке и очистке пакета, а также журнал изменений. При желании из одного файла спецификации RPM можно собрать несколько пакетов. Пакеты RPM создаются из файлов спецификации RPM с помощью инструмента rpmbuild.
Файлы спецификации обычно распространяются в файлах SRPM, которые содержат файл спецификации, упакованный вместе с исходным кодом.
SRPM
Типичный RPM - это предварительно скомпилированное программное обеспечение, готовое к прямой установке. Соответствующий исходный код также может распространяться. Это делается в SRPM, который также включает файл «SPEC», описывающий программное обеспечение и способ его создания. SRPM также позволяет пользователю компилировать и, возможно, изменять сам код.
Программный пакет может содержать только скрипты, не зависящие от платформы. В таком случае разработчик может предоставить только SRPM, который по-прежнему является устанавливаемым RPM.
NOSRC
Это специальная версия SRPM. Он содержит файл "SPEC" и необязательно исправления, но не включает исходные коды (обычно из-за лицензии). [19]
Вилки
По состоянию на июнь 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 , Red Hat Enterprise Linux и производные , openSUSE , SUSE Linux Enterprise , Unity Linux , Mageia , [20] 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 году [21] ), а также проектом OpenPKG, который предоставляет пакеты для других распространенные UNIX-платформы.
OpenMandriva Lx собирается вернуться к rpm.org [22] для выпуска 4.0. [ требуется обновление ]
OpenEmbedded , последний крупный пользователь RPM5, снова переключился на rpm.org из-за проблем в RPM5. [23] [24]
Смотрите также
- Autopackage - «дополнительная» система управления пакетами.
- Delta ISO - образ ISO, содержащий файлы диспетчера пакетов RPM.
- dpkg - система управления пакетами, используемая Debian и его производными
- Список дистрибутивов Linux на основе RPM
- pkg-config - запрашивает библиотеки для компиляции программного обеспечения из исходного кода
Рекомендации
- ^ «RPM - планы, цели и т . Д.» . Макс Спевак . Проверено 20 января 2011 .
- ^ «RPM.org FAQ» . Архивировано из оригинала на 2016-11-05 . Проверено 25 августа 2013 .
- ^ а б Бейли, Эдвард С. (2000). «Глава 1: Введение в управление пакетами». Максимальный RPM: использование диспетчера пакетов Red Hat до предела . Red Hat, Inc., стр. 22–25. ISBN 978-1888172782. Архивировано из оригинала на 2016-09-10 . Проверено 13 августа 2013 .
- ^ а б Бейли, Эдвард С. (2000). «Приложение A: Формат файла RPM». Максимальный RPM: использование диспетчера пакетов Red Hat до предела . Red Hat, Inc., стр. 325–336. ISBN 978-1888172782. Архивировано из оригинала на 2016-04-21 . Проверено 22 ноября 2010 .
- ^ «Настройка YUM и создание локальных репозиториев в IBM AIX» . 2018-10-24.
- ^ «RPM и Yum имеют большое значение для IBM i. И вот почему» . 2018-07-18.
- ^ «Менеджер пакетов» . Проверено 4 сентября 2020 .
- ^ «Руководство RPM-RPM - Цели проектирования» . Проверено 14 апреля 2014 .
- ^ «Фальшивое объявление» . Проверено 14 апреля 2014 .
- ^ «RPM Fusion» . rpmfusion.org . Проверено 22 ноября 2010 .
- ^ «Анализ дрейфа проверки скорости вращения» (PDF) . Ассоциация USENIX . Проверено 15 марта 2011 .
- ^ «Zypper - MeeGo wiki» . Архивировано из оригинала на 2013-09-25 . Проверено 14 апреля 2014 .
- ^ «Часто задаваемые вопросы: о проектах» . Официальный сайт Ark Linux. Архивировано из оригинала на 2012-02-11 . Проверено 14 апреля 2014 .
- ^ «Безопасное восстановление базы данных RPM» . Проверено 11 ноября 2011 .
- ^ «Дополнительное программное обеспечение для упаковки» . Проект Fedora . Проверено 11 ноября 2011 .
- ^ "Переключить обороты на сжатие zstd" . Проект Fedora (Wiki) . Проверено 2 июня 2019 .
- ^ «[ПАТЧ] Добавить поддержку lzip» . Архивировано из оригинала на 2016-03-04 . Проверено 24 октября 2013 .
- ^ «Как упаковать проприетарное программное обеспечение» . Проверено 2 июля 2018 .
- ^ «Примечания к выпуску Mageia 3: управление пакетами» . mageia.org . 2013-05-19 . Проверено 14 апреля 2014 .
- ^ Боднар, Ладислав и Смит, Джесси (22 ноября 2010 г.). "DistroWatch Weekly" . DistroWatch . Проверено 22 ноября 2010 .
- ^ «Форум: Переход на RPMv4» . Проверено 3 марта 2018 .
- ^ «YP Core - Pyro 2.3» . Yocto Project . 2017-05-12. Архивировано 05 декабря 2017 года . Проверено 4 декабря 2017 .CS1 maint: bot: исходный статус URL неизвестен ( ссылка )()
- ^ «[Openembedded-architecture] Изменения, которые вызовет переключение с smart на dnf» . Yocto Project . 2017-02-14 . Проверено 4 ноября 2018 .
- Шредер, Джефф (30 января 2008 г.). «Расширенные строки запроса RPM» . www.digitalprognosis.com . Архивировано из оригинала на 2011-08-09 . Проверено 28 марта 2018 .
Внешние ссылки
- Домашняя страница проекта RPM.org
- Справочник команд RPM и DPKG
- История RPM Мэтта Фрая в журнале Red Hat, заархивированная 29 сентября 2007 г., находится на Wayback Machine.
- Как создать пакет RPM
- Видеоуроки по созданию и установке пакетов RPM
- Примечания к RPM - простой способ создания RPM
- Пакетирование программного обеспечения с помощью RPM, часть 1: Сборка и распространение пакетов
- Изучите Linux, 101: управление пакетами RPM и YUM