rpm

Autres langues

Langue: ru

Version: 22 Апреля 1999 (fedora - 16/08/07)

Section: 8 (Commandes administrateur)

НАЗВАНИЕ

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.