RPM

Материал из свободной русской энциклопедии «Традиция»
Перейти к: навигация, поиск
Файл:RPM Logo.jpg
Логотип RPM

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

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

База данных 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, аналог patch, позволяющий обновить установленное программное обеспечение с минимальной затратой трафика
  • Возможность аккумуляции опыта сборщиков в spec-файле
  • Относительная компактность spec-файлов за счёт использования макросов

Основные недостатки:[править]

  • Незавершённая и устаревшая документация (или англоязычный драфт)
  • Сборка пакета из исходных кодов обычно требует больших знаний
  • Макропакеты между дистрибутивами могут существенно различаться
  • Иногда происходит несовместимость версий пакетов при поиске зависимостей (чаще всего это происходит тогда, когда происходит попытка установить пакет от другого дистрибутива, например от Fedora Core к Mandriva)
  • Невозможно распаковать обычным ПО (по сравнению с deb (Debian) или tgz (Slackware). Несмотря на то, что есть скрипт rpm2cpio.sh[1], он распаковывает пакет с помощью od, expr, dd и gunzip, а не одной командой)

Создание пакета[править]

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

Очень краткий курс молодого бойца можно найти здесь; из англоязычных руководств можно рекомендовать хоть и старое, но во многом (особенно по части макросов) актуальное Maximum RPM и черновик его обновлённой версии - RPM Guide.

Примеры[править]

  • rpm -Uhv package.rpm — При наличии пакета package произойдёт его обновление, при отсутствии — установка.
  • rpm -qa --queryformat '%010{SIZE}\t%{NAME}-%{VERSION}-%{RELEASE}\n' — вывод списка всех установленных пакетов и их размеров

Поддерживаемые дистрибутивы GNU/Linux[править]

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

(Это неполный список. Подробности смотрите в списке дистрибутивов GNU/Linux)

Удобные дополнения к RPM[править]

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

  • apt-rpm, порт APT, изначально выполненный Conectiva, затем существенно доработанный ALT Linux и продолжающий развиваться
  • apt4rpm, порт APT Debian. Рекомендуется для использовании с некоторыми репозиториями Fedora Core. Почти не разрабатывается, но расходует меньше ресурсов процессора, чем те средства, которые перечислены выше. Более поздний проект, нежели apt-rpm.
  • smart, доступен для многих дистрибутивов
  • urpmi, используется в Mandriva Linux
  • YaST, используется в SuSE
  • yum, разработан в Yellow Dog Linux, также используется в Fedora Core и ASP Linux

Ссылки[править]

Portal:Свободное программное обеспечение
Русская энциклопедия «Традиция»
Портал «Свободное программное обеспечение»