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

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

Основная опция этого режима — -V; без дополнительных опций, с указанием имени пакета, она проверяет правильность расположения его файлов в файловой иерархии. То есть при вводе команды

$ rpm -V packagename

Если же между ними обнаруживаются расхождения по какому-либо параметру, то оно будет выведено в символическом виде. Несовпадения обозначаются так:

будет выполнена верификация пакета, указанного в качестве аргумента. И, если с пакетом всё нормально, последует молчаливое возвращение пр иглашения командной строки. Если же к основной опции верификации добавить дополнительную опцию v, вывод будет очень подробным, поскольку включит также и проверку зависимостей:

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

Чтобы отказаться от неё, потребуется ещё одна опция:

$ rpm -Vv --nodeps rpm

Для проверки всех установленных пакетов используется команда

# rpm -Va
prelink: /usr/lib64/libiso9660.so.7.0.0: at least one of file's dependencies has changed since prelinking
?S.......    /usr/lib64/libiso9660.so.7.0.0
prelink: /usr/lib64/libmp3lame.so.0.0.0: at least one of file's dependencies has changed since prelinking
?S.......    /usr/lib64/libmp3lame.so.0.0.0
prelink: /usr/lib64/libebook-1.2.so.12.3.1: at least one of file's dependencies has changed since prelinking
...

Если же между установленным и оригинальным пакетом обнаруживаются расхождения по какому-либо параметру, то они будет выведено в символическом виде. Несовпадения обозначаются так:

  • 5 — контрольная сумма MD5
  • S — размер
  • L — символическая ссылка
  • T — дата изменения файла
  • D — устройство
  • U — пользователь
  • G — группа
  • M — режим (включая разрешения и тип файла)
  • ? — файл не удалось прочитать

Совпадающие параметры обозначаются единичной точкой. Увы, примеров привести не могу — в какой пакет не ткнусь для проверки, с ним всё оказывается в порядке. А специально портить — не хочется.

И к тому же, не всегда вывод какого-либо сообщения означает, что с установленным пакетом что-то не в порядке. Например, после выполнения операции прелинкинга все пакеты, к которым она была  осуществлена, будут помечены как «ошибочные»: ведь понятное дело, что контрольные суммы прелинкованного пакета с оригиналом совпасть не могут.

Дополнительные опции режима проверки позволяют выполнить верификацию конкретного файла:

$ rpm -Vf /usr/bin/rpm2cpio

сравнить установленный пакет с его исходным rpm-пакетом:

$ rpm -Vp path2/full_packagename

а также выполнить полную проверку всех установленных пакетов:

# rpm -Va

Поскольку вывод последней команды будет очень длинным, её целесообразно использовать в корнвейере с командой типа less или most. Можно также с помощью команды grep выявить только пакеты; содержащие расхождения с оригиналом по одному из перечисленных выше критериев. Например, командная конструкция

# rpm -Va | grep S

даст на выходе список пакетов, отличающихся от оригиналов размером, а конвейер

# rpm -Va | grep 5

выявит различия контрольных сумм.

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

Кроме перечисленных, существуют ещё многочисленные опции верификации цифровой подписи и публичных ключей — с ними, как обычно, можно ознакомиться на странице man (8) rpm.

Очевидно, что режим проверки имеет смысл только для установленного пакета, так что тут аргументом будет его базовое имя.


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