RPM — формат пакетов Linux¶
RPM (англ. RPM Package Manager, изначально Red Hat Package Manager) — система управления пакетами и формат пакетных файлов, разработанная компанией Red Hat для дистрибутивов Linux. Основные функции RPM — установка, обновление, удаление, проверка и извлечение программного обеспечения из пакетов с расширением .rpm. На сегодняшний день RPM является стандартом де-факто для таких дистрибутивов, как Fedora, RHEL, CentOS, openSUSE, Mageia, ALT Linux и Альт Рабочая станция.
¶История
Разработка RPM началась в 1997 году в Red Hat. До этого компания использовала для установки программ собственные скрипты на языке Tcl, которые, по оценкам разработчиков, были ненадёжны и плохо масштабировались. Первая версия RPM была выпущена в составе дистрибутива Red Hat Linux 5.0 (декабрь 1997 года). В 1999 году исходный код RPM был открыт, и проект размещён на сайте rpm.org.
С 2003 года проект развивается как независимое от Red Hat открытое сообщество, хотя Red Hat остаётся одним из основных контрибьюторов. В 2007 году вышла версия RPM 4.0, сопровождавшаяся переходом на формат хранения пакетов BDB (Berkeley DB) для базы данных установленных пакетов. Начиная с версии 4.11 (2012) поддерживается SQLite в качестве альтернативного бэкенда, а в 2021 году в Fedora 33 база данных RPM была полностью переведена на SQLite.
¶Устройство пакета
Файл .rpm — это бинарный архив, содержащий три компонента:
- Заголовок пакета — метаданные: имя, версия, архитектура, зависимости, список файлов, размеры, контрольные суммы.
- Полезная нагрузка (payload) — сжатые файлы программы, обычно сжатые алгоритмом xz или zstd.
- Сигнатура — криптографическая подпись GPG, подтверждающая подлинность пакета.
Стандартная строка имени пакета имеет вид name-version-release.arch.rpm, например nginx-1.24.0-1.el9.x86_64.rpm, где el9 обозначает целевой дистрибутив (Enterprise Linux 9), а x86_64 — архитектуру.
¶Основные команды
Управление пакетами через RPM осуществляется утилитой rpm:
| Команда | Назначение |
|---|---|
rpm -i package.rpm | Установка пакета |
rpm -U package.rpm | Обновление (установка более новой версии) |
rpm -e name | Удаление пакета |
rpm -q name | Проверка, установлен ли пакет |
rpm -qa | Список всех установленных пакетов |
rpm -qi name | Подробная информация о пакете |
rpm -ql name | Список файлов, входящих в пакет |
rpm -V name | Проверка целостности файлов пакета |
rpm -qp package.rpm | Информация о неустановленном пакете |
rpm --import key | Импорт GPG-ключа |
Утилита rpm работает напрямую с пакетными файлами и не разрешает зависимости автоматически. Для автоматического разрешения зависимостей поверх RPM работают менеджеры пакетов высокого уровня.
¶Менеджеры пакетов на базе RPM
| Менеджер | Дистрибутивы |
|---|---|
| DNF | Fedora, RHEL 8+, CentOS Stream, Rocky Linux, AlmaLinux |
| YUM | RHEL 5–7, CentOS 5–7 |
| Zypper | openSUSE, SUSE Linux Enterprise |
| APT (с rpm-бэкендом) | ALT Linux, Альт Рабочая станция |
| urpmi | Mageia |
DNF (Dandified YUM) пришёл на смену YUM в 2015 году и стал основным менеджером пакетов Fedora и RHEL 8. Он использует ту же базу RPM, но добавляет автоматическое разрешение зависимостей, репозитории, группы пакетов и транзакционные обновления.
¶Специфика RPM
В отличие от Debian-пакетов (.deb), в RPM по умолчанию не разделяются пакеты разработки и рантайма — заголовочные файлы и библиотеки для компиляции могут поставляться в одном пакете с программой. Тем не менее существуют -devel-подпакеты, формируемые автоматически сборочными системами.
Формат SPEC-файла (.spec) описывает процесс сборки пакета из исходного кода: зависимости, патчи, инструкции по компиляции, список файлов, пост- и пре-скрипты установки. Сборка выполняется утилитой rpmbuild.
¶Значение
RPM стал одним из двух основных форматов пакетов в экосистеме Linux (наряду с Debian-форматом .deb). По данным статистики дистрибутивов, семейство RPM-based Linux занимает значительную долю серверного и корпоративного рынка, включая крупнейшие облачные платформы. Формат RPM поддерживается также в системах, не основанных на Linux, — например, в Oracle Solaris и некоторых сборках FreeBSD.
¶Источники
- Официальный сайт проекта RPM — rpm.org
- Документация Fedora Project по управлению пакетами
- Руководство Red Hat Enterprise Linux System Administrator's Guide
- Книга «Maximum RPM» (Erik Troan, Red Hat Press, 2000)
