RPM (RPM)

Перейти к навигации Перейти к поиску
RPM
Логотип программы RPM
Тип пакетный менеджер[вд] и система управления пакетами
Авторы Марк Юинг[вд][1], Erik W. Troan[вд][1] и Red Hat
Разработчик Panu Matilainen[вд]
Написана на Си
Операционные системы GNU/Linux и Unix-подобная операционная система
Первый выпуск 1997[1]
Последняя версия
Репозиторий github.com/rpm-software-…
Лицензия GNU GPL 2[3] и GNU GPL
Сайт rpm.org (англ.)

RPM (рекурсивный акроним RPM Package Manager — RPM — менеджер пакетов; ранее раскрывался как Red Hat Package Manager — менеджер пакетов Red Hat) — формат пакетов программного обеспечения, а также программа, созданная для управления этими пакетами, используемые в ряде Linux-дистрибутивов; является основным форматом пакетов в LSB.

Изначально разработанный компанией Red Hat для Red Hat Linux, RPM стал использоваться во многих дистрибутивах Linux и был портирован на другие операционные системы: Novell NetWare (с версии 6.5 SP3), IBM AIX (с версии 5) и прочие.

Для хранения файлов в формате RPM используется архивный контейнер cpio, с использованием сжатия утилитой gzip. В более поздних версиях может быть использован архиватор star и сжатие с помощью bzip2, LZMA или XZ. Начиная с версии RPM 5.0 возможно использование архиватора XAR.

База данных RPM

[править | править код]

База данных RPM ведётся в каталоге /var/lib/rpm. Она состоит из одиночной базы данных (packages), в которой хранится вся информация о пакетах, и из множества маленьких баз (__db.001, __db.002 и т. д.), которые служат для индексации и содержат в себе сведения о том, какие файлы менялись и создавались при установке и удалении пакетов.

Если база данных окажется повреждена (что может произойти, если процесс установки или удаления был «убит» или закончилось место на разделе), то её можно восстановить, введя команду rpm --rebuilddb.

Если база была уничтожена — восстановить при помощи rpm -ivh --justdb по списку пакетов, заранее полученному командой rpm -qa | sort. Возможны полуэвристические методы восстановления базы по списку файлов в пакетах репозитория, из которого была установлена система, но такие способы не рекомендуются.

Названия пакетов

[править | править код]

Каждый RPM-пакет имеет название, которое состоит из нескольких частей:

  • название программы;
  • версия программы;
  • номер выпущенной версии (количество раз пересборки программы одной и той же версии). Также часто используется для обозначения дистрибутива, под который собран этот пакет, например: mdv (Mandriva Linux) или fc4 (Fedora Core 4);
  • архитектура, под которую собран пакет (i386, ppc и т. д.).

Собранный пакет обычно имеет следующий формат названия:

<название>-<версия>-<выпуск>.<архитектура>.rpm

Например:

nano-0.98-2.i386.rpm

Иногда в пакет входят исходные коды. Такие пакеты не содержат информации об архитектуре, и её обозначение заменяется на src. Например:

libgnomeuimm2.0-2.0.0-3.src.rpm

Библиотеки чаще всего распространяются в двух отдельных пакетах. Первый содержит собранный код, второй (обычно к нему добавляют -devel) содержит заголовочные и другие файлы, необходимые разработчикам. Важно следить за тем, чтобы версии этих двух пакетов совпадали, иначе библиотеки могут работать некорректно. Пакеты с расширением noarch.rpm не зависят от конкретной архитектуры компьютера, а также содержат графику и тексты, используемые другими программами.

Преимущества и недостатки RPM

[править | править код]

Преимущества RPM над другими средствами управления и установкой программного обеспечения

[править | править код]
  • Лёгкость удаления и обновления программ.
  • Популярность: очень многие программы собираются именно в RPM, поэтому нет необходимости собирать программу из исходных кодов.
  • «Неинтерактивная установка»: легко автоматизировать процесс установки, обновления или удаления.
  • Проверка целостности пакетов с помощью контрольных сумм и GPG-подписей.
  • DeltaRPM, аналог патча, позволяющий обновить установленное программное обеспечение с минимальной затратой трафика.
  • Возможность аккумуляции опыта сборщиков в spec-файле.
  • Относительная компактность spec-файлов за счёт использования макросов.

Основные недостатки

[править | править код]
  • Макропакеты между дистрибутивами могут существенно различаться.
  • Раздробленность и несовместимость различных версий. Так, существуют проекты по разработке RPM 4 (rpm.org), RPM 5 (rpm5.org), а также большое количество патчей для RPM в различных дистрибутивах. В частности, это приводит к:
    • несовместимости spec-файлов между дистрибутивами (spec-файл ALT Linux чаще всего невозможно собрать на Red Hat или SuSE без значительных исправлений);
    • несовместимости названий пакетных зависимостей при попытке установить пакет от другого дистрибутива (например, зависимости в RPM сборки Connectiva создаются по другим правилам, нежели в Mandriva).

Создание пакета

[править | править код]

Для создания пакета нужен spec-файл. Это обычный текстовый файл, который имеет суффикс .spec и содержит в себе название пакета, версию, номер выпуска, инструкции по сборке и установке пакета и список изменений. При наличии spec-файла пакет создаётся командой rpmbuild.

  • rpm -Uhv package.rpm — при наличии пакета package произойдёт его обновление, а при отсутствии — установка.
  • rpm -qa --queryformat '%010{SIZE}\t%{NAME}-%{VERSION}-%{RELEASE}\n' — вывод списка всех установленных пакетов и их размеров.
  • rpm -q --queryformat %{DISTRIBUTION} package.rpm  — название дистрибутива, в котором установлен пакет (опция -q для установленного в систему пакета, опция -qp для неустановленного).
  • rpm -qa | grep xx — список пакетов, где встречается сочетание «xx».
  • rpm -q --whatprovides fullpathtofile — название пакета, которому принадлежит файл fullpathtofile.

Поддерживаемые дистрибутивы Linux

[править | править код]

Ниже приведён список некоторых наиболее известных дистрибутивов, основанных на RPM[источник не указан 504 дня]:

Удобные дополнения к RPM

[править | править код]

Есть несколько программ, которые позволяют автоматически разрешить зависимости при установке пакетов. Вот некоторые наиболее известные:

  • apt-rpm, порт APT, изначально выполненный Conectiva, затем существенно доработанный ALT Linux Team и продолжающий развиваться;
  • apt4rpm, более поздний порт APT чем apt-rpm;
  • smart, доступен для многих дистрибутивов;
  • urpmi, используется в Mandriva Linux;
  • zypper, используется в SuSE;
  • yum, разработан в Yellow Dog Linux, также используется в Fedora, ASP Linux, Red Hat Enterprise Linux (с версии 5.0, и основанных на нём дистрибутивах CentOS, Scientific Linux).

Графические интерфейсы для RPM — PackageKit и Synaptic.

Примечания

[править | править код]