Открыть сервисСервис

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

МенеджерДистрибутивы
DNFFedora, RHEL 8+, CentOS Stream, Rocky Linux, AlmaLinux
YUMRHEL 5–7, CentOS 5–7
ZypperopenSUSE, SUSE Linux Enterprise
APT (с rpm-бэкендом)ALT Linux, Альт Рабочая станция
urpmiMageia

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)
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru