RPM. Софт и инфа

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

Изначально разрабатываясь компанией Red Hat для Red Hat Linux, RPM стал использоваться во многих дистрибутивах GNU/Linux и был портирован на другие операционные системы: Novell NetWare (с версии 6.5 SP3), IBM AIX (с версии 5) и прочиеСодержание [убрать]
1 База данных RPM
2 Названия пакетов
3 Преимущества и недостатки RPM
3.1 Преимущества RPM над другими средствами управления и установкой программного обеспечения:
3.2 Основные недостатки:
4 Создание пакета
5 Примеры
6 Поддерживаемые дистрибутивы GNU/Linux
7 Удобные дополнения к RPM
8 Ссылки

База данных 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.

Поддерживаемые дистрибутивы GNU/Linux
Ниже приведён список некоторых наиболее известных дистрибутивов, основанных на RPM:
ALT Linux
ASP Linux
CentOS
Fedora Core
Mandriva Linux
Red Hat Enterprise Linux
SUSE Linux

(Это неполный список. Подробности смотрите в списке дистрибутивов 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