rpm(8)

rpm(8) ALT Linux rpm(8)

НАЗВАНИЕ

rpm - Менеджер пакетов RPM

ИСПОЛЬЗОВАНИЕ

ЗАПРОС И ПРОВЕРКА ПАКЕТОВ:

rpm {-q|--query} [опции-отбора] [опции-запроса]

rpm {-V|--verify} [опции-отбора] [--nodeps] [--nofiles] [--nomd5] [--noscripts]

rpm {-K|--checksig} [--nogpg] [--nopgp] [--nomd5] файл_пакета ...

УСТАНОВКА, ОБНОВЛЕНИЕ И УДАЛЕНИЕ ПАКЕТОВ:

rpm {-i|--install} [опции-установки] файл_пакета ...

rpm {-U|--upgrade} [опции-установки] файл_пакета ...

rpm {-F|--freshen} [опции-установки] файл_пакета ...

rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--repackage] [--test] файл_пакета ...

СБОРКА ПАКЕТОВ:

rpm {-ba|-bb|-bp|-bc|-bi|-bl|-bs} [опции-сборки] spec-файл ...

rpm {-ta|-tb|-tp|-tc|-ti|-tl|-ts} [опции-сборки] tarball ...

rpm {--rebuild|--recompile} srpm-файл ...

РАЗНОЕ

rpm {--initdb|--rebuilddb}

rpm {--addsign|--resign} имя_пакета ...

rpm {--querytags|--showrc}

rpm {--setperms|--setugids} имя_пакета ...

ОПЦИИ ОТБОРА

[имя_пакета] [-a,--all] [-f,--file файл] [-g,--group группа] [-p,--package файл_пакета] [--querybynumber номер] [--triggeredby имя_пакета] [--whatprovides сервис] [--whatrequires сервис]

ОПЦИИ ЗАПРОСА

[--changelog] [-c,--configfiles] [-d,--docfiles] [--dump] [--filesbypkg] [-i,--info] [--last] [-l,--list] [--provides] [--qf,--queryformat формат_запроса] [-R,--requires] [--scripts] [-s,--state] [--triggers,--triggerscripts]

ОПЦИИ УСТАНОВКИ

[--allfiles] [--badreloc] [--excludepath путь] [--excludedocs] [--force] [-h,--hash] [--ignoresize] [--ignorearch] [--ignoreos] [--includedocs] [--justdb] [--nodeps] [--noorder] [--noscripts] [--notriggers] [--oldpackage] [--percent] [--prefix путь] [--relocate старый_путь=новый_путь] [--repackage] [--replacefiles] [--replacepkgs] [--test]

ОПЦИИ СБОРКИ

[--buildroot каталог] [--clean] [--nobuild] [--rmsource] [--rmspec] [--short-circuit] [--sign] [--target платформа]

ОПИСАНИЕ

RPM - это мощный консольный менеджер пакетов, используемый для сборки, установки, инспекции, проверки, обновления и удаления отдельных программных пакетов. Каждый такой пакет состоит из набора файлов и информации о пакете, включающей название, версию, описание пакета, и т.д.

Может быть выбран один из следующих основных режимов: Инициализация базы данных, Перестроение базы данных, Сборка пакетов, Перекомпиляция пакетов, Сборка пакетов из tar-архивов, Запрос, Показ полей запроса, Установка, Обновление, Удаление, Проверка установки, Проверка подписи, Повторная подпись, Добавление подписи, Установка владельцев и групп и Показ конфигурации.

ОБЩИЕ ОПЦИИ

Эти опции могут быть использованы во всех режимах работы.

-vv
Выводить много отладочной информации.
--quiet
Выводить как можно меньше сообщений - как правило, выводятся только сообщения об ошибках.
--help
Вывести более детальную, чем обычно, справку об использовании rpm.
--version
Вывести одну строку, содержащую номер версии используемого rpm.
--rcfile <список-файлов>
Каждый файл из разделенного двоеточиями <списка-файлов> последовательно читается rpm на предмет конфигурационной информации. По умолчанию <список-файлов> выглядит как /usr/lib/rpm/rpmrc:/etc/rpmrc:~/.rpmrc. В этом списке обязан существовать только первый файл; все тильды будут заменены значением переменной среды $HOME.
--root <каталог>
Использовать для всех операций файловую систему с корнем в <каталоге>. Обратите внимание, что это значит, что база данных также будет читаться и модифицироваться в <каталоге>, а все pre и post скрипты будут исполняться после chroot() в <каталог>.
--dbpath <каталог>
Использовать базу данных RPM, расположенную в <каталоге>.
--nowait-lock
Не ждать освобождения блокировки базы данных пакетов.
--ftpproxy <хост>
Использовать <хост> как FTP-прокси. См. ОПЦИИ FTP/HTTP.
--ftpport <порт>
Использовать <порт> как FTP порт прокси-сервера. См. ОПЦИИ FTP/HTTP.
--httpproxy <хост>
Использовать <хост> как HTTP-прокси. См. ОПЦИИ FTP/HTTP.
--httpport <порт>
Использовать <порт> как FTP или HTTP порт прокси-сервера. См. ОПЦИИ FTP/HTTP.
--pipe <cmd>
Перенаправить вывод rpm на вход команды <cmd>.

ОПЦИИ УСТАНОВКИ И ОБНОВЛЕНИЯ

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

rpm {-i|--install} [опции-установки] файл_пакета ...

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

rpm {-U|--upgrade} [опции-установки] файл_пакета ...

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

rpm {-F|--freshen} [опции-установки] файл_пакета ...

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

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

--allfiles
Устанавливать или обновлять все файлы, определенные как "missingok", даже если они уже существуют.
--badreloc
Для использования вместе с --relocate; производит перемещение, даже если пакет не является переместимым.
--excludepath
Не устанавливать файлы, чьи имена начинаются с <пути>.
--excludedocs
Не устанавливать никаких файлов, отмеченных при сборке пакета как файлы документации (которые включают страницы руководства и документацию в формате texinfo).
--force
То же, что и комбинация --replacepkgs, --replacefiles и --oldpackage.
-h, --hash
Выводить знаки "#" по мере распаковки архива с пакетом. Количество печатаемых знаков рассчитывается при запуске rpm исходя из характеристик выходного потока с тем, чтобы совместно с именем пакета выводимая информация про каждый пакет занимала ровно одну строку. Используется совместно с -v|--verbose для улучшения восприятия.
--ignoresize
Не проверять файловую систему на наличие достаточного свободного места перед установкой этого пакета.
--ignorearch
Произвести установку или обновление, даже если архитектуры бинарного RPM и машины не совпадают.
--ignoreos
Произвести установку или обновление, даже если операционные системы бинарного RPM и машины не совпадают.
--includedocs
Устанавливать файлы документации. Это поведение по умолчанию.
--justdb
Обновить только базу данных, не затрагивая файловую систему.
--nodeps
Не проверять зависимости перед установкой или обновлением пакета.
--noorder
Не переупорядочивать список устанавливаемых пакетов. Обычно список переупорядочивается для удовлетворения зависимостей.
--noscripts
--nopre
--nopost
--nopreun
--nopostun
Не исполнять пре- и пост-установочных скриптов, с соответствующими именами. Опция --noscripts эквивалентна набору опций

--nopre --nopost --nopreun --nopostun

и запрещает исполнение соответствующих %pre, %post, %preun и %postun скриптов.

--notriggers
--notriggerin
--notriggerun
--notriggerpostun
Не исполнять триггер-скриптов, с соответсвующими типами. Опция --notriggers эквивалентна набору опций

--notriggerin --notriggerun --notriggerpostun

и запрещает исполнение соответствующих %triggerin, %triggerun и %triggerpostun скриптов.

--oldpackage
Позволяет заменить новый пакет на более старый при обновлении (откатиться назад, на предыдущую версию).
--percent
Выводить процент готовности по мере распаковки архива с пакетом. Задумано для облегчения использования rpm из других утилит.
--prefix <путь>
Для переместимых пакетов: установить префикс установки в <путь>.
--relocate <старый_путь>=<новый_путь>
Для переместимых пакетов: преобразовывает файлы, которые должны были бы быть установлены в <старый_путь>, в <новый_путь>.
--repackage
Перепаковывает файлы перед удалением. Прежде установленный пакет будет назван в соответствии с макросом %_repackage_name_fmt и создан в каталоге, имя которого определенно макросом %_repackage_dir (значение по-умолчанию /var/tmp).
--replacefiles
Устанавливать пакеты, даже если они перепишут файлы из других, уже установленных пакетов.
--replacepkgs
Устанавливать пакеты, даже если некоторые из них уже установлены в системе.
--nobuild
Не устанавливать пакет, просто проверить возможность установки и сообщить о возможных проблемах.

ОПЦИИ ЗАПРОСА

Общая форма команды запроса (инспекции) выглядит так:

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 <сервис>
Запросить все пакеты, требующие <сервис> для правильного функционирования.
--whatprovides <сервис>
Запросить все пакеты, предоставляющие <сервис>.
-f <файл>, --file <файл>
Запросить пакеты, которым принадлежит <файл>.
-g <группа>, --group <группа>
Запросить пакеты, входящие в<группу>.
-p <файл_пакета>
Запросить (не инсталлированый) <файл_пакета>. Файл <файл_пакета> может быть задан как адрес ftp или http; в этом случае заголовок пакета будет получен с указанного сервера. См. ОПЦИИ FTP/HTTP на предмет встроенной поддержки FTP/HTTP.
--specfile <spec-файл>
Разобрать и запросить <spec-файл> так, как если бы это был пакет. Хотя не вся информация (например, списки файлов) доступна, этот тип запроса позволяет использовать rpm для извлечения информации из spec-файлов без необходимости написания парсера spec-файлов.
--querybynumber <номер>
Запросить непосредственно запись базы данных под указанным <номером>. Может быть полезно для отладочных целей.
--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 -V|-y|--verify [опции-проверки]

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

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

Опции, которые могут быть использованы в процессе проверки:

--nofiles
Игнорировать отсутствующие файлы.
--nomd5
Игнорировать ошибки проверки контрольной суммы MD5.

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

5
Контрольная сумма MD5
S
Размер файла
L
Символическая ссылка
T
Время модификации
D
Устройство
U
Владелец
G
Группа
M
Права доступа (включает права доступа и тип файла)

ПРОВЕРКА ПОДПИСИ

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

rpm --checksig <файл-пакета>+

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

ОПЦИИ УДАЛЕНИЯ (ДЕИНСТАЛЛЯЦИИ)

Общая форма команды удаления (деинсталляции) выглядит так:

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

--allmatches
Удалить все версии пакета, отвечающие <названию_пакета>. Обычно, если <название_пакета> отвечает нескольким пакетам, выдается сообщение об ошибке и удаление не производится.
--noscripts
Не исполнять пре- и пост-установочные скрипты.
--notriggers
Не исполнять триггер-скриптов, активируемых при удалении данного пакета.
--nodeps
Не проверять зависимостей перед удалением пакетов.
--test
Не производить удаления, только сделать вид. Полезна в сочетании с опцией -vv.

ОПЦИИ СБОРКИ (ПОСТРОЕНИЯ) ПАКЕТОВ

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


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

Аргумент -b применяется в том случае, когда для сборки пакета используется spec-файл. Если же rpm должен предварительно извлечь этот файл из архива, используется аргумент -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
Собрать только исходный пакет (не исполняя более никаких стадий).
-ba
Собрать бинарный (RPM) и исходный (SRPM) пакеты (предварительно исполнив стадии %prep, %build и %install).
-bE
Обработать spec-файл; при этом расширяются макросы, и результат печатается в стандартный вывод.

Кроме того, в дополнении к вышеназванным, могут быть использованы следующие опции:

--short-circuit
Исполнить непосредственно указанную стадию, пропустив предшествующие.
--timecheck
Установить возраст для "timecheck" (0 - запретить). Это значение также может быть установлено путем определения макроса "_timecheck". Значение timecheck определяет максимальный возраст (в секундах) пакуемых в пакет файлов. Для всех файлов, которые старше этого возраста, будет выводиться предупреждение.
--clean
Удалить дерево, использованное для сборки, после того, как построены пакеты.
--rmsource
Удалить исходники и spec-файл после сборки (может быть использовано отдельно, например "rpm --rmsource foo.spec").
--test
Не исполнять никаких стадий сборки. Полезно для тестирования spec-файлов.
--sign
Встроить в пакет PGP-подпись. Эта подпись может быть использована для проверки целостности и источника происхождения пакета. См. секцию ПОДПИСИ GPG/PGP на предмет опций PGP.
--builroot <каталог>
Использовать каталог <каталог> как корневой для сборки пакетов, переопределив значение макроса %_buildroot и тэга BuildRoot.
--target <платформа>
При сборке пакета интерпретировать <платформу> как arch-vendor-os и соответствующим образом установить макросы _target, _target_arch и _target_os.
--buildarch <архитектура>
Собрать пакет для <архитектуры>, не обращая внимания на архитектуру системы, на которой производится сборка. Эта опция устарела, в RPM 3.0 вместо нее следует использовать опцию --target.
--buildos <операционная система>
Собрать пакет для <операционной системы>, не обращая внимания на архитектуру системы, на которой производится сборка. Эта опция устарела, в RPM 3.0 вместо нее следует использовать опцию --target.

ОПЦИИ ПЕРЕСБОРКИ И ПЕРЕКОМПИЛЯЦИИ

Существуют еще два способа запуска процесса сборки:

rpm --recompile <файл_исходного_srpm_пакета>+

rpm --rebuild <файл_исходного_srpm_пакета>+

Будучи вызванным таким способом, rpm устанавливает указанный исходный srpm-пакет, после чего исполняет стадии %prep, %build и %install. Кроме того, --rebuild собирает новый бинарный пакет. После того, как сборка удачно закончена, удаляется дерево, использованное для сборки (как с опцией --clean), сами исходники и spec-файл (как с опцией --rmsource).

ПОДПИСЬ СУЩЕСТВУЮЩЕГО ПАКЕТА

rpm --resign <файл_пакета>+

Эта опция генерирует и вставляет новые подписи в указанные пакеты. Все существующие подписи из пакетов при этом удаляются.

rpm --addsign <файл_пакета>+

Эта опция генерирует и добавляет новые подписи в указанные пакеты. Все существующие подписи пакетов при этом сохраняются.

ПОДПИСИ GPG/PGP

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

_gpg_path
на каталог, содержащий ваши связки GPG-ключей.
_pgp_path
на каталог, содержащий ваши связки PGP-ключей.

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

_signature
Тип подписи. В настоящее время поддерживается gpg и pgp.
_gpg_name
Имя "пользователя", чьи ключи вы хотите использовать для подписи ваших пакетов с помощью программы gpg.
_pgp_name
Имя "пользователя", чьи ключи вы хотите использовать для подписи ваших пакетов с помощью программы pgp.

При сборке пакетов вы добавляете к командной строке опцию --sign. У вас спросят пароль, и ваш пакет после успешной сборки будет подписан.

Например, для того чтобы использовать GPG для подписи пакетов от имени пользователя "John Doe <jdoe@foo.com>" из связки ключей, находящихся в /etc/rpm/.gpg, вы должны включить

%_signature
gpg
%_gpg_name
/etc/rpm/.gpg
%_gpg_name
John Doe <jdoe@foo.com>"

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

ОПЦИИ ПЕРЕСТРОЕНИЯ БАЗЫ ДАННЫХ

Общая форма команды перестроения базы данных RPM выглядит так:


rpm --rebuilddb

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


rpm --initdb

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

ПОКАЗ КОНФИГУРАЦИИ

Запуск

rpm --showrc

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

ОПЦИИ FTP/HTTP

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

ftp://<логин>:<пароль>@<сервер>:<порт>/путь/к/файлу.rpm

Если <пароль> не указан, то он будет запрошен (по одному разу для каждой пары логин/сервер). Если ни <логин>, ни <пароль> не указаны, будет использован анонимный ftp. Во всех случаях используется пассивная (PASV) пересылка по FTP.

rpm позволяет использовать с ftp-адресацией следующие опции:

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

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

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

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

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

ФАЙЛЫ

/usr/lib/rpm/<архитектура>-linux/rpmrc
/usr/lib/rpm/rpmrc
/etc/rpmrc
~/.rpmrc

СМ. ТАКЖЕ

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. Dmitry V. Levin <ldv@fandra.org> - перевод и адаптация
для Linux-Mandrake RE.
7 Марта 2001 ALT Linux Team