Основы RPM
Материал из RSU WiKi
Некоторые условия
В примерах команд мы будем использовать пакет package-1.rpm, если явно не указано иное. Если мы говорим, что пакет не установлен, значит он располагается в текущем каталоге. В противном случае, следует указать полный путь. Пакет может содержать скрипты, которые выполняются при установке или удалении пакета.
Простые манипуляции
|| Чтобы ... ||Нужно выполнить || || Импортировать GPG ключ для проверки пакетов || `# rpm --import RPM-GPG-KEY` || || Посмотреть информацию о пакете, который лежит в текущем каталоге || `$ rpm -qip package-1.rpm` || || Посмотреть список файлов из неустановленного пакета || `$ rpm -qlp package-1.rpm` || || Посмотреть скрипты %pre- %post- install (uninstall) || `$ rpm -qp --scripts package-1.rpm` || || Посмотреть changelog пакета || `$ rpm -qp --changelog package-1.rpm` || || Установить пакет || `$ rpm -ivh package-1.rpm` || || Обновить или установить пакет || `$ rpm -Uvh package-1.rpm` || || Обновить пакет, если его предыдущая версия установлена в системе || `$ rpm -Fvh package-1.rpm` || || Узнать, какому пакету принадлежит данный файл || `$ rpm -qf /etc/sysctl.conf` || || Посмотреть информацию об уже установленном пакете || `$ rpm -qi initscripts` || || Посмотреть список всех установленных пакетов || `$ rpm -qa` || || Найти все пакеты, начинающиеся на gnome || `$ rpm -qa "gnome*"` || || Удалить пакет || `$ rpm -e package` ||
Манипуляции посложнее
Чтобы добавить новые ключи, расширяющие возможности стандартного вывода:
{{{ $ cat >~/.popt rpm alias --arch --qf '%{NAME} %{VERSION}-%{RELEASE} %{ARCH}\n' \
--POPTdesc=$\"list package name, version, release and arch\"
^D }}}
Посмотреть оригинальные запросы можно в /usr/lib/rpm/rpmpopt-*.BR Альтернативне форматы запросов можно помещать в /etc/popt или в ~/.popt
Чтобы увидеть результат выполним комнду: `rpm -q --arch postfix` BR и сравним ее вывод с выводом этой команды: `rpm -q --arch kernel`
|| Посмотреть список полей || `$ rpm -q --querytags` || || Вывод дополнительных полей || `$ rpm -q --qf '%{NAME}\t%{VERSION}-%{RELEASE}.%{ARCH}\t%{LICENSE}\n' package-1` || || Проверить целостность установленного пакета || `$ rpm -V postfix` || || Проверить целостность всех установленных пакетов в системе * || `$ rpm -Va` || || Откатить пакеты по состоянию на 1 мая ** || `$ rpm -Uhv --rollback 'may 1'` ||
* расшифровка результатов проверки целостности:BR `S.......` отличаются размеры файловBR `.M......` отличаются флаги и права доступаBR `..5.....` отличается контрольная суммаBR `...D....` несоответствуют major/minor номер устройствBR `....L...` readLink(2) path mismatchBR `.....U..` отличаются владельцыBR `......G.` отличаются группы-владельцыBR `.......T` отличается время модификацииBR ` c` - файл из секции %config, то есть явно конфигурационный файлBR ` d` - файл из секции %doc, аналогично - явно принадлежит к документацииBR ` g` - файл-призрак, т.е. содержимое файла явно не существует в пакете (но возможно создается скриптами при инсталляции пакета)BR ` l` - файл из секции %licenseBR ` r` - файл из секции %readmeBR
- требуется `%_repackage_all_erasures 1` в /etc/rpm/macros

