RPM

Материал из База знаний проекта Russian Fedora

Перейти к: навигация, поиск

Содержание

Введение

RPM - это одновременно формат пакетов и программа, для управления ими. Программа позволяет устанавливать, удалять, обновлять программное обеспечение, а также многое другое.

Внимание
rpm - это низкоуровневый менеджер пакетов, используемый при разработке и сборке, а также для решения каких-то специфических задач. Для обычной работы в Fedora следует использовать Yum.

Изначально разработанный компанией 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 имеет название, которое состоит из нескольких частей:

Собранный пакет обычно имеет такой формат названия:

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

Например:

nano-0.98-2.i386.rpm

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

libgnomeuimm2.0-2.0.0-3.src.rpm

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

Команды

Основные команды:

       rpm -i [опции] <пакет>
       rpm -U [опции] <пакет> 
       rpm -e [опции] <пакет> 

Полезные команды:

rpm -qa | grep <имя_пакета> 
rpm -Uhv package.rpm 
rpm -qa --queryformat '%010{SIZE}\t%{NAME}-%{VERSION}-%{RELEASE}\n' — 
rpm -q --queryformat %{DISTRIBUTION} package.rpm  
rpm -q --whatprovides fullpathtofile
 rpm -qa --qf '%{NAME} %{VENDOR}\n' | grep -v RussianFedora
 rpm --setperms <packagename>
rpm -q --changelog <packagename> | less
 rpm -qd <packagename>
 rpm -qdf /path/to/file
rpm -qa release="*rf*"
rpm -qa packager="Johnny*"
rpm2cpio logrotate-1.0-1.i386.rpm |cpio -ivd etc/logrotate.conf
rpm -qa --last
rpm -qa --queryformat '%{SIZE} - %{NAME}\n' | sort -rn | less
rpm -qa --qf '[%{NAME}: %{SIZE}\n]'|sort -rn -k2,2 |head -25

Для владельцев х86_64

Эту простую мелочь довольно легко выполнить, и она будет очнь полезна людям, использующих x86_64 системы. Одна строка в файле ~/.rpmmacros спасет от неприятностей в дальнейшем.


echo "%_query_all_fmt %%{name}-%%{version}-%%{release}.%%{arch}" >> ~/.rpmmacros

Дополнительные опции

Дополнительные опции для установки и обновления

Дополнительные опции для удаления: