Новелла девяносто четвёртая, посвящённая режиму запроса утилиты rpm

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

Основная опция запроса — -q (или --query). Если пакет установлен, ответом на неё будет вывод полного имени файла, например:

$ rpm -qa rpm
rpm-4.9.1.2-18.2.2.x86_64

При отсутствии же пакета последует такое сообщение:

$ rpm -q terminusre33-bold-fonts
пакет terminusre33-bold-fonts не установлен

Дополнительные опции зависят от цели запроса. Так, наличие пакета в системе проверяется следующей командой:

$ rpm -qa pkgname

где дополнительная опция -a (или --all) предписывает запрос ко всем наличным в базе пакетам. Если пакет установлен, ответом на эту команду будет, и при «чистом» запросе, вывод полного имени файла, например:

$ rpm -qa rpm
rpm-4.9.1.2-18.2.2.x86_64

Если же пакет отсутствует, последует возврат приглашения командной строки.

Формальное описание установленного пакета можно получить командой

$ rpm -q --info rpm

Ответом на что будет:

Name        : rpm
Version     : 4.9.1.2
Release     : 18.2.2
Architecture: x86_64
Install Date: Чт. 02 авг. 2012 08:08:49
Group       : System/Packages
Size        : 4124884
License     : GPL-2.0+
...

Легко видеть, что это та самая заголовочная часть (HEADER), которую мы не так давно просматривали через Midnight Commander.

Список файлов, входящих в установленный пакет, вместе с их положением в файловой иерархии после установки, получается командой

$ rpm -ql rpm
/bin/rpm
/etc/init.d/rpmconfigcheck
/etc/rpm
/usr/bin/convertdb1
/usr/bin/gendiff
/usr/bin/rpm2cpio
/usr/bin/rpmdb
...

и так далее. То есть эта опция позволяет нам вытащить и содержимое CONTENTS.cpio. А комбинация этих дополнительных опций, как не трудно догадаться, даст синтетический вывод — заголовок вместе со списком файлов. То есть то, что мы получали нажатием клавиши F3 в Midnight Commander. Каковой, таким образом, оказывается совсем не обязательным для анализа устройства rpm-пакета.

Выше речь касалась получения информации об установленном пакете. Однако гораздо интересней получить сведения о пакете не установленном — на предмет определения нужности или не нужности его в нашем деле. И это возможно — путем добавления дополнительной опции p и указания полного имени пакета и пути к нему. Так, команда

$ rpm -qp --info path2/terminusre33-bold-fonts-0.91-6.1.noarch.rpm

выведет описание  пакета Terminus RE33:

предупреждение: terminusre33-bold-fonts-0.91-6.1.noarch.rpm: Заголовок V3 DSA/SHA1 Signature, key ID c0cf70b2: NOKEY
Name        : terminusre33-bold-fonts
Version     : 0.91
Release     : 6.1
Architecture: noarch
Install Date: (not installed)
Group       : System/X11/Fonts
Size        : 53716
License     : GPL-2
Signature   : DSA/SHA1, Вс. 09 сент. 2012 12:28:59, Key ID 56f98592c0cf70b2
Source RPM  : terminusre33-bold-fonts-0.91-6.1.src.rpm
Build Date  : Вс. 09 сент. 2012 12:28:50
Build Host  : build18
Relocations : (not relocatable)
Vendor      : obs://build.opensuse.org/home:alv_fedorchuk
Summary     : Terminus Re33 Bold Font
Description :
Terminus Re33 Bold Font is a monospace trutype font for use in terminls and
text editors of X11.
Distribution: home:alv_fedorchuk / openSUSE_12.2

А команда

$ rpm -qpl path2/terminusre33-bold-fonts-0.91-6.1.noarch.rpm

даст нам список входящих в пакет файлов:

предупреждение: terminusre33-bold-fonts-0.91-6.1.noarch.rpm: Заголовок V3 DSA/SHA1 Signature, key ID c0cf70b2: NOKEY
/usr/share/fonts/truetype
/usr/share/fonts/truetype/TerminusRE33-bold-0.91.ttf

Поскольку не установленный пакет, скорее всего, лежит на каком-либо сетевом ресурсе, в качестве пути к его файлу тут может фигурировать URL, например:

$ rpm -qp --info http://download.opensuse.org/distribution/12.2/repo/oss/suse/x86_64/rekonq-0.9.2-2.1.2.x86_64.rpm
Name        : rekonq
Version     : 0.9.2
Release     : 2.1.2
Architecture: x86_64
Install Date: (not installed)
...

Или:

$ rpm -qpl http://download.opensuse.org/distribution/12.2/repo/oss/suse/x86_64/rekonq-0.9.2-2.1.2.x86_64.rpm
/usr/bin/kwebapp
/usr/bin/rekonq
/usr/lib64/libkdeinit4_rekonq.so
/usr/share/applications/kde4/rekonq.desktop
/usr/share/doc/packages/rekonq
...

и так далее.

Дополнительная опция f позволяет определить имя пакета, которому принадлежит некий файл:

$ rpm -qf /usr/lib/rpm/rpm2cpio.sh rpm-4.8.1-5.fc14.x86_64

В режиме запроса установленного пакета достаточно указания краткого его имени. Запрос неустановленного пакета требует указания пути (или URL) и полного имени.И, как уже говорилось, для выполнения запроса полномочий обычного пользователя вполне достаточно.


Назад | К содержанию | Вперёд