НАЗВАНИЕ
rpm –
Менеджер
пакетов RPM
ОБЗОР
ЗАПРОС И
ПРОВЕРКА
ПАКЕТОВ:
rpm {-q|–query}
[опции-выбора]
[опции-запроса]
rpm {-V|–verify}
[опции-выбора]
[опции-проверки]
rpm –import PUBKEY …
rpm {-K|–checksig} [–nosignature]
[–nodigest] PACKAGE_FILE …
УСТАНОВКА,
ОБНОВЛЕНИЕ
И УДАЛЕНИЕ
ПАКЕТОВ:
rpm {-i|–install}
[опции-установки]
PACKAGE_FILE …
rpm {-U|–upgrade}
[опции-установки]
PACKAGE_FILE …
rpm {-F|–freshen}
[опции-установки]
PACKAGE_FILE …
rpm {-e|–erase} [–allmatches]
[–nodeps] [–noscripts] [–notriggers] [–test]
PACKAGE_NAME …
РАЗНОЕ:
rpm {–initdb|–rebuilddb}
rpm {–addsign|–resign} PACKAGE_FILE …
rpm {–querytags|–showrc}
rpm {–setperms|–setugids} PACKAGE_NAME
…
опции-выбора
[PACKAGE_NAME] [-a,–all] [-f,–file
FILE] [-g,–group GROUP] {-p,–package
PACKAGE_FILE] [–hdrid SHA1] [–pkgid
MD5] [–tid TID] [–querybynumber
HDRNUM] [–triggeredby PACKAGE_NAME]
[–whatprovides CAPABILITY] [–whatrequires
CAPABILITY]
опции-запроса
[–changelog] [-c,–configfiles]
[-d,–docfiles] [–dump] [–filesbypkg]
[-i,–info] [–last] [-l,–list] [–provides]
[–qf,–queryformat QUERYFMT] [-R,–requires]
[–scripts] [-s,–state]
[–triggers,–triggerscripts]
опции-проверки
[–nodeps] [–nofiles] [–noscripts]
[–nodigest] [–nosignature] [–nolinkto]
[–nomd5] [–nosize] [–nouser] [–nogroup]
[–nomtime] [–nomode] [–nordev]
опции-установки
[–aid] [–allfiles] [–badreloc]
[–excludepath OLDPATH] [–excludedocs]
[–force] [-h,–hash] [–ignoresize]
[–ignorearch] [–ignoreos] [–includedocs]
[–justdb] [–nodeps] [–nodigest]
[–nosignature] [–nosuggest] [–noorder]
[–noscripts] [–notriggers] [–oldpackage]
[–percent] [–prefix NEWPATH]
[–relocate OLDPATH=NEWPATH]
[–replacefiles] [–replacepkgs] [–test]
ОПИСАНИЕ
rpm – это
мощный
Менеджер
Пакетов,
который
может быть
использован
для сборки,
установки,
запроса,
проверки,
обновления
и удаления
отдельных
программных
пакетов.
Пакет
содержит
архив с
файлами и
метаданные,
используемые
для
установки
и удаления
файлов
архива.
Метаданные
включают
сценарии,
атрибуты
файлов и
информацию
с
описанием
пакета.
Пакеты
бывают
двух типов:
двоичные
пакеты,
используемые
для
объединения
устанавливаемых
программ, и
пакеты с
исходными
кодами,
включающие
исходные
коды и
описание
способа
формирования
двоичного
пакета.
Необходимо
указать
один из
следующих
основных
режимов
работы:
Запрос,
Проверка,
Проверка
подписи,
Установка/Обновление/Освежение,
Удаление,
Инициализация
Базы
данных,
Перестройка
Базы
данных,
Повторная
подпись,
Добавление
подписи,
Задание
Владельцев/Групп,
Отображение
тегов
запроса и
Отображение
конфигурации.
ОБЩИЕ
ОПЦИИ
Эти опции
могут быть
использованы
во всех
режимах.
- -?, –help
- Вывести
более
детальную,
чем обычно,
справку об
использовании. - –version
- Вывести
одну
строку,
содержащую
номер
версии rpm. - –quiet
- Выводить
как можно
меньше
сообщений –
как
правило,
отображаются
только
сообщения
об
ошибках. - -v
- Выводить
подробную
информацию
– как
правило,
отображаются
сообщения
о
выполнении
всех
шагов. - -vv
- Выводить
много
отладочной
информации. - –rcfile
FILELIST - Каждый из
файлов
разделенного
двоеточиями
списка
файлов FILELIST
последовательно
прочитывается
rpm на
предмет
конфигурационной
информации.
В этом
списке
обязан
существовать
только
первый
файл; все
знаки
тильда
будут
заменены
значением
$HOME. По
умолчанию
список
файлов FILELIST
выглядит
как
/usr/lib/rpm/rpmrc:/usr/lib/rpm/<vendor>/rpmrc:/etc/rpmrc:~/.rpmrc. - –pipe
CMD - Перенаправляет
вывод rpm на
вход
команды CMD. - –dbpath
DIRECTORY - Использовать
базу
данных RPM в
каталоге
DIRECTORY вместо
пути по
умолчанию
/var/lib/rpm - –root
DIRECTORY - Использовать
для всех
операций
файловую
систему с
корнем в
DIRECTORY.
Обратите
внимание,
что это
значит, что
база
данных
внутри DIRECTORY
будет
использоваться
для
проверки
зависимостей,
и все
сценарии
%post и %prep
будут
исполняться
после chroot(2) в
DIRECTORY.
ОПЦИИ
УСТАНОВКИ
И
ОБНОВЛЕНИЯ
Общая
форма
команды
установки rpm
приведена
ниже
rpm {-i|–install}
[опции-установки]
PACKAGE_FILE …
Так
выполняется
установка
нового
пакета.
Общая
форма
команды
обновления
rpm приведена
ниже
rpm {-U|–upgrade}
[опции-установки]
PACKAGE_FILE …
Так
выполняется
установка
или
обновление
уже
установленного
пакета до
новой
версии. Эта
операция
аналогична
установке,
при этом
все другие
версии
удаляются
после
установки
нового
пакета.
rpm {-F|–freshen}
[опции-установки]
PACKAGE_FILE …
Так
выполняется
обновление
пакетов, но
только
если
предыдущая
версия уже
установлена.
Параметр
PACKAGE_FILE может
быть
указан как
адрес ftp или
http URL, в таком
случае
пакет
будет
скачан
перед
установкой.
См. ОПЦИИ FTP/HTTP
для
получения
информации
о работе rpm
с
поддержкой
ftp или http.
- –aid
- Добавляет
при
необходимости
предложенные
пакеты в
набор
транзакции. - –allfiles
- Устанавливает
или
обновляет
все файлы с
флагом missingok в
пакете,
независимо
от их
существования. - –badreloc
- Используется
вместе с
–relocate,
разрешает
перемещение
всех путей
файлов, не
только тех,
для
которых
старые
пути OLDPATH
включены в
заметки по
перемещению
(relocation hint) в
бинарном
пакете. - –excludepath
OLDPATH - Не
устанавливать
файлы
названия,
которых
начинаются
с OLDPATH. - –excludedocs
- Не
устанавливать
файлы
помеченные
как
документация
(включающие
man страницы
и
документы
texinfo). - –force
- Эквивалентно
использованию
–replacepkgs, –replacefiles и
–oldpackage. - -h, –hash
- Выводит 50
отметок
при
распаковке
архива.
Используется
с -v|–verbose для
удобства
отображения. - –ignoresize
- Не
проверять
подключенные
файловые
системы на
наличие
необходимого
места на
диске
перед
установкой
данного
пакета. - –ignorearch
- Разрешить
установку
или
обновление,
даже если
архитектуры
бинарного
пакета и
узла не
совпадают. - –ignoreos
- Разрешить
установку
или
обновление,
даже если
операционные
системы
бинарного
пакета и
узла не
совпадают. - –includedocs
- Устанавливать
файлы с
документацией.
Это
поведение
задано по
умолчанию. - –justdb
- Обновить
только
информацию
в базе, но
не
файловые
системы. - –nodigest
- Не
проверять
при чтении
дайджест
пакета или
заголовка. - –nosignature
- Не
проверять
при чтении
подпись
пакета или
заголовка. - –nodeps
- Не
выполнять
проверку
зависимостей
перед
установкой
или
обновлением
пакета. - –nosuggest
- Не
предлагать
пакет(ы)
для
разрешения
отсутствующих
зависимостей. - –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
NEWPATH - Для
перемещаемых
бинарных
пакетов,
преобразовать
все пути
файлов,
которые
начинаются
с
инсталляционного
префикса в
заметках
по
перемещению
(relocation hint) на NEWPATH. - –relocate
OLDPATH=NEWPATH - Для
перемещаемых
бинарных
пакетов,
преобразовать
все пути
файлов,
которые
начинаются
с OLDPATH в
заметках
по
перемещению
(relocation hint) на NEWPATH.
Данная
опция
может быть
использована
несколько
раз, если
требуется
переместить
несколько
путей OLDPATH в
пакете. - –replacefiles
- Установить
пакеты,
даже если
они
заменяют
файлы от
других
установленных
пакетов. - –replacepkgs
- Установить
пакеты,
даже если
они уже
установлены
в системе. - –test
- Не
устанавливать
пакеты,
просто
выполнить
проверку и
сообщить о
потенциальных
конфликтах.
ОПЦИИ
УДАЛЕНИЯ
Общая
форма
команды
удаления rpm
приведена
ниже
rpm {-e|–erase} [–allmatches]
[–nodeps] [–noscripts] [–notriggers] [–test]
PACKAGE_NAME …
Следующие
опции
могут быть
также
использованы:
- –allmatches
- Удалить
все версии
пакета
совпадающие
с PACKAGE_NAME.
Обычно при
наличии
нескольких
пакетов
совпадающих
с PACKAGE_NAME
возникает
ошибка. - –nodeps
- Не
проверять
зависимости
перед
удалением
пакетов. - –noscripts
- –nopreun
- –nopostun
- Не
выполнять
скриптлеты
с
указанными
именами.
Наличие
параметра
–noscripts при
удалении
пакетов
эквивалентно
–nopreun –nopostun
и
выключает
исполнение
соответствующих
скриптлетов
%preun и %postun.
- –notriggers
- –notriggerun
- –notriggerpostun
- Не
выполнять
ни какие
триггерные
скриптлеты
с
указанным
именем.
Опция –notriggers
эквивалентна
–notriggerun –notriggerpostun
и
выключает
исполнение
соответствующих
%triggerun и %triggerpostun
скриптлетов.
- –test
- Не удалять
пакеты,
просто
выполнить
проверку.
Удобно
использовать
этот
параметр
при
отладке
совместно
с опцией -vv.
ОПЦИИ
ЗАПРОСА
Общая
форма
команды
запроса rpm
приведена
ниже
rpm {-q|–query} [select-options]
[query-options]
Существует
возможность
задать
формат
вывода
информации
о пакете.
Для этого
необходимо
использовать
параметр
–qf|–queryformat QUERYFMT
вслед за
которым
указывается
строка
формата QUERYFMT.
Форматирование
запроса –
это
измененная
версия
стандартного
механизма
printf(3).
Форматирование
формируется
из
статических
строк
(которые
могут
включать
стандартные
для языка C
escape-последовательности
для
перевода
строки,
табуляции
и других
спец.
символов) и
меток
форматирования
printf(3). Т.к. rpm
заранее
знает тип
выводимой
информации,
указатель
формата
может быть
опущен и
заменен на
имя
выводимого
тега
заголовка,
заключенного
в фигурные
скобки {}.
Имена
тегов не
чувствительны
к регистру
и префикс
RPMTAG_ в имени
тега можно
опускать.
Альтернативные
форматы
вывода
могут быть
заданы при
помощи
задания
типа
вывода :typetag
после
имени тега.
В данный
момент
поддерживаются
следующие
типы:
- :armor
- Упаковать
публичный
ключ в ASCII
вид. - :base64
- Закодировать
двоичные
данные в
формат base64. - :date
- Использовать
формат strftime(3)
“%c”. - :day
- Использовать
формат strftime(3) “%a %b
%d %Y”. - :depflags
- Форматировать
флаги
зависимостей. - :fflags
- Форматировать
флаги
файлов. - :hex
- В
шестнадцатеричном
виде. - :octal
- В
восьмеричном
виде. - :perms
- Форматировать
права
доступа
файлов. - :shescape
- Экранировать
одиночные
кавычки
для
применения
в
сценариях. - :triggertype
- Вывести
суффикс
триггера.
Например,
для вывода
только
имени
пакета при
запросе, вы
можете
использовать
строку
формата %{NAME}.
Для вывода
имени
пакетов и
информации
о
дистрибутиве
в две
колонки вы
можете
использовать
%-30{NAME}%{DISTRIBUTION}.
Команда rpm
отобразит
спиков
всех тегов,
с которыми
она может
работать
при ее
вызове с
параметром
–querytags.
Существуют
два набора
параметров
для
выполнения
запросов:
для выбора
пакетов и
для
указания
информации.
ОПЦИИ
ВЫБОРА
ПАКЕТОВ:
- PACKAGE_NAME
- Выполняет
запрос к
установленному
пакету с
именем PACKAGE_NAME. - -a, –all
- Выполняет
запрос ко
всем
установленным
пакетам. - -f, –file
FILE - Выполняет
запрос к
пакету,
владельцу
файла FILE. - -g, –group
GROUP - Выполняет
запрос к
пакету с
группой
GROUP. - –hdrid
SHA1 - Выполняет
запрос к
пакету,
содержащему
указанный
идентификатор
заголовка,
т.е. SHA1
дайджест
неизменной
части
заголовка. - -p, –package
PACKAGE_FILE - Выполняет
запрос к
(неустановленному)
пакету в
файле PACKAGE_FILE.
Параметр
PACKAGE_FILE может
быть
указан в
виде
адреса ftp
или http URL, в
результате
чего
заголовок
пакета
будет
скачан и
опрошен.
Обратитесь
к ОПЦИЯМ
FTP/HTTP за
информацией
о
поддержке
в rpm работы
с ftp и http. Если
аргумент(ы)
PACKAGE_FILE не
является
бинарным
пакетом, то
он будет
интерпретирован
как ASCII
манифест
пакета. В
нем
разрешено
применение
комментариев
начинающихся
с ‘#’, каждая
из строк
файла
манифеста
пакета
может
включать
разделенные
запятыми glob
выражения,
включая
адреса URL с
внешними glob
выражениями,
они будут
развернуты
в пути,
которые
будут
подставлены
вместо
манифеста
пакета как
дополнительный
аргумент
PACKAGE_FILE в
запросе. - –pkgid
MD5 - Выполняет
запрос к
пакету,
который
содержит
указанный
идентификатор
пакета, т.е.
MD5
дайджест
объединенного
содержимого
заголовка
и тела
пакета. - –querybynumber
HDRNUM - Выполняет
запрос
напрямую
HDRNUM‘ой
записи в
базе
данных;
используется
только для
отладки. - –specfile
SPECFILE - Обработать
и
выполнить
запрос к SPECFILE
файлу, как
если бы это
был пакет.
Хотя не вся
информация
доступна
(например,
список
файлов),
этот тип
запросов
позволяет
использовать
rpm для
извлечения
информации
из spec файлов
без
написания
специализированного
анализатора
таких
файлов. - –tid TID
- Выполняет
запрос к
пакету(ам),
который
содержит
указанный
идентификатор
транзакции
TID. В данный
момент
используется
временная
метка unix в
качестве
идентификатора.
Все пакеты
установленные
или
удаленные
в составе
одной
транзакции
будут
иметь один
и тот же
идентификатор. - –triggeredby
PACKAGE_NAME - Выполняет
запрос к
пакетам,
которые
вызывают
срабатывание
триггера
пакета(ов)
PACKAGE_NAME. - –whatprovides
CAPABILITY - Выполняет
запрос ко
всем
пакетам,
которые
предоставляют
функциональность
CAPABILITY. - –whatrequires
CAPABILITY - Выполняет
запрос ко
всем
пакетам,
которые
требуют CAPABILITY
для
корректной
работы.
ОПЦИИ
ЗАПРОСА
ПАКЕТОВ:
- –changelog
- Вывести
информацию
об
изменениях
в пакете. - -c, –configfiles
- Вывести
только
конфигурационные
файлы
(подразумевает
-l). - -d, –docfiles
- Вывести
только
файлы
документации
(подразумевает
-l). - –dump
- Распечатать
информацию
о файле в
виде:
-
path size mtime md5sum mode owner group isconfig isdoc rdev symlink
Эта опция
должна
быть
использована
совместно
с одной из
-l, -c, -d.
- –filesbypkg
- Вывести
все файлы
во всех
выбранных
пакетах. - -i, –info
- Вывести
информацию
о пакете,
включая
имя, версию
и описание.
Будет
использована
–queryformat если
указана. - –last
- Упорядочивает
вывод
пакетов по
времени
установки
так, чтобы
последние
пакеты
были
выведены в
начале. - -l, –list
- Вывести
список
файлов в
пакете. - –provides
- Вывести
функциональность
(capabilities)
предоставляемую
пакетом. - -R, –requires
- Вывести
пакеты, от
которых
зависит
этот
пакет. - –scripts
- Вывести
скриптлет(ы)
пакета,
которые
используются
как часть
процесса
установки
или
удаления
пакетов. - -s, –state
- Вывести
состояние
(state) файлов в
пакете
(подразумевается
-l).
Состояние
каждого
файла в
пакете
является
одним из
нормальное
(normal), не
установлен
(not installed) или
заменен
(replaced). - –triggers,
–triggerscripts - Показать
сценарии
триггеров
(если
существуют),
входящие в
состав
пакета.
ОПЦИИ
ПРОВЕРКИ
Общая
форма
команды
проверки rpm
приведена
ниже
rpm {-V|–verify}
[опции-выбора]
[опции-проверки]
Операция
проверки
пакета
сравнивает
информацию
о файлах
установленных
из пакета с
информацией
о них из
метаданных
пакета,
хранимых в
базе
данных rpm.
Среди
прочего
при
проверке
сравниваются
размер, MD5
сумма,
права
доступа
тип,
владельца
и группу
каждого
файла.
Любые
расхождения
будут
отображены.
Файлы,
которые не
были
установлены
вместе с
пакетом,
например,
файлы
документации,
исключенные
при помощи
опции “–excludedocs“,
будут
проигнорированы
без
предупреждения.
Опции
выбора
пакетов
являются
аналогичными
запросу
пакетов
(включая
файлы
манифеста
пакета в
качестве
аргумента).
Опции,
уникальные
для режима
проверки,
приведены
ниже:
- –nodeps
- Не
выполнять
проверку
зависимостей
пакетов. - –nodigest
- Не
проверять
при чтении
дайджест
пакета или
заголовка. - –nofiles
- Не
проверять
атрибуты
файлов
пакетов. - –noscripts
- Не
выполнять
скриптлет
%verifyscript (если
существует). - –nosignature
- Не
проверять
при чтении
подпись
пакета или
заголовка
при
чтении. - –nolinkto
- –nomd5
- –nosize
- –nouser
- –nogroup
- –nomtime
- –nomode
- –nordev
- Не
проверять
соответствующие
атрибуты
файлов.
Формат
вывода
представляет
собой
строку из 9
символов и
маркера из
заголовка
пакета, за
которыми
следует
имя файла.
Возможные
маркеры
атрибутов
приведены
ниже:
-
c %config конфигурационный файл. d %doc файл документации. g %ghost файл (т.е. содержимое файла не включено в состав пакета). l %license файл с лицензией. r %readme файл readme.
Каждый из
9 символов
отражает
результат
проверки
атрибута(ов)
файлов с
значением
того же
атрибута,
записанного
в базе
данных.
Символ “.”
(точка)
означает,
что
проверка
прошла, а
символ “?”
(вопросительный
знак)
означает,
что
проверка
не может
быть
выполнена
(например,
права
доступа к
файлу не
позволяют
провести
чтение). В
противном
случае
будут
отображены
символы
(для
привлечения
внимания
выделены
жирным),
показывающие
сбой
проверки
соответствующего
–verify теста:
-
S размер (Size) файла отличается M режим (Mode) доступа отличается (включая права доступа и тип файла) 5 отличается контрольная MD5 сумма D отличается старший/младший номер файла устройства (Device) L отличается путь ссылки при readLink(2) U отличается владелец (User) G отличается групповое владение (Group) T отличается время изменения (mTime)
ПРОВЕРКА
ЦИФРОВОЙ
ПОДПИСИ И
ДАЙДЖЕСТА
Общая
форма
команд rpm по
работе с
цифровой
подписью
приведена
ниже
rpm –import PUBKEY …
rpm {–checksig} [–nosignature]
[–nodigest] PACKAGE_FILE …
Опция –checksig
проверяет
все
дайджесты
и подписи,
содержащиеся
в PACKAGE_FILE для
проверки
целостности
и
происхождения
пакета.
Обратите
внимание,
что
подписи
теперь
проверяются
при каждом
чтении
пакета и
опция –checksig
полезна
для
проверки
всех
дайджестов
и подписей,
ассоциированных
с пакетом.
Цифровые
подписи не
могут быть
проверены
без
публичных
ключей.
Публичный
ключ в ASCII
формате
может быть
добавлен в
базу
данных rpm
при
использовании
команды –import.
Импортированный
публичный
ключ
заносится
в
заголовок
и
управление
ключами
проводится
аналогично
управлению
пакетами.
Например,
все
импортированные
ключи
можно
просмотреть
при
помощи:
rpm -qa gpg-pubkey*
Подробная
информация
о
конкретном
публичном
ключе
после
импорта
может быть
отображена
при
запросе.
Информация
о ключе Red Hat GPG/DSA:
rpm -qi gpg-pubkey-db42a60e
Наконец,
публичный
ключ может
быть
удален
после его
импорта
также как
пакет.
Удаление
ключа Red Hat GPG/DSA:
rpm -e gpg-pubkey-db42a60e
ПОДПИСЬ
ПАКЕТА
rpm –addsign|–resign PACKAGE_FILE …
Обе опции
–addsign и –resign
создают и
вставляют
новую
подпись
для
каждого
указанного
файла PACKAGE_FILE,
заменяя
существующие
подписи.
Эти две
опции
существуют
по
историческим
причинам, и
разницы в
поведении
между ними
сейчас
нет.
ИСПОЛЬЗОВАНИЕ
GPG ДЛЯ
ПОДПИСИ
ПАКЕТОВ
Для того,
чтобы
подписывать
пакеты при
помощи GPG, rpm
должен
быть
настроен
на запуск GPG
и иметь
возможность
находить
хранилище
ключей с
требуемыми
ключами. По
умолчанию
rpm
использует
те же
соглашения,
что и GPG для
обнаружения
хранилища
ключей, а
именно
переменную
среды $GNUPGHOME.
Если ваше
хранилище
ключей
располагается
не там, где
его
ожидает
найти GPG, вам
потребуется
определить
в макросе
%_gpg_path
расположение
хранилища
ключей GPG.
Для
совместимости
со старыми
версиями GPG, PGP
и rpm следует
настраивать
только
подпись
пакетов V3 OpenPGP.
Могут быть
использованы
алгоритмы
проверки DSA
и RSA, хотя
предпочитается
DSA.
Если вам
требуется
подписывать
собственные
пакеты, вам
также
потребуется
создать
собственную
пару из
публичного
и
приватного
ключа (см.
руководство
по GPG). Вам
также
потребуется
настроить
rpm макрос
- %_gpg_name
- Имя
пользователя,
ключом
которого
будут
подписываться
ваши
пакеты.
Например,
для
использования
GPG для
подписи
пакетов от
имени “John Doe
<jdoe@foo.com>” из
хранилища
ключей
расположенного
в /etc/rpm/.gpg,
используя
программу
/usr/bin/gpg, вам
потребуется
включить
строки
-
%_gpg_path /etc/rpm/.gpg %_gpg_name John Doe <jdoe@foo.com> %_gpgbin /usr/bin/gpg
в файл
настройки
макросов.
Для
общесистемной
настройки
используется
/etc/rpm/macros и ~/.rpmmacros для
конкретного
пользователя.
ОПЦИИ
ПЕРЕСТРОЙКИ
БАЗЫ
ДАННЫХ
Общая
форма
команды
перестройки
базы
данных rpm
приведена
ниже
rpm {–initdb|–rebuilddb} [-v] [–dbpath
DIRECTORY] [–root DIRECTORY]
Используйте
–initdb для
создания
новой базы
данных и –rebuilddb
для
перестройки
индексов
базы
данных на
основании
заголовков
установленных
пакетов.
SHOWRC
Команда
rpm –showrc
показывает
значения,
которые rpm
будет
использовать
для всех
опций,
установленные
в
конфигурационных
файлах rpmrc и
macros.
ОПЦИИ FTP/HTTP
rpm может
выступать
в качестве
клиента FTP
и/или HTTP,
таким
образом
пакеты
могут быть
опрошены
или
установлены
из
Интернет.
Пакеты для
операций
установки,
обновления
или
запроса
могут быть
указаны в
виде
адреса ftp
или http URL:
ftp://USER:PASSWORD@HOST:PORT/path/to/package.rpm
Если
параметр
:PASSWORD будет
опущен,
пароль
будет
запрошен
(один раз
для пары
пользователь/узел).
Если
опущены
оба
параметра
(user и password), будет
выполнено
анонимное
подключение
ftp. Во всех
случаях
используется
пассивный
(PASV) режим
передачи
файлов ftp.
rpm
допускает
следующие
опции для
адресов ftp URL:
- –ftpproxy
HOST - Узел HOST
будет
использован
как
прокси-сервер
для всех
операций
передачи
данных ftp,
что
позволяет
работать с
ftp через
межсетевые
экраны, на
которых
запущена
служба
прокси. Эта
опция
может быть
также
указана
при
настройке
макроса
%_ftpproxy. - –ftpport
PORT - Номер TCP
порта PORT
будет
использован
для ftp
подключения
к ftp
прокси-серверу
вместо
порта по
умолчанию.
Эта опция
может быть
также
указана
при
настройке
макроса
%_ftpport.
rpm
допускает
следующие
опции для
адресов http
URL:
- –httpproxy
HOST - Узел HOST
будет
использован
как
прокси-сервер
для всех
операций
передачи
данных http.
Эта опция
может быть
также
указана
при
настройке
макроса
%_httpproxy. - –httpport
PORT - Номер TCP
порта PORT
будет
использован
для http
подключения
к http
прокси-серверу
вместо
порта по
умолчанию.
Эта опция
может быть
также
указана
при
настройке
макроса
%_httpport.
ВОПРОСЫ
СОВМЕСТИМОСТИ
Выполнение
rpmbuild
Режимы
сборки rpm
теперь
вынесены в
программу
/usr/bin/rpmbuild. Не
смотря на
это,
совместимость,
обеспечиваемая
при помощи
popt
псевдонимов,
указанных
ниже,
является
адекватной,
но не
совершенной.
Поэтому
совместимость
режимов
сборки
через
псевдонимы
popt удалена
из rpm.
Установите
пакет rpmbuild и
просмотрите
документацию
в rpmbuild(8) по
всем
режимам
сборки rpm,
ранее
приведенную
здесь в rpm(8).
Добавьте
следующие
строки в /etc/popt,
если вы
желаете
вызывать
rpmbuild из
командной
строки rpm:
-
rpm exec --bp rpmb -bp rpm exec --bc rpmb -bc rpm exec --bi rpmb -bi rpm exec --bl rpmb -bl rpm exec --ba rpmb -ba rpm exec --bb rpmb -bb rpm exec --bs rpmb -bs rpm exec --tp rpmb -tp rpm exec --tc rpmb -tc rpm exec --ti rpmb -ti rpm exec --tl rpmb -tl rpm exec --ta rpmb -ta rpm exec --tb rpmb -tb rpm exec --ts rpmb -ts rpm exec --rebuild rpmb --rebuild rpm exec --recompile rpmb --recompile rpm exec --clean rpmb --clean rpm exec --rmsource rpmb --rmsource rpm exec --rmspec rpmb --rmspec rpm exec --target rpmb --target rpm exec --short-circuit rpmb --short-circuit
ФАЙЛЫ
Конфигурация
rpmrc
-
/usr/lib/rpm/rpmrc /usr/lib/rpm/<vendor>/rpmrc /etc/rpmrc ~/.rpmrc
Конфигурация
макросов
-
/usr/lib/rpm/macros /usr/lib/rpm/<vendor>/macros /etc/rpm/macros ~/.rpmmacros
База
данных
-
/var/lib/rpm/Basenames /var/lib/rpm/Conflictname /var/lib/rpm/Dirnames /var/lib/rpm/Filemd5s /var/lib/rpm/Group /var/lib/rpm/Installtid /var/lib/rpm/Name /var/lib/rpm/Packages /var/lib/rpm/Providename /var/lib/rpm/Provideversion /var/lib/rpm/Pubkeys /var/lib/rpm/Removed /var/lib/rpm/Requirename /var/lib/rpm/Requireversion /var/lib/rpm/Sha1header /var/lib/rpm/Sigmd5 /var/lib/rpm/Triggername
Временные
файлы
/var/tmp/rpm*
СМОТРИ
ТАКЖЕ
-
popt(3), rpm2cpio(8), rpmbuild(8),
http://www.rpm.org/ <URL:http://www.rpm.org/>
АВТОРЫ
-
Marc Ewing <marc@redhat.com> Jeff Johnson <jbj@redhat.com> Erik Troan <ewt@redhat.com>
ПЕРЕВОД
-
Андрей Мартынов <andrewm@inventa.ru>
rpm – Man Page
RPM Package Manager
Examples (TL;DR)
- Show version of httpd package:
rpm --query httpd
- List versions of all matching packages:
rpm --query --all 'mariadb*'
- Forcibly install a package regardless of currently installed versions:
rpm --upgrade package_name.rpm --force
- Identify owner of a file and show version of the package:
rpm --query --file /etc/postfix/main.cf
- List package-owned files:
rpm --query --list kernel
- Show scriptlets from an RPM file:
rpm --query --package --scripts package_name.rpm
- Show changed, missing and/or incorrectly installed files of matching packages:
rpm --verify --all 'php-*'
- Display the changelog of a specific package:
rpm --query --changelog package_name
tldr.sh
Synopsis
Querying and Verifying Packages
rpm {-q|–query} [select-options] [query-options]
rpm –querytags
rpm {-V|–verify} [select-options] [verify-options]
Installing, Upgrading, and Removing Packages
rpm {-i|–install} [install-options] PACKAGE_FILE …
rpm {-U|–upgrade} [install-options] PACKAGE_FILE …
rpm {-F|–freshen} [install-options] PACKAGE_FILE …
rpm {–reinstall} [install-options] PACKAGE_FILE …
rpm {-e|–erase} [–allmatches] [–justdb] [–nodb] [–nodeps] [–noscripts] [–notriggers] [–test] PACKAGE_NAME …
Miscellaneous
rpm –showrc
rpm –restore [select-options]
select-options
[PACKAGE_NAME] [-a,–all [SELECTOR]] [-f,–file FILE] [–path PATH] [-g,–group GROUP] [-p,–package PACKAGE_FILE] [–hdrid SHA1] [–pkgid MD5] [–tid TID] [–querybynumber HDRNUM] [–triggeredby PACKAGE_NAME] [–whatprovides CAPABILITY] [–whatrequires CAPABILITY] [–whatrecommends CAPABILITY] [–whatsuggests CAPABILITY] [–whatsupplements CAPABILITY] [–whatenhances CAPABILITY] [–whatobsoletes CAPABILITY] [–whatconflicts CAPABILITY]
query-options
General: [–changelog] [–changes] [–dupes] [-i,–info] [–last] [–qf,–queryformat QUERYFMT] [–xml]
Dependencies: [–conflicts] [–enhances] [–obsoletes] [–provides] [–recommends] [-R,–requires] [–suggests] [–supplements]
Files: [-c,–configfiles] [-d,–docfiles] [–dump] [–fileclass] [–filecolor] [–fileprovide][–filerequire] [–filecaps] [–filesbypkg] [-l,–list] [-s,–state] [–noartifact] [–noghost] [–noconfig]
Scripts and triggers: [–filetriggers] [–scripts] [–triggers,–triggerscripts]
verify-options
[–nodeps] [–nofiles] [–noscripts] [–nodigest] [–nosignature] [–nolinkto] [–nofiledigest] [–nosize] [–nouser] [–nogroup] [–nomtime] [–nomode] [–nordev] [–nocaps]
install-options
[–allfiles] [–badreloc] [–excludepath OLDPATH] [–excludedocs] [–force] [-h,–hash] [–ignoresize] [–ignorearch] [–ignoreos] [–includedocs] [–justdb] [–nodb] [–nodeps] [–nodigest] [–noplugins] [–nocaps] [–noorder] [–noverify] [–nosignature] [–noscripts] [–notriggers] [–oldpackage] [–percent] [–prefix NEWPATH] [–relocate OLDPATH=NEWPATH] [–replacefiles] [–replacepkgs] [–test]
Description
rpm is a powerful Package Manager, which can be used to build, install, query, verify, update, and erase individual software packages. A package consists of an archive of files and meta-data used to install and erase the archive files. The meta-data includes helper scripts, file attributes, and descriptive information about the package. Packages come in two varieties: binary packages, used to encapsulate software to be installed, and source packages, containing the source code and recipe necessary to produce binary packages.
One of the following basic modes must be selected: Query, Verify, Install/Upgrade/Freshen/Reinstall, Uninstall, Set Owners/Groups, Show Querytags, and Show Configuration.
General Options
These options can be used in all the different modes.
- -?, –help
-
Print a longer usage message than normal.
- –version
-
Print a single line containing the version number of rpm being used.
- –quiet
-
Print as little as possible – normally only error messages will be displayed.
- -v, –verbose
-
Print verbose information – normally routine progress messages will be displayed.
- -vv
-
Print lots of ugly debugging information.
- –rcfile FILELIST
-
Replace the list of configuration files to be read. Each of the files in the colon separated FILELIST is read sequentially by rpm for configuration information. Only the first file in the list must exist, and tildes will be expanded to the value of $HOME. The default FILELIST is /usr/lib/rpm/rpmrc:/usr/lib/rpm/redhat/rpmrc:/etc/rpmrc:~/.rpmrc.
- –load FILE
-
Load an individual macro file.
- –macros FILELIST
-
Replace the list of macro files to be loaded. Each of the files in the colon separated FILELIST is read sequentially by rpm for macro definitions. Only the first file in the list must exist, and tildes will be expanded to the value of $HOME. The default FILELIST is /usr/lib/rpm/macros:/usr/lib/rpm/macros.d/macros.*:/usr/lib/rpm/platform/%{_target}/macros:/usr/lib/rpm/fileattrs/*.attr:/usr/lib/rpm/redhat/macros:/etc/rpm/macros.*:/etc/rpm/macros:/etc/rpm/%{_target}/macros:~/.rpmmacros
- –pipe CMD
-
Pipes the output of rpm to the command CMD.
- –dbpath DIRECTORY
-
Use the database in DIRECTORY rather than the default path /var/lib/rpm
- –root DIRECTORY
-
Use the file system tree rooted at DIRECTORY for all operations. Note that this means the database within DIRECTORY will be used for dependency checks and any scriptlet(s) (e.g. %post if installing, or %prep if building, a package) will be run after a chroot(2) to DIRECTORY.
Note that rpm assumes the environment inside the root is set up by the caller, such as any mounts needed for the operation inside the root directory.
- -D, –define=’MACRO EXPR‘
-
Defines MACRO with value EXPR.
- –undefine=’MACRO‘
-
Undefines MACRO.
- -E, –eval=’EXPR‘
-
Prints macro expansion of EXPR.
More – less often needed – options can be found on the rpm-misc(8) man page.
Install and Upgrade Options
In these options, PACKAGE_FILE can be either rpm binary file or ASCII package manifest (see Package Selection Options), and may be specified as an ftp or http URL, in which case the package will be downloaded before being installed. See FTP/HTTP Options for information on rpm‘s ftp and http client support.
The general form of an rpm install command is
rpm {-i|–install} [install-options] PACKAGE_FILE …
This installs a new package.
The general form of an rpm upgrade command is
rpm {-U|–upgrade} [install-options] PACKAGE_FILE …
This upgrades or installs the package currently installed to a newer version. This is the same as install, except all other version(s) of the package are removed after the new package is installed.
rpm {-F|–freshen} [install-options] PACKAGE_FILE …
This will upgrade packages, but only ones for which an earlier version is installed.
The general form of an rpm reinstall command is
rpm {–reinstall} [install-options] PACKAGE_FILE …
This reinstalls a previously installed package.
- –allfiles
-
Installs or upgrades all the missingok files in the package, regardless if they exist.
- –badreloc
-
Used with –relocate, permit relocations on all file paths, not just those OLDPATH‘s included in the binary package relocation hint(s).
- –excludepath OLDPATH
-
Don’t install files whose name begins with OLDPATH.
- –excludeartifacts
-
Don’t install any files which are marked as artifacts, such as build-id links.
- –excludedocs
-
Don’t install any files which are marked as documentation (which includes man pages and texinfo documents).
- –force
-
Same as using –replacepkgs, –replacefiles, and –oldpackage.
- -h, –hash
-
Print 50 hash marks as the package archive is unpacked. Use with -v|–verbose for a nicer display.
- –ignoresize
-
Don’t check mount file systems for sufficient disk space before installing this package.
- –ignorearch
-
Allow installation or upgrading even if the architectures of the binary package and host don’t match.
- –ignoreos
-
Allow installation or upgrading even if the operating systems of the binary package and host don’t match.
- –includedocs
-
Install documentation files. This is the default behavior.
- –justdb
-
Update only the database, not the filesystem.
- –nodb
-
Update only the filesystem, not the database.
- –nodigest
-
Don’t verify package or header digests when reading.
- –nomanifest
-
Don’t process non-package files as manifests.
- –nosignature
-
Don’t verify package or header signatures when reading.
- –nodeps
-
Don’t do a dependency check before installing or upgrading a package.
- –nocaps
-
Don’t set file capabilities.
- –noorder
-
Don’t reorder the packages for an install. The list of packages would normally be reordered to satisfy dependencies.
- –noverify
-
Don’t perform verify package files prior to installation.
- –noplugins
-
Do not load and execute plugins.
- –noscripts, –nopre, –nopost, –nopreun, –nopostun, –nopretrans, –noposttrans
-
Don’t execute the scriptlet of the same name. The –noscripts option is equivalent to
–nopre –nopost –nopreun –nopostun –nopretrans –noposttrans
and turns off the execution of the corresponding %pre, %post, %preun, %postun %pretrans, and %posttrans scriptlet(s).
- –notriggers, –notriggerin, –notriggerun, –notriggerprein, –notriggerpostun
-
Don’t execute any trigger scriptlet of the named type. The –notriggers option is equivalent to
–notriggerprein –notriggerin –notriggerun –notriggerpostun
and turns off execution of the corresponding %triggerprein, %triggerin, %triggerun, and %triggerpostun scriptlet(s).
- –oldpackage
-
Allow an upgrade to replace a newer package with an older one.
- –percent
-
Print percentages as files are unpacked from the package archive. This is intended to make rpm easy to run from other tools.
- –prefix NEWPATH
-
For relocatable binary packages, translate all file paths that start with the installation prefix in the package relocation hint(s) to NEWPATH.
- –relocate OLDPATH=NEWPATH
-
For relocatable binary packages, translate all file paths that start with OLDPATH in the package relocation hint(s) to NEWPATH. This option can be used repeatedly if several OLDPATH‘s in the package are to be relocated.
- –replacefiles
-
Install the packages even if they replace files from other, already installed, packages.
- –replacepkgs
-
Install the packages even if some of them are already installed on this system.
- –test
-
Do not install the package, simply check for and report potential conflicts.
Erase Options
The general form of an rpm erase command is
rpm {-e|–erase} [–allmatches] [–justdb] [–nodeps] [–noscripts] [–notriggers] [–test] PACKAGE_NAME …
The following options may also be used:
- –allmatches
-
Remove all versions of the package which match PACKAGE_NAME. Normally an error is issued if PACKAGE_NAME matches multiple packages.
- –justdb
-
Update only the database, not the filesystem.
- –nodeps
-
Don’t check dependencies before uninstalling the packages.
- –noscripts, –nopreun, –nopostun
-
Don’t execute the scriptlet of the same name. The –noscripts option during package erase is equivalent to
–nopreun –nopostun
and turns off the execution of the corresponding %preun, and %postun scriptlet(s).
- –notriggers, –notriggerun, –notriggerpostun
-
Don’t execute any trigger scriptlet of the named type. The –notriggers option is equivalent to
–notriggerun –notriggerpostun
and turns off execution of the corresponding %triggerun, and %triggerpostun scriptlet(s).
- –test
-
Don’t really uninstall anything, just go through the motions. Useful in conjunction with the -vv option for debugging.
Query Options
The general form of an rpm query command is
rpm {-q|–query} [select-options] [query-options]
You may specify the format that package information should be printed in. To do this, you use the
–qf|–queryformat QUERYFMT
option, followed by the QUERYFMT format string. Query formats are modified versions of the standard printf(3) formatting. The format is made up of static strings (which may include standard C character escapes for newlines, tabs, and other special characters (not including )) and printf(3) type formatters. As rpm already knows the type to print, the type specifier must be omitted however, and replaced by the name of the header tag to be printed, enclosed by {} characters. Tag names are case insensitive, and the leading RPMTAG_ portion of the tag name may be omitted as well.
Alternate output formats may be requested by following the tag with :typetag. Currently, the following types are supported:
- :armor
-
Wrap a public key in ASCII armor.
- :arraysize
-
Display number of elements in array tags.
- :base64
-
Encode binary data using base64.
- :date
-
Use strftime(3) “%c” format.
- :day
-
Use strftime(3) “%a %b %d %Y” format.
- :depflags
-
Format dependency comparison operator.
- :deptype
-
Format dependency type.
- :expand
-
Perform macro expansion.
- :fflags
-
Format file flags.
- :fstate
-
Format file state.
- :fstatus
-
Format file verify status.
- :hex
-
Format in hexadecimal.
- :octal
-
Format in octal.
- :humaniec
-
Human readable number (in IEC 80000). The suffix K = 1024, M = 1048576, …
- :humansi
-
Human readable number (in SI). The suffix K = 1000, M = 1000000, …
- :perms
-
Format file permissions.
- :pgpsig
-
Display signature fingerprint and time.
- :shescape
-
Escape single quotes for use in a script.
- :string
-
Display string format. (default)
- :tagname
-
Display tag name.
- :tagnum
-
Display tag number.
- :triggertype
-
Display trigger suffix.
- :vflags
-
File verification flags.
- :xml
-
Wrap data in simple xml markup.
For example, to print only the names of the packages queried, you could use %{NAME} as the format string. To print the packages name and distribution information in two columns, you could use %-30{NAME}%{DISTRIBUTION}. rpm will print a list of all of the tags it knows about when it is invoked with the –querytags argument.
There are three subsets of options for querying: package selection, file selection and information selection.
Package Selection Options
- PACKAGE_NAME
-
Query installed package named PACKAGE_NAME. To specify the package more precisely the package name may be followed by the version or version and release both separated by a dash or an architecture name separated by a dot. See the output of rpm -qa or rpm -qp PACKAGE_FILE as an example.
- -a, –all [SELECTOR]
-
Query all installed packages.
An optional SELECTOR in the form of tag=pattern can be provided to narrow the selection, for example name=”b*” to query packages whose name starts with “b”.
- –dupes
-
List duplicated packages.
- -f, –file FILE
-
Query package owning installed FILE.
- –filecaps
-
List file names with POSIX1.e capabilities.
- –fileclass
-
List file names with their classes (libmagic classification).
- –filecolor
-
List file names with their colors (0 for noarch, 1 for 32bit, 2 for 64 bit).
- –fileprovide
-
List file names with their provides.
- –filerequire
-
List file names with their requires.
- -g, –group GROUP
-
Query packages with the group of GROUP.
- –hdrid SHA1
-
Query package that contains a given header identifier, i.e. the SHA1 digest of the immutable header region.
- -p, –package PACKAGE_FILE
-
Query an (uninstalled) package PACKAGE_FILE. The PACKAGE_FILE may be specified as an ftp or http style URL, in which case the package header will be downloaded and queried. See FTP/HTTP Options for information on rpm‘s ftp and http client support. The PACKAGE_FILE argument(s), if not a binary package, will be interpreted as an ASCII package manifest unless –nomanifest option is used. In manifests, comments are permitted, starting with a ‘#’, and each line of a package manifest file may include white space separated glob expressions, including URL’s, that will be expanded to paths that are substituted in place of the package manifest as additional PACKAGE_FILE arguments to the query.
- –path PATH
-
Query package(s) owning PATH, whether the file is installed or not. Multiple packages may own a PATH, but the file is only owned by the package installed last.
- –pkgid MD5
-
Query package that contains a given package identifier, i.e. the MD5 digest of the combined header and payload contents.
- –querybynumber HDRNUM
-
Query the HDRNUMth database entry directly; this is useful only for debugging.
- –specfile SPECFILE
-
Parse and query SPECFILE as if it were a package. Although not all the information (e.g. file lists) is available, this type of query permits rpm to be used to extract information from spec files without having to write a specfile parser.
- –tid TID
-
Query package(s) that have a given TID transaction identifier. A unix time stamp is currently used as a transaction identifier. All package(s) installed or erased within a single transaction have a common identifier.
- –triggeredby PACKAGE_NAME
-
Query packages that are triggered by package(s) PACKAGE_NAME.
- –whatobsoletes CAPABILITY
-
Query all packages that obsolete CAPABILITY for proper functioning.
- –whatprovides CAPABILITY
-
Query all packages that provide the CAPABILITY capability.
- –whatrequires CAPABILITY
-
Query all packages that require CAPABILITY for proper functioning.
- –whatconflicts CAPABILITY
-
Query all packages that conflict with CAPABILITY.
- –whatrecommends CAPABILITY
-
Query all packages that recommend CAPABILITY.
- –whatsuggests CAPABILITY
-
Query all packages that suggest CAPABILITY.
- –whatsupplements CAPABILITY
-
Query all packages that supplement CAPABILITY.
- –whatenhances CAPABILITY
-
Query all packages that enhance CAPABILITY.
Package Query Options
- –changelog
-
Display change information for the package.
- –changes
-
Display change information for the package with full time stamps.
- –conflicts
-
List capabilities this package conflicts with.
- –dump
-
Dump file information as follows (implies -l):
path size mtime digest mode owner group isconfig isdoc rdev symlink
- –enhances
-
List capabilities enhanced by package(s)
- –filesbypkg
-
List all the files in each selected package.
- –filetriggers
-
List filetrigger scriptlets from package(s).
- -i, –info
-
Display package information, including name, version, and description. This uses the –queryformat if one was specified.
- –last
-
Orders the package listing by install time such that the latest packages are at the top.
- -l, –list
-
List files in package.
- –obsoletes
-
List packages this package obsoletes.
- –provides
-
List capabilities this package provides.
- –recommends
-
List capabilities recommended by package(s)
- -R, –requires
-
List capabilities on which this package depends.
- –suggests
-
List capabilities suggested by package(s)
- –supplements
-
List capabilities supplemented by package(s)
- –scripts
-
List the package specific scriptlet(s) that are used as part of the installation and uninstallation processes.
- -s, –state
-
Display the states of files in the package (implies -l). The state of each file is one of normal, not installed, or replaced.
- –triggers, –triggerscripts
-
Display the trigger scripts, if any, which are contained in the package. –xml Format package headers as XML.
File Selection Options
- -A, –artifactfiles
-
Only include artifact files (implies -l).
- -c, –configfiles
-
Only include configuration files (implies -l).
- -d, –docfiles
-
Only include documentation files (implies -l).
- -L, –licensefiles
-
Only include license files (implies -l).
- –noartifact
-
Exclude artifact files.
- –noconfig
-
Exclude config files.
- –noghost
-
Exclude ghost files.
Verify Options
The general form of an rpm verify command is
rpm {-V|–verify} [select-options] [verify-options]
Verifying a package compares information about the installed files in the package with information about the files taken from the package metadata stored in the rpm database. Among other things, verifying compares the size, digest, permissions, type, owner and group of each file. Any discrepancies are displayed. Files that were not installed from the package, for example, documentation files excluded on installation using the “–excludedocs” option, will be silently ignored.
The package and file selection options are the same as for package querying (including package manifest files as arguments). Other options unique to verify mode are:
- –nodeps
-
Don’t verify dependencies of packages.
- –nodigest
-
Don’t verify package or header digests when reading.
- –nofiles
-
Don’t verify any attributes of package files.
- –noscripts
-
Don’t execute the %verifyscript scriptlet (if any).
- –nosignature
-
Don’t verify package or header signatures when reading.
- –nolinkto
- –nofiledigest (formerly –nomd5)
- –nosize
- –nouser
- –nogroup
- –nomtime
- –nomode
- –nordev
-
Don’t verify the corresponding file attribute.
- –nocaps
-
Don’t verify file capabilities.
The format of the output is a string of 9 characters, a possible attribute marker:
c %config configuration file. d %doc documentation file. g %ghost file (i.e. the file contents are not included in the package payload). l %license license file. r %readme readme file.
from the package header, followed by the file name. Each of the 9 characters denotes the result of a comparison of attribute(s) of the file to the value of those attribute(s) recorded in the database. A single “.” (period) means the test passed, while a single “?” (question mark) indicates the test could not be performed (e.g. file permissions prevent reading). Otherwise, the (mnemonically emBoldened) character denotes failure of the corresponding –verify test:
S file Size differs M Mode differs (includes permissions and file type) 5 digest (formerly MD5 sum) differs D Device major/minor number mismatch L readLink(2) path mismatch U User ownership differs G Group ownership differs T mTime differs P caPabilities differ
Miscellaneous Commands
- rpm –showrc
-
shows the values rpm will use for all of the options are currently set in rpmrc and macros configuration file(s).
- rpm –setperms | –setugids | –setcaps PACKAGE_NAME
-
obsolete aliases for –restore
- rpm –restore [select-options]
-
The option restores file metadata such as timestamp, owner, group, permissions and capabilities of files in packages.
FTP/HTTP Options
rpm can act as an FTP and/or HTTP client so that packages can be queried or installed from the internet. Package files for install, upgrade, and query operations may be specified as an ftp or http style URL:
http://HOST[:PORT]/path/to/package.rpm
ftp://[USER:PASSWORD]@HOST[:PORT]/path/to/package.rpm
If both the user and password are omitted, anonymous ftp is used.
rpm allows the following options to be used with ftp URLs:
- rpm allows the following options to be used with
-
http and ftp URLs:
- –httpproxy HOST
-
The host HOST will be used as a proxy server for all http and ftp transfers. This option may also be specified by configuring the macro %_httpproxy.
- –httpport PORT
-
The TCP PORT number to use for the http connection on the proxy http server instead of the default port. This option may also be specified by configuring the macro %_httpport.
Legacy Issues
Executing rpmbuild
The build modes of rpm are now resident in the /usr/bin/rpmbuild executable. Install the package containing rpmbuild (usually rpm-build) and see rpmbuild(8) for documentation of all the rpm build modes.
Files
rpmrc Configuration
/usr/lib/rpm/rpmrc /usr/lib/rpm/<vendor>/rpmrc /etc/rpmrc ~/.rpmrc
Macro Configuration
/usr/lib/rpm/macros /usr/lib/rpm/<vendor>/macros /etc/rpm/macros ~/.rpmmacros
Database
/var/lib/rpm/Basenames /var/lib/rpm/Conflictname /var/lib/rpm/Dirnames /var/lib/rpm/Group /var/lib/rpm/Installtid /var/lib/rpm/Name /var/lib/rpm/Obsoletename /var/lib/rpm/Packages /var/lib/rpm/Providename /var/lib/rpm/Requirename /var/lib/rpm/Sha1header /var/lib/rpm/Sigmd5 /var/lib/rpm/Triggername
Temporary
/var/tmp/rpm*
See Also
rpm-misc(8), popt(3), rpm2cpio(8), rpmbuild(8), rpmdb(8), rpmkeys(8), rpmsign(8), rpmspec(8),
rpm –help – as rpm supports customizing the options via popt aliases it’s impossible to guarantee that what’s described in the manual matches what’s available.
http://www.rpm.org/ <URL:http://www.rpm.org/>
Referenced By
applydeltarpm(8), build(1), compat_digest.plug.1rrp(1), cpack-generators(7), daemon(7), debbuild(8), demofiles.plug.1rrp(1), demo.plug.1rrp(1), exclude_file.plug.1rrp(1), fedora-remove-old-gpg-keys(8), file2pacDep.plug.1rrp(1), mold(1), nodoc.plug.1rrp(1), rpm2archive(8), rpm2cpio(8), rpmbuild(8), rpmconf(8), rpmdb(8), rpmdeps(8), rpmfile(1), rpminspect(1), rpmkeys(8), rpmlua(8), rpm-ostree(1), rpmpeek(1), rpm-plugin-ima(8), rpm-plugin-prioreset(8), rpm-plugins(8), rpm-plugin-selinux(8), rpm-plugin-syslog(8), rpm-plugin-systemd-inhibit(8), rpmreaper(1), rpmrebuild(1), rpmrebuild_plugins(1), rpm_selinux(8), rpmsign(8), rpmspec(8), set_tag.plug.1rrp(1), uniq.plug.1rrp(1), un_prelink.plug.1rrp(1), unset_tag.plug.1rrp(1).
09 June 2002
Менеджер пакетов RPM (RPM) — это мощная система управления пакетами, используемая Red Hat Linux и ее производными, такими как CentOS и Fedora. RPM также относится к команде rpm
и формату файла .rpm
. Пакет RPM состоит из архива файлов и метаданных, включая такую информацию, как зависимости и место установки.
В этом руководстве мы поговорим о том, как использовать команду rpm
для установки, обновления, удаления, проверки, запроса и иного управления пакетами RPM.
Установка, обновление и удаление пакетов RPM
Обычно для установки нового пакета в дистрибутивах на основе Red Hat вы используете команды yum
или dnf
, которые могут разрешить и установить все зависимости пакетов.
Вы всегда должны предпочитать использовать yum
или dnf
rpm
при установке, обновлении и удалении пакетов.
Перед установкой пакета RPM вы должны сначала загрузить пакет в свою систему с помощью браузера или инструментов командной строки, таких как curl
или wget
.
При установке пакетов RPM убедитесь, что они созданы для вашей системной архитектуры и вашей версии CentOS . Будьте особенно осторожны при замене или обновлении важных системных пакетов, таких как glibc, systemd или других служб и библиотек, которые необходимы для правильного функционирования вашей системы.
Только root или пользователи с привилегиями sudo могут устанавливать или удалять пакеты RPM.
Чтобы установить пакет RPM с rpm
, используйте параметр -i
, за которым следует имя пакета:
sudo rpm -ivh package.rpm
Параметр -v
указывает rpm
показывать подробный вывод, а параметр -h
показывает индикатор выполнения, отмеченный хешем.
Вы можете пропустить загрузку и указать URL-адрес RPM-пакета команде rpm
:
sudo rpm -ivh https://example.com/package.rpm
Чтобы обновить пакет RPM, используйте параметр -U
. Если пакет не установлен, он будет установлен:
sudo rpm -Uvh package.rpm
Если пакет, который вы устанавливаете или обновляете, зависит от других пакетов, которые в настоящее время не установлены, rpm
отобразит список всех недостающих зависимостей. Вам придется скачать и установить все зависимости вручную.
Чтобы установить пакет RPM без установки всех необходимых зависимостей в системе, используйте параметр --nodeps
:
sudo rpm -Uvh --nodeps package.rpm
Чтобы удалить (стереть) пакет RPM, используйте параметр -e
:
sudo rpm -e package.rpm
Параметр --nodeps
также полезен, когда вы хотите удалить пакет, не удаляя его зависимости:
sudo rpm -evh --nodeps package.rpm
Параметр --test
указывает rpm
запускать команду установки или удаления, фактически ничего не делая. Он только показывает, будет ли команда работать или нет:
sudo rpm -Uvh --test package.rpm
Запрос пакетов RPM
Параметр -q
указывает команде rpm
выполнить запрос.
Чтобы запросить (найти), установлен ли определенный пакет, передайте имя пакета команде rpm -q
. Следующая команда покажет вам, установлен ли в системе пакет OpenJDK 11 :
sudo rpm -q java-11-openjdk-devel
Если пакет установлен, вы увидите что-то вроде этого:
java-11-openjdk-devel-11.0.4.11-0.el8_0.x86_64
Передайте -i
чтобы получить больше информации о запрошенном пакете:
sudo rpm -qi java-11-openjdk-devel
Чтобы получить список всех файлов в установленном пакете RPM:
sudo rpm -ql package
Если вы хотите узнать, к какому установленному пакету принадлежит конкретный файл, введите:
sudo rpm -qf /path/to/file
Чтобы получить список всех установленных пакетов в вашей системе, используйте параметр -a
:
sudo rpm -qa
Проверка пакетов RPM
При проверке пакета команда rpm
проверяет, существует ли каждый файл, установленный пакетом, в системе, дайджест файла, право собственности, разрешения и т. Д.
Чтобы проверить установленный пакет, используйте параметр -V
. Например, чтобы проверить пакет openldap, вы должны запустить:
sudo rpm -V openldap-2.4.46-9.el8.x86_64
Если проверка прошла успешно, команда не выведет никаких результатов. В противном случае, если некоторые из проверок не пройдут, отобразится символ, указывающий на неудачный тест.
Например, следующий результат показывает, что mTime файла был изменен («T»):
.......T. c /etc/openldap/ldap.conf
Обратитесь к странице руководства RMP о том, что означает каждый символ.
Чтобы проверить все установленные пакеты rpm, выполните следующую команду:
sudo rpm -Va
Выводы
rpm
— это низкоуровневый инструмент командной строки для установки, запроса, проверки, обновления и удаления пакетов RMP. При установке пакетов RPM следует предпочесть использование yum
или dnf
поскольку они автоматически разрешают все зависимости за вас.
Для получения дополнительных сведений обо всех доступных параметрах команд введите в терминале man rpm
или посетите веб-сайт RPM.org .
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Introduction to rpm command
RPM (Red Hat Package Manager) is an open-source package management tool in RHEL based systems such as RHEL, CentOS, and Fedora. You can install, update, remove, or verify RPM packages with this tool. RPM only works with .rpm files, so you need to have a .rpm file in your system. The .rpm file stores the installation packages of RPM-based Linux distribution.
ALSO READ: lvremove command examples in Linux [Cheat Sheet]
Different examples to use rpm command
Since you will need to have .rpm files, you can download them from here. You can also use the dnf
command to download the rpm package using this command.
$ sudo dnf install package_name --downloadonly --downloaddir=DIR_PATH
You can find our detailed article on dnf at 25+ DNF command practical examples in Linux.
In this article, we will learn how to use rpm
commands to manage the RPM packages on the system.
1. rpm command to install an RPM package
You can use -i
or --install
option to install an RPM package on your system. The RPM package must be available in your workstation.
$ sudo rpm -i rpm_filename
OR
$ sudo rpm --install rpm_filename
Sample Output:
In the following example, we are installing single rpm. If this rpm has any dependency over other rpm then that must be manually handled by downloading that rpm and installing them both together or else the installation will fail with dependency error.
Here,
- -v: To display the verbose output
- -h: To print the hash symbol progress bar
2. Check an installed RPM package with rpm command
You can use -q
option to check whether an RPM package is installed in your system or not.
$ sudo rpm -q package_name
Sample Output:
ALSO READ: How to PROPERLY apply chmod recursively? [SOLVED]
As you can see, iotop is installed in our system. The package name that you provide may be incorrect, so you can also try the following command
$ sudo rpm -qa | grep package_name
This command can also help you check if the provided package is installed or not.
3. rpm command to upgrade an RPM package
-U
or --upgrade
option allows you to upgrade any RPM package to the latest version. This is the same as install, except all other version(s) of the package are removed after the new package is installed.
$ sudo rpm -U rpm_filename
OR
$ sudo rpm --upgrade rpm_filename
Sample Output:
4. Remove an RPM package with rpm command
You can remove an installed package from your system with -e
or --erase
option.
$ sudo rpm -e package_name
OR
$ sudo rpm --erase package_name
Sample Output:
In some cases, this command fails to remove the package from the system due to unresolved dependencies. So, the best way to remove RPM packages and their dependencies is by using yum
or dnf
command.
5. Check dependencies of an RPM package using rpm command
This command allows you to check the dependencies of an RPM package on the system.
$ sudo rpm -qpR rpm_filename
Sample Output:
Here,
- -q: To query an RPM package
- -p: To query an uninstalled package
- -R: To list capabilities on which the package depends
ALSO READ: Rmmod Command in Linux
6. rpm command to print the information of an RPM package
With the help of this command, you can get the information of an RPM package on your system.
$ sudo rpm -qip rpm_filename
Sample Output:
7. rpm command to get information of an installed package
Sometimes, you may want to get the information of any installed packages on the system. In that case, you can use this command.
$ sudo rpm -qi package_name
Sample Output:
8. Install an RPM package without dependencies with rpm command
--nodeps
option allows you to install an RPM package without dependencies. It ignores the dependencies errors and forcefully installs an RPM package. Some programs may not work until you install the required dependencies.
$ sudo rpm -ivh --nodeps rpm_filename
Sample Output:
IMPORTANT NOTE:
This is strictly not recommended as this can potentially break your system for more complex rpms such as kernel, gcc etc.
9. rpm command to list all files of an installed RPM package
You can use this command to list all the files of an installed RPM package.
$ sudo rpm -ql package_name
Sample Output:
10. Remove an RPM package without dependencies using rpm command
You can also use --nodeps
option with the erase command to uninstall an RPM package without checking dependencies. It ignores all the dependencies errors and forcefully removes the package.
$ sudo rpm -ev --nodeps package_name
Sample Output:
ALSO READ: 10+ bzip2 command examples in Linux [Cheat Sheet]
Now, let’s check if the package is removed.
The package is removed, but the dependencies are still present in the system.
IMPORTANT NOTE:
This is strictly not recommended as this can potentially break your system for more complex rpms such as kernel, gcc.
11. List all installed RPM packages with rpm command
To view the list of all installed RPM packages in your system, you can use this command.
$ sudo rpm -qa
Sample Output:
12. List only recently installed RPM packages with rpm command
You can use this command to view the list of recently installed RPM packages on your system.
$ sudo rpm -qa --last
Sample Output:
13. Verify an RPM package with rpm command
-V
or --verify
option allows you to verify an RPM package against the rpm database. It compares the installed package information with package metadata stored in the rpm database. It also compares the size, digest, permissions, type, owner, and group of each file.
$ sudo rpm -Vp rpm_filename
OR
$ sudo rpm --verify -p rpm_filename
Sample Output:
14. rpm command to verify all RPM packages
You can use this command to verify all RPM packages.
$ sudo rpm -Va
Sample Output:
ALSO READ: 30+ awk examples for beginners / awk command tutorial in Linux/Unix
15. Query a file with rpm command
You can also query a file and find to which RPM package it belongs.
$ sudo rpm -qf [file_name or file_path]
Sample Output:
16. rpm command to check signatures in an RPM package
--checksig
option checks all the digests and signatures contained in an RPM package file. It is a useful command to verify the integrity and origin of the package is ok.
$ sudo rpm --checksig rpm_filename
Sample Output:
17. Import an RPM GPG key with rpm command
You can import a GPG key with --import
option. RPM GPG key files are located in the /etc/pki/rpm-gpg directory.
$ sudo rpm --import RPM-GPG-KEY_File
Sample Output:
You can list all imported GPG keys with the following command.
$ sudo rpm -qa gpg-pubkey*
Sample Output:
Conclusion
This article shows you the practical examples of rpm
command on RPM-based Linux distribution. rpm is a powerful package manager tool to install, remove, update, query, and verify RPM packages. We hope that you can now manage the RPM packages using rpm
command. If you have any questions, you can use the comment section below.
What’s Next
Rpmbuild | Create rpm package | Build rpm from source code
Further Reading
man page for rpm command
ALSO READ: 10+ cut command examples in Linux [Cheat Sheet]
RPM имеет пять основных режимов работы (не считая создания пакета): установка, удаление, обновление, анализ и проверка. Этот раздел содержит описание каждого режима. Чтобы получить полное описание всех подробностей и параметров, попробуйте выполнить rpm –help или обратиться к разделу 15.5 Дополнительные ресурсы.
15.2.1. Поиск RPM-пакетов
Прежде чем воспользоваться пакетами RPM, вы должны знать, где их найти. Поисковые машины в Интернете знают о множество хранилищ RPM, но если вы ищете пакеты RPM, созданные компанией Red Hat, обратитесь к следующим источникам:
-
Компакт-диски Red Hat Enterprise Linux
-
Страница обновлений Red Hat, расположенная по адресу https://www.redhat.com/en/services/support.
-
Сеть Red Hat Network — Подробнее о ней вы узнаете в главе 17 Red Hat Network
15.2.2. Установка
Обычно файлы, содержащие пакеты RPM, имеют имена вроде foo-1.0-1.i386.rpm. Имя файла включает название пакета (foo), версию (1.0), выпуск (1) и архитектуру (i386). Чтобы установить пакет, войдите в систему под именем root и введите в приглашении оболочки следующую команду:
rpm -Uvh foo-1.0-1.i386.rpm
Если установка пройдёт успешно, на экране появится следующее:
Preparing... ########################################### [100%] 1:foo ########################################### [100%]
Как вы видите, RPM выводит имя пакета, а затем, по мере установки пакета, последовательность символов «решётка», отражающую процесс установки.
При установке или обновлении пакета автоматически проверяется подпись пакета. Эта подпись подтверждает то, что пакет был подписан разработчиком и не был изменён. Например, если при проверке подписи происходит ошибка, вы получите примерно следующее сообщение:
error: V3 DSA signature: BAD, key ID 0352860f
Если это новая подпись только для заголовка появляется такое сообщение:
error: Header V3 DSA signature: BAD, key ID 0352860f
Если у вас не установлен ключ, подходящий для проверки подписи, сообщение об ошибке содержит слово NOKEY, например:
warning: V3 DSA signature: NOKEY, key ID 0352860f
За дополнительными сведениями о проверке подписи пакета обратитесь к разделу 15.3 Проверка подписи пакета.
Предупреждение | |
---|---|
Если вы устанавливаете пакет ядра, вместо этой команды следует использовать rpm -ivh. За подробностями обратитесь к главе 37 Обновление ядра вручную. |
Установка пакетов должна выполняться просто, но иногда вы можете встретить ошибки:
15.2.2.1. Пакет уже установлен
Если пакет той же версии уже установлен, вы увидите:
Preparing... ########################################### [100%] package foo-1.0-1 is already installed
Если версия пакета, который вы пытаетесь установить, совпадает с версией уже установленного, но вы, тем не менее, хотите установить пакет, вы можете указать параметр –replacepkgs и RPM проигнорирует эту ошибку:
rpm -ivh --replacepkgs foo-1.0-1.i386.rpm
Этот параметр полезен, если файлы, установленные из пакета RPM, были удалены или вы не хотите, чтобы были установлены оригинальные файлы конфигурации RPM.
15.2.2.2. Конфликтующие файлы
Если вы пытаетесь установить пакет, который содержит файл, установленный другим пакетом или более ранней версий того же пакета, на экране появляется сообщение:
Preparing... ########################################### [100%] file /usr/bin/foo from install of foo-1.0-1 conflicts with file from package bar-2.0.20
Чтобы RPM игнорировал эту ошибку, укажите параметр –replacefiles:
rpm -ivh --replacefiles foo-1.0-1.i386.rpm
15.2.2.3. Нарушенная зависимость
Пакеты RPM могут по сути зависеть от других пакетов, что означает, что для их нормальной работы необходимо установить другие пакеты. Если вы попытаетесь установить пакет с неразрешёнными зависимостями, вы увидите примерно следующее:
error: Failed dependencies: bar.so.2 is needed by foo-1.0-1 Suggested resolutions: bar-2.0.20-3.i386.rpm
Если вы устанавливаете пакет с набора компакт-дисков Red Hat Enterprise Linux CD-ROM, обычно вам предлагается название пакета, необходимого для разрешения зависимости. Найдите предлагаемый пакет(ы) на компакт-дисках Red Hat Enterprise Linux или на FTP-сайте Red Hat (или зеркале) и добавьте его в команду:
rpm -ivh foo-1.0-1.i386.rpm bar-2.0.20-3.i386.rpm
Если установка обоих пакетов прходит успешно, на экран выводится примерно следующее:
Preparing... ########################################### [100%] 1:foo ########################################### [ 50%] 2:bar ########################################### [100%]
Если система не предлагает пакет для разрешения зависимости, вы можете попробовать параметр –redhatprovides, чтобы определить, какой пакет содержит требуемый файл. Для использования этого параметра вам потребуется установить пакет rpmdb-redhat.
rpm -q --redhatprovides bar.so.2
Если пакет, содержащий bar.so.2, есть в установленной базе данных из пакета rpmdb-redhat, вы увидите название этого пакета:
bar-2.0.20-3.i386.rpm
Чтобы выполнить установку, нарушив зависимости (что не рекомендуется делать, так как пакет может работать некорректно), воспользуйтесь параметром –nodeps.
15.2.3. Удаление
Удаление пакета выполняется также просто, как и его установка. Введите в приглашении оболочки следующую команду:
rpm -e foo
Замечание | |
---|---|
Обратите внимание, здесь используется имя пакета foo, а не имя файла оригинального пакета foo-1.0-1.i386.rpm. Чтобы удалить пакет, замените foo действительным именем первоначального пакета. |
Вы можете столкнуться с нарушением зависимости при удалении пакета, если другой установленный пакет зависит от пакета, который вы пытаетесь удалить. Например:
error: Failed dependencies: foo is needed by (installed) bar-2.0.20-3.i386.rpm
Чтобы заставить RPM игнорировать эту ошибку и удалить пакет, что может привести к поломке пакета, зависящего от него, используйте параметр –nodeps.
15.2.4. Обновление
Обновление пакета похоже на его установку. Введите в приглашении оболочки следующую команду:
rpm -Uvh foo-2.0-1.i386.rpm
В процессе обновления пакета RPM автоматически удаляет все старые версии пакета foo. В действительности, вы можете всегда использовать параметр -U для установки пакетов, так как он работает, даже если предыдущая версия пакета не установлена.
Подсказка | |
---|---|
Не стоит использовать параметр -U для установки пакетов ядра, так как при этом RPM заменит предыдущий пакет ядра. Это не влияет на работающую систему, но если после следующей перезагрузки запустить новое ядро не удастся, никакого другого ядра для загрузки вместо него не будет. Параметр -i добавляет ядро в меню загрузчика GRUB (/etc/grub.conf). Подобным образом, при удалении старого, ненужного ядра, запись этого ядра удаляется из GRUB. |
Так как RPM выполняет умное обновление пакетов с файлами конфигурации, вам может встретиться подобное сообщение:
saving /etc/foo.conf as /etc/foo.conf.rpmsave
Это сообщение означает, что изменения файла конфигурации могут оказаться не совместимыми снизу вверх с новым файлом конфигурации, входящим в пакет, поэтому RPM сохранил ваш первоначальный файл и установил новый. Вы должны проанализировать различия между двумя файлами конфигурации и разобраться с ними как можно скорее, чтобы ваша система смогла продолжить нормальную работу.
Обновление в самом деле представляет собой комбинацию удаления и установки, поэтому во время обновления RPM вы можете встретить ошибки и удаления, и установки, плюс ещё одну. Если RPM считает, что вы пытаетесь обновить пакет с более старой версией, он сообщает примерно следующее:
package foo-2.0-1 (which is newer than foo-1.0-1) is already installed
Чтобы, несмотря на это, принудительно обновить пакет, укажите параметр –oldpackage:
rpm -Uvh --oldpackage foo-1.0-1.i386.rpm
15.2.5. Освежение
Освежение пакета похоже на его обновление. Введите в приглашении оболочки следующую команду:
rpm -Fvh foo-1.2-1.i386.rpm
Получив указание освежить пакет, RPM сравнивает версию пакетов, заданных в командной строке с версией пакетов, установленных в системе. Если в параметрах RPM указан пакет с версией новее установленного пакета, он обновляется до более новой версии. Однако, указание RPM освежить версию не будет работать, если пакет с таким именем не был установлен ранее. Этим данным параметр и отличается от параметра обновления, так как при обновлении пакеты устанавливаются вне зависимости от того, была ли установлена старая верия пакета.
RPM может выполнить эту операцию как для одного пакета, так и для групп пакетов. Если вы только что загрузили много разнообразных пакетов и хотите обновить только установленные в системе, «освежение» пакетов — именно то, что вам нужно. Если вы освежаете пакеты, перед использованием RPM вы можете не удалять ненужные пакеты из загруженной группы пакетов.
В этом случае выполните следующую команду:
rpm -Fvh *.rpm
RPM автоматически обновит только уже установленные пакеты.
15.2.6. Анализ
Чтобы обратиться к базе данных установленных пакетов, используйте команду rpm -q. Команда rpm -q foo выводит название пакета, версию и номер выпуска установленного пакета foo:
foo-2.0-1
Замечание | |
---|---|
Чтобы запросить информацию о пакете, замените foo действительным именем пакета. |
Вместо указания имени пакета используйте следующие параметры команды -q для указания запрашиваемого пакета (ов). Эти параметры называются Параметрами выбора пакета.
-
-a запрашивает все установленные пакеты.
-
-f <file> запрашивает пакет, к которому относится файл <file>. Указывая файл, вы должны определить полный путь к файлу (например, /bin/ls).
-
-p <packagefile> запрашивает пакет <packagefile>.
Указать параметры запроса можно разными способами. Следующие параметры определяют тип искомой информации. Они называются Параметрами запроса информации.
-
-i отображает информацию о пакете, включая имя, описание, выпуск, размер, дату сборки, дату установки, производителя и другую разнообразную информацию.
-
-l выводит список файлов, содержащихся в пакете.
-
-s выводит состояние всех файлов в пакете.
-
-d выводит список файлов, помеченных как документация (страницы man, info, файлы README, и т.д.).
-
-c выводит список файлов, помеченных как файлы конфигурации. Таковыми считаются файлы, изменяемые вами после установки при настройке пакета в вашей системе (например, sendmail.cf, passwd, inittab и т.д.).
Добавьте для параметров, выводящих списки файлов, команду -v и вы получите списки в знакомом формате ls -l.
15.2.7. Проверка
При проверке пакета информация о файлах, установленных из пакета, сравнивается с информацией из оригинального пакета. Помимо прочего, при такой проверке проверяется размер, сумма MD5, разрешения, тип, владелец и группа владельца каждого файла.
Проверку пакета выполняет команда rpm -V. Вы можете указать пакет, который хотите проверить, используя любой из перечисленных параметров выбора пакета. Простым примером проверки является команда rpm -V foo, которая проверяет, что все файлы пакета foo находятся там, куда они были изначально установлены. Например:
-
Чтобы проверить пакет, содержащий конкретный файл, выполните:
rpm -Vf /usr/bin/vim
-
Чтобы проверить ВСЕ установленные пакеты:
rpm -Va
-
Чтобы сравнить установленный пакет с файлом RPM-пакета:
rpm -Vp foo-1.0-1.i386.rpm
Эта команда может быть полезна, если вы сомневаетесь в целостности баз данных RPM.
Если проверка проходит успешно, никакие сообщения на экран не выводятся. В случае обнаружения каких-либо нарушений, вы увидите сообщения об этом. Для каждого несоответствия на экран будет выведена строка из восьми символов ( c обозначает файл конфигурации), а затем имя файла. Каждый из восьми символов обозначает результат сравнения одного атрибута файла со значением атрибута, записанного в базе данных RPM. Единственная точка (.) означает, что тест пройден. Следующие символы обозначают ошибки при выполнении определённых проверок:
-
5 — контрольная сумма MD5
-
S — размер
-
L — символическая ссылка
-
T — дата изменения файла
-
D — устройство
-
U — пользователь
-
G — группа
-
M — режим (включая разрешения и тип файла)
-
? — файл не удалось прочитать
Если вы увидели такие сообщения, вы должны решить, будете ли вы удалять или переустанавливать пакет, или исправлять проблему другим способом.