rpm(8)

НАЗВАНИЕ
rpm - Менеджер пакетов от Red Hat

УПОТРЕБЛЕНИЕ
rpm [опции]

ОПИСАНИЕ
rpm - это мощный менеджер пакетов, который может быть использован для сборки, установки, инспекции, проверки, обновления и удаления отдельных программных пакетов. Пакет состоит из набора файлов и информации о пакете, включающей название, версию и описание пакета. Может быть выбран один из следующих основных режимов: Инициализация базы данных, Перестроение базы данных, Сборка пакетов, Рекомпиляция пакетов, Сборка пакетов из tar-архивов, Запрос, Показ полей запроса, Установка, Освежение, Удаление, Верификация, Проверка подписи, Повторная подпись, Добавление подписи, Установка владельцев и групп и Показ конфигурации. Обслуживание базы данных:
rpm -i [--initdb]
rpm -i [--rebuilddb] Сборка:
rpm [-b|t] [spec-файл]+
rpm [--rebuild] [sourcerpm]+
rpm [--tarbuild] [tarredsource]+
Запрос:
rpm [--query] [опции-запроса]
rpm [--querytags]
Обслуживание установленных пакетов:
rpm [--install] [опции-установки] [файл-пакета]+
rpm [--freshen|-F] [опции-установки] [файл-пакета]+
rpm [--uninstall|-e] [опции-удаления] [пакет]+
rpm [--verify|-V] [опции-верификации] [пакет]+
Подписи:
rpm [--verify|-V] [опции-верификации] [пакет]+
rpm [--resign] [файл-пакета]+
rpm [--addsign] [файл-пакета]+
Разное:
rpm [--showrc]
rpm [--setperms] [пакет]+
rpm [--setgids] [пакет]+

ОБЩИЕ ОПЦИИ
Эти опции могут быть использованы во всех режимах работы.

-vv Выводить много отладочной информации.

--quiet
    Выводить как можно меньше сообщений - как правило, выводятся только сообщения об ошибках.

--help
    Вывести более детальную, чем обычно, справку об использовании rpm.

--version
    Вывести одну строку, содержащую номер версии используемого rpm.

--rcfile <список-файлов>
    Каждый из файлов из разделенного двоеточиями <списка-файлов> последовательно читается rpm на предмет конфигурационной информации. По умолчанию <список-файлов> выглядит как /usr/lib/rpm/rpmrc:/etc/rpmrc:~/.rpmrc. В этом списке обязана существовать только первая строка; все тильды будут заменены значением $HOME.

--root <каталог>
    Использовать для всех операций файловую систему с корнем в <каталог>. Обратите внимание, что это значит, что база данных также будет читаться и модифицироваться под <каталог> и все pre и post скрипты будут исполняться после chroot() в <каталог>.

--dbpath <путь>
    Использовать базу данных RPM в <путь>.

--justdb
    Обновить только базу данных, не файловую систему.

--ftpproxy <host>, --httpproxy <host>
    Использовать <host> как FTP или HTTP прокси. См. ОПЦИИ FTP/HTTP.

--ftpport <порт>, --httpport <порт>
    Использовать <порт> как FTP или HTTP порт прокси-сервера. См. ОПЦИИ FTP/HTTP.

--pipe <cmd>
    Перенаправляет вывод rpm на вход команды <cmd>.

ОПЦИИ УСТАНОВКИ И ОБНОВЛЕНИЯ
Общая форма команды установки rpm выглядит так:

    rpm -i [опции-установки] <файл_пакета>+

Такая команда устанавливает новые пакеты. Общая форма команды обновления rpm выглядит так:

    rpm -U [опции-установки] <файл_пакета>+

Такая команда производит обновление установленных пакетов. Работа этой команды полностью аналогична работе команды установки за исключением того, что все остальные версии пакетов удаляются из системы.

    rpm [-F|--freshen] [опции-установки] <файл_пакета>+

Такая команда производит обновление пакетов, но только если в системе существуют более ранние версии этих пакетов. Допускается задание <файл_пакета> в виде ftp или http style URL. В этом случае перед установкой файл будет получен с cервера, указанного в URL. См. ОПЦИИ FTP/HTTP на предмет информации о встроенной поддержке FTP/HTTP.

--force
    То же, что и комбинация --replacepkgs, --replacefiles и --oldpackage.

-h, --hash
    Выводить 50 знаков "#" по мере распаковки архива с пакетом. Используется с -v для красивости.

--oldpackage
    Позволяет заменить новый пакет на более старый при обновлении (откатиться назад).

--percent
    Выводить процент готовности по мере распаковки архива с пакетом. Задумано для облегчения использования rpm из других утилит.

--replacefiles
    Устанавливать пакеты даже если они перепишут файлы из других, уже установленных пакетов.

--replacepkgs
    Устанавливать пакеты даже если некоторые из них уже установлены в системе.

--allfiles
    Устанавливать или обновлять все файлы, определенные как "missingok", даже если они уже существуют.

--nodeps
    Не проверять зависимости перед установкой или обновлением пакета.

--noscripts
    Не исполнять пре- и постустановочных скриптов.

--notriggers
    Не исполнять триггер-скриптов, взведенных на установку данного пакета.

--ignoresize
    Не проверять файловую систему на наличие достаточного свободного места перед установкой этого пакета.

--excludepath <путь>
    Не устанавливать файлы, чьи имена начинаются с <путь>.

--excludedocs
    Не устанавливать никаких файлов, отмеченных как файлы документации (включает мануалы и документы texinfo).

--includedocs
    Устанавливать файлы документации. Это поведение по умолчанию.

--test
    Не устанавливать пакет, просто проверить возможность установки и сообщить о возможных проблемах.

--ignorearch
    Произвести установку или обновление даже если архитектуры бинарного RPM и машины не совпадают.

--ignoreos
    Произвести установку или обновление даже если операционные системы бинарного RPM и машины не совпадают.

--prefix <путь>
    Установить префикс установки в <путь> для переместимых пакетов.

--relocate <старый_путь>=<новый_путь>
    Для переместимых пакетов: преобразовывает файлы, которые должны были бы быть установлены в <старый_путь> в <новый_путь>.

--badreloc
    Для использования вместе с --relocate. Производит перемещение даже если пакет не переместимый.

--noorder
    Не переупорядочивать список устанавливаемых пакетов. Обычно список переупорядочивается для удовлетворения зависимостей.

ОПЦИИ ЗАПРОСА
Общая форма команды запроса(инспекции) rpm выглядит так:

    rpm -q [опции-запроса]

Можно задать формат, в котором будут выводиться информация о пакете. Для этого используется опция --queryformat с последующей строкой формата. Форматы запроса представляют собой модифицированную версию стандартного форматирования printf(3). Формат состоит из статических строк (которые могут включать стандартные escape-последовательности C для переводов строки, табуляций и других специальных символов) и форматов по типу используемых в printf(3). Так как rpm уже знает типы данных, подлежащих выводу, спецификаторы типов должны быть опущены и заменены именами тэгов(ключей) хедеров, подлежащих выводу, заключенными в {}. Часть имени тэга RPMTAG_ может быть опущена. Альтернативные форматы вывода могут быть заданы путем добавления к имени тэга :typetag. В настоящее время поддерживаются следующие типы: octal, date, shescape, perms, fflags и depflags. Например, для вывода только названий запрашиваемых пакетов, можно использовать в качестве строки формата %{NAME}. Для вывода названий пакетов и информации о дистрибутиве в две колонки можно использовать %-30{NAME}%{DISTRIBUTION}. Будучи запущенным с аргументом --querytags, rpm выведет список всех тэгов, о которых он знает. Есть два набора опций для запроса - выбор пакетов и выбор информации. Опции выбора пакетов:

<название_пакета>
    Запрос установленного пакета, называющегося <название_пакета>.

-a, --all
    Запрос всех установленных пакетов.

--whatrequires <capability>
    Запрос всех пакетов, требующих <capability> для правильного функционирования.

--whatprovides <virtual>
    Запрос всех пакетов, предоставляющих <virtual> сервис.

-f <файл>, --file <файл>
    Запрос пакета, которому принадлежит файл <файл>.

-g <группа>, --group <группа>
    Запрос пакетов из группы <группа>.

-p <файл_пакета>
    Запрос (неинсталлированого) пакета <файл_пакета>. Файл <файл_пакета> может быть задан как ftp или http style URL; в этом случае хедер пакета будет получен с указанного сервера. См. ОПЦИИ FTP/HTTP на предмет встроенной поддержки FTP/HTTP.

--specfile <specfile>
    Разбор и запрос <specfile> так, как если бы это был пакет. Хотя не вся информация (например, списки файлов) доступна, этот тип запроса позволяет использовать rpm для извлечения информации из spec-файлов без необходимости написания парсера spec-файлов.

--querybynumber <num>
    Запросить непосредственно запись базы данных номер <num>. Полезно для отладочных целей.

--triggeredby <имя_пакета>
    Запрос всех пакетов, содержащих триггер-скрипты, активизируемые пакетом <имя_пакета>.

Опции выбора информации:

-i  Выводит информацию о пакете, включая название, версию и описание. Использует --queryformat если таковой задан.

-R, --requires
    Выводит список пакетов, от которых зависит данный пакет.

--provides
    Выводит список сервисов и библиотек, предоставляемых данным пакетом.

--changelog
    Выводит протокол изменений данного пакета.

-l, --list
    Выводит список файлов, входящих в данный пакет.

-s, --state
    Выводит состояние файлов в пакете (подразумевает -l). Каждый файл может находиться в одном из следующих состояний: нормальный, не установлен или заменен.

-d, --docfiles
    Вывести список только файлов документации (подразумевает -l).

-c, --configfiles
    Вывести список только конфигурационных файлов (подразумевает -l).

--scripts
    Вывести специфические для данного пакета скрипты, используемые как часть процессов инсталляции/деинсталляции, если таковые есть.

--triggers, --triggerscripts
    Показать все триггер-скрипты, если таковые имеются, содержащиеся в пакете.

--dump
    Вывести информацию о файлах следующим образом: path size mtime md5sum mode owner group isconfig isdoc rdev symlink. Эта опция должна использоваться в сочетании с по меньшей мере одной из -l, -c, -d.

--last
    Упорядочивает список пакетов по времени установки таким образом, что наиболее свежие пакеты находятся в верху списка.

--filesbypkg
    Показывает все файлы в каждом пакете.

--triggerscripts
    Показывает все триггер-скрипты для выбранных пакетов.

ОПЦИИ ВЕРИФИКАЦИИ
Общая форма команды верификации rpm выглядит так:

    rpm -V|-y|--verify [опции-верификации]

В процессе верификации пакета информация об инсталлированых файлах пакета сравнивается с информацией из оригинального пакета и из базы данных RPM. В числе прочих, верификация проверяет размер, контрольную сумму MD5, права доступа, тип, хозяина и группу каждого файла. Все несоответствия докладываются. Опции выбора пакетов такие же, как и для запроса(инспекции) пакетов. Файлы, которые не устанавливались из пакета (например, файлы документации, которые были исключены из процесса инсталляции при помощи опции "--excludedocs") молча игнорируются. Опции, которые могут быть использованы в процессе верификации:

--nofiles
    Игнорировать отсутствующие файлы.

--nomd5
    Игнорировать ошибки контрольной суммы MD5.

--nopgp
    Игнорировать ошибки подписи PGP. Форматом вывода является строка из восьми символов, возможное "c", указывающее на конфигурационный файл, и имя файла. Каждый из восьми символов показывает результат сравнения одного из аттрибутов файла со значением, записанным в базе данных RPM. Точка обозначает, что тест прошел. Следующие символы говорят об ошибках некоторых тестов:

5   Контрольная сумма MD5

S   Размер файла

L   Симлинк

T   Время модификации

D   Устройство

U   Хозяин

G   Группа

M   Права доступа (включает права доступа и тип файла)

ПРОВЕРКА ПОДПИСИ
Общая форма команды проверки подписи RPM выглядит так:

    rpm --checksig <файл_с_пакетом>+

Эта команда проверяет PGP-подпись, встроенную в пакет, для подтверждения целостности и источника происхождения пакета. Информация о конфигурации PGP читается из конфигурационных файлов. Более детально см. секцию ПОДПИСИ PGP.

ОПЦИИ УДАЛЕНИЯ (ДЕИНСТАЛЛЯЦИИ)
Общая форма команды удаления (деинсталляции) rpm выглядит так:

        rpm -e <название_пакета>+

--allmatches
    Удалить все версии пакета, отвечающие <название_пакета>. Обычно, если <название_пакета> отвечает нескольким пакетам, выдается сообщение об ошибке и удаление не производится.

--noscripts
    Не исполнять пре- и постустановочные скрипты.

--notriggers
    Не исполнять триггер-скриптов, взведенных на удаление данного пакета.

--nodeps
    Не проверять зависимостей перед удалением пакетов.

--test
    Не производить удаления, только сделать вид что :) Полезна в сочетании с опцией -vv.

ОПЦИИ СБОРКИ (ПОСТРОЕНИЯ) ПАКЕТОВ
Общая форма команды построения пакета rpm выглядит так:

    rpm -[b|t]O [опции-сборки] <spec_файл>+

Аргумент -b применяется в том случае, если для сборки пакета используется spec-файл. Если же rpm должен извлечь этот файл из архива gzip (или compress), используется аргумент -t. После первого аргумента указывается следующий (O), указывающий какие этапы сборки и упаковки должны быть выполнены. Это один из:

-bp Исполнить стадию "%prep" spec-файла. Обычно это включает в себя распаковку исходников и прикладывание к ним патчей.

-bl Произвести "list check". В секции "%files" spec-файла производится расширение макросов и проверка перечисленных файлов на существование.

-bc Исполнить стадию "%build" spec-файла (предварительно исполнив стадию %prep). Обычно это сводится к исполнению некого эквивалента "make".

-bi Исполнить стадию "%install" spec-файла (предварительно исполнив стадии %prep и %build). Обычно это сводится к исполнению некого эквивалента "make install".

-bb Собрать бинарный пакет (предварительно исполнив стадии %prep, %build и %install).

-bs Собрать только исходный пакет (предварительно исполнив стадии %prep, %build и %install).

-ba Собрать бинарный (RPM) и исходный (SRPM) пакеты (предварительно исполнив стадии %prep, %build и %install).

Также могут быть использованы следующие опции:

--short-circuit
    Исполнить непосредственно указанную стадию, пропустив предшествующие. Может быть использована только с -bc и -bi.

--timecheck
    Установить возраст для "timecheck" (0 чтобы запретить). Это значение также может быть установлено путем определения макроса "_timecheck". Значение timecheck определяет максимальный возраст (в секундах) пакуемых в пакет файлов. Для всех файлов, которые старше этого возраста, будет выводиться предупреждение.

--clean
    Удалить дерево, использованное для сборки, после того, как построены пакеты.

--rmsource
    Удалить исходники и spec-файл после сборки (может быть использовано отдельно, например "rpm --rmsource foo.spec").

--test
    Не исполнять никаких стадий сборки. Полезно для тестирования spec-файлов.

--sign
    Встроить в пакет PGP-подпись. Эта подпись может быть использована для проверки целостности и источника происхождения пакета. См. секцию ПОДПИСИ PGP на предмет опций PGP.

--builroot <каталог>
    Использовать каталог <каталог> как корневой для сборки пакетов.

--target <платформа>
    При сборке пакета интерпретировать <платформа> как arch-vendor-os и соответственно установить макросы _target, _target_arch и _target_os.

--buildarch <arch>
    Собрать пакет для архитектуры <arch> не обращая внимания на архитектуру системы, на которой производится сборка. Эта опция устарела, в RPM 3.0 вместо нее следует использовать опцию --target.

--buildos <os>
    Собрать пакет для операционной системы <os> не обращая внимания на архитектуру системы, на которой производится сборка. Эта опция устарела, в RPM 3.0 вместо нее следует использовать опцию --target.

ОПЦИИ ПЕРЕСБОРКИ И ПЕРЕКОМПИЛЛЯЦИИ
Существуют еще два способа запуска rpm: rpm --recompile <файл_исходного_пакета>+ rpm --rebuild <файл_исходного_пакета>+ Будучи вызванным таким способом, rpm устанавливает указанный исходный пакет и исполняет %prep, %build и %install. Кроме того, --rebuild собирает новый бинарный пакет. После того, как сборка закончена, удаляется дерево, использованное для сборки (как с опцией --clean), сами исходники и spec-файл.

ПОДПИСЬ СУЩЕСТВУЮЩЕГО RPM
rpm --resign <файл_бинарного_пакета>+ Эта опция генерирует и вставляет новые подписи в указанные пакеты. Все существующие подписи из пакетов удаляются. rpm --addsign <файл_бинарного_пакета>+ Эта опция генерирует и добавляет новые подписи в указанные пакеты. Все существующие подписи пакетов при этом сохраняются.

ПОДПИСИ PGP
Для того, чтобы использовать возможность подписи, rpm должен быть настроен для запуска PGP и должен быть способен найти public key ring с ключом RPM в нем. По умолчанию rpm для поиска keyrings использует умолчания PGP (соблюдая PGPPATH). Если ваши key rings расположены не там, где их ожидает найти PGP, вы должны настроить макрос

_pgp_path
    на каталог, содержащий ваши key rings.

Если вы хотите иметь возможность подписи создаваемых вами пакетов, вам также необходимо создать свою собственную пару из публичного и секретного ключей (см. документацию PGP). Кроме вышеупомянутого макроса, вам также необходимо настроить макросы

_signature
    Тип подписи. В настоящее время поддерживается только pgp.

_pgp_name
    Имя "пользователя", чьи ключи вы хотите использовать для подписи ваших пакетов.

При сборке пакетов вы добавляете к командной строке опцию --sign. У вас спросят пароль и ваш пакет будет собран и подписан. Например, для того чтобы использовать PGP для подписи пакетов от имени пользователя "John Doe <jdoe@foo.com>" из key rings, находящихся в /etc/rpm/.pgp, вы должны включить

%_signature
    pgp

%_pgp_name
    /etc/rpm/.pgp

%_pgp_name
    John Doe <jdoe@foo.com>"

в файл конфигурации макросов. Используйте /etc/rpm/macros для общесистемной и ~/.rpmmacros для пользовательской конфигурации.

ОПЦИИ ПЕРЕСТРОЕНИЯ БАЗЫ ДАННЫХ
Общая форма команды перестроения базы данных RPM выглядит так:

        rpm --rebuilddb

Для построения новой базы данных:

        rpm --initdb

Этот режим поддерживает только две опции, --dbpath и --root.

ПОКАЗ RC
Запуск

    rpm --showrc

выводит значения, которые rpm будет использовать для всех опций, которые могут быть установлены в файлах rpmrc.

ОПЦИИ FTP/HTTP
rpm содержит простые клиенты FTP и HTTP для упрощения установки и изучения пакетов, доступных через Интернет. Файлы пакетов для установки, обновления и запроса могут быть указаны как ftp или http style URL:

    ftp://<user>:<password>@hostname:<port>/path/to/package.rpm

Если часть <password> опущена, пароль будет запрошен (по одному разу для каждой пары user/hostname). Если ни <user>, ни <password> не указаны, будет использован anonymous ftp. Во всех случаях используется пассивная (PASV) пересылка по FTP. rpm позволяет использовать с ftp URL следующие опции:

--ftpproxy <hostname>
    Система <hostname> будет использована как прокси-сервер для всех пересылок, что позволяет производить FTP-соединения через firewall, использующий прокси для выхода во внешний мир. Эта опция может быть задана также настройкой макроса _ftpproxy.

--ftpport <port>
    Задает номер TCP-порта, используемого для FTP-соединений вместо порта по умолчанию. Эта опция может быть также задана настройкой макроса _ftpport.

rpm позволяет использовать с http URL следующие опции:

--httpproxy <hostname>
    Система <hostname> будет использована как прокси-сервер для всех пересылок, что позволяет производить HTTP-соединения через firewall, использующий прокси для выхода во внешний мир. Эта опция может быть задана также настройкой макроса _httpproxy.

--httpport <port>
    Задает номер TCP-порта, используемого для HTTP-соединений вместо порта по умолчанию. Эта опция может быть также задана настройкой макроса _httpport.

ФАЙЛЫ
/usr/lib/rpm/rpmrc
/etc/rpmrc
~/.rpmrc
/var/state/rpm/packages
/var/state/rpm/pathidx
/var/state/rpm/nameidx
/tmp/rpm*

СМ. ТАКЖЕ
glint(8), rpm2cpio(8), http://www.rpm.org/

АВТОРЫ
Marc Ewing <marc@redhat.com>
Jeff Johnson <jbj@redhat.com>
Erik Troan <ewt@redhat.com>
Sergey Kubushin <ksi@ksi-linux.com> - перевод и адаптация
                                          для KSI Linux.