Темы
О RPM
Некоторые полезные команды RPM
Дополнительные материалы
DNF — Новый менеджер зависимостей
YUM — Старый менеджер зависимостей
О RPM
RPM (рекурсивный акроним RPM Package Manager — RPM — менеджер пакетов; ранее раскрывался как Red Hat Package Manager — менеджер пакетов Red Hat) обозначает две сущности: формат пакетов программного обеспечения и программа, созданная для управления этими пакетами. Программа позволяет устанавливать, удалять и обновлять программное обеспечение. RPM является основным форматом пакетов в 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-файлов
- .i386.rpm — Пакет для Linux/Intel
- .src.rpm — Исходный код пакета (никогда не устанавливайте .src.rpm -- потом не удалите!)
- .alpha.rpm — Пакет для Linux/Alpha
- .sparc.rpm — Пакет для Linux/Sparc (Sun)
- .ppc.rpm — Пакет для Linux/PowerPC
- .noarch.rpm — Пакет для всех архитектур (обычно содержит данные -- файлы конфигурации, шрифты и т.д.)