Что такое формат файла RPM?
Файлы с расширением .rpm - это пакеты, используемые в Linux-операционных системах. Изначально формат .rpm был разработан Red Hat для собственного дистрибутива Linux, но сегодня он широко используется в Fedora, RHEL, CentOS, openSUSE, Mageia и многих других дистрибутивах.
Файл .rpm - это программный пакет, содержащий всё необходимое для установки конкретного приложения на совместимую систему Linux. RPM изначально означал Red Hat Package Manager; проект сейчас поддерживается сообществом с открытым исходным кодом на RPM.org, а командная строка называется просто rpm. Формат был разработан для упрощения установки и распространения Linux-приложений, чтобы конечный пользователь не должен был управлять отдельными файлами, необходимыми для установки.
Внутренне .rpm имеет бинарную структуру, состоящую из секции лидера, заголовка подписи GPG, тегированного метаданных заголовка и сжатого .cpio полезной нагрузки, содержащей фактические файлы. Современные пакеты сжимают эту полезную нагрузку с помощью XZ/LZMA; также поддерживаются gzip, bzip2 и Zstd. Пакеты устанавливаются через dnf (Fedora/RHEL) или zypper (openSUSE), которые автоматически разрешают зависимости. Вариант .src.rpm содержит исходный код и инструкции по сборке вместо готовых к запуску бинарных файлов. В Windows или macOS инструменты вроде 7-Zip могут извлечь содержимое .rpm для просмотра, хотя скрипты установки не могут выполняться вне нативной системы Linux на базе RPM. Ближайшим аналогом в системах на базе Debian является формат .deb.
Безопасность и защита
РИСК: MEDIUMПакеты RPM выполняют скрипты установки/удаления от имени root, поэтому вредоносный .rpm может полностью скомпрометировать систему. Устанавливайте RPM только из доверенных поставщиков/репозиториев и сначала проверьте подпись GPG: rpm --checksig package.rpm (и импортируйте ключ поставщика). Дистрибутивы предупреждают перед установкой неподписанных пакетов. В Windows/macOS .rpm не может выполняться, поэтому просмотр там безопасен. Избегайте случайных сайтов 'rpm to exe' или 'rpm opener' - они вводят в заблуждение (RPM не работают в Windows) и часто содержат рекламное ПО.
Детали формата
в двух словахПрограммы, открывающие файлы RPM
rpm2cpio package.rpm | cpio -idmv для извлечения файлов из пакета на macOS для просмотра. sudo alien -i package.rpm конвертирует и устанавливает как .deb. Используйте с осторожностью - предпочтителен нативный .deb. sudo dnf install ./package.rpm - устанавливает пакет и автоматически разрешает зависимости. Предпочтительнее чем сырой rpm. sudo zypper install ./package.rpm - устанавливает с разрешением зависимостей на системах SUSE. sudo rpm -ivh package.rpm для установки, rpm -qlp для списка файлов, rpm --checksig для проверки. Не будет автоматически разрешать зависимости. Технические подробности
глубокая спецификация| MIME-тип | application/x-rpm (также принимается: application/x-redhat-package-manager) |
| Магические байты файла | ED AB EE DB по смещению 0 - сигнатура лидера RPM "edabeedb" |
| Внутренняя структура | Секция лидера → заголовок подписи GPG → тегированный метаданных заголовок → сжатая полезная нагрузка cpio |
| Сжатие полезной нагрузки | XZ/LZMA (современный стандарт по умолчанию на Fedora/RHEL), gzip, bzip2 или Zstd; выбирается при сборке пакета |
| Порядок байтов заголовка | Big-endian; каждая запись тега хранит 4-байтовый тип, 4-байтовый счётчик и смещение в хранилище данных |
| Подпись пакета | Подпись GPG встроена в заголовок подписи; проверяется с помощью `rpm --checksig` |
| Метаданные зависимостей | Теги Requires, Provides, Conflicts и Obsoletes хранятся в основном заголовке для автоматического разрешения |
| Скрипты установки | Скрипты pre- и post-установки (%pre/%post) и pre- и post-удаления (%preun/%postun) встроены в пакет |
| Целостность по файлам | Хэши SHA-256 для каждого файла хранятся в заголовке (MD5 в старых пакетах); проверяются после установки |
| Версия формата пакета | v4 (текущая, инструментальная цепочка RPM 4.x); формат RPM v6 в активной разработке на RPM.org |
| Связанные менеджеры пакетов | `dnf` (Fedora, RHEL, CentOS Stream), `zypper` (openSUSE/SUSE), `rpm` (низкоуровневая команда) |
| Вариант исходного пакета | .src.rpm (SRPM) содержит исходный архив и рецепт сборки .spec вместо скомпилированных бинарных файлов |
| Поддерживаемые платформы установки | Дистрибутивы Linux на базе RPM: Red Hat, Fedora, RHEL, CentOS, openSUSE, Rocky Linux, AlmaLinux, Mageia |
| Типичный размер файла | Сотни КБ (малые утилиты) до нескольких сотен МБ (большие приложения, инструментальные цепочки разработки или прошивка) |
| Перемещаемость | Пакеты могут помечаться как перемещаемые, что позволяет установить их в пользовательский префиксный путь |
| Выпущен | 1997 (RPM, with Red Hat Linux 5.0; rpm-software-management is the current upstream) |
| Последняя версия | RPM v4 package format (RPM 4.20.x, 2024); RPM v6 format in development |
| Открыть стандартное | Да · без роялти |
| Спецификация | rpm-software-management.github.io |
Конвертации RPM
Вопросы и ответы сообщества
спрошено пользователямиВопросов пока нет - станьте первым, кто спросит о файлах RPM.
Часто задаваемые вопросы
Как установить файл .rpm в Linux?
sudo dnf install ./file.rpm; на openSUSE: sudo zypper install ./file.rpm. Они автоматически разрешают зависимости. Низкоуровневая команда sudo rpm -ivh file.rpm тоже работает, но не загрузит недостающие зависимости.Как открыть файл .rpm в Windows?
Как установить .rpm в Ubuntu/Debian?
sudo alien -i file.rpm, но безопаснее поискать нативный .deb, Flatpak или AppImage той же программы.В чём разница между RPM и DEB?
Как посмотреть содержимое .rpm без установки?
rpm -qlp file.rpm перечисляет его файлы, а rpm -qip file.rpm показывает информацию; или выполните rpm2cpio file.rpm | cpio -idmv для извлечения. В Windows откройте через 7-Zip.Почему при установке RPM возникает ошибка 'failed dependencies' (неудачные зависимости)?
dnf install ./file.rpm (или zypper) вместо сырой команды rpm, чтобы менеджер пакетов подтянул зависимости из ваших репозиториев.