Алексей Стахнов - Linux
Есть два набора опций для запроса – выбор пакетов и выбор информации.
Опции выбора пакетов
Запрос установленного пакета, называющегося <название_пакета>:-q <название_пакета>
Опции:
• -a, -all – запрос всех установленных пакетов;
• -whatrequires <capability> – запрос всех пакетов, требующих <capability> для правильного функционирования;
• -whatprovides <virtuai> – запрос всех пакетов, предоставляющих <virtuai> сервис;
• -f <файл>, -file <файл> – запрос пакета, которому принадлежит файл <файл>;
• -g <группа>, -group <группа> – запрос пакетов из группы <группа>;
• -р <файл_пакета> – запрос (неустановленного) пакета <файл_пакета>. Файл <файл_пакета> может быть задан как FTP– или HTTP-адрес;
• -specfile <spec_file> – разбор и запрос <spec_file> так, как если бы это был пакет. Хотя не вся информация (например, списки файлов) доступна, этот тип запроса позволяет использовать RPM для извлечения информации из spec-файлов;
• -que rybyn umber <num> – запросить непосредственно запись базы данных номер <num>. Полезна для отладочных целей;
• -triggeredby <имя_пакета> – запрос всех пакетов, содержащих триггер-скрипты, активизируемые пакетом <имя_пакета>.
Опции выбора информации
Опции выбора информации выглядят так:
• -i – выводит информацию о пакете, включая название, версию и описание. Использует – queryformat, если таковой задан;
• -R, – requires – выводит список пакетов, от которых зависит данный пакет;
• -provides – выводит список сервисов и библиотек, предоставляемых данным пакетом;
• -changeiog – выводит протокол изменений данного пакета;
• -l, -list – выводит список файлов, входящих в данный пакет;
• -s, -state – выводит состояние файлов в пакете (подразумевает -l). Каждый файл может находиться в одном из следующих состояний: нормальный, не установлен или заменен;
• -d, -docfiles – выводит список только файлов документации (подразумевает -l);
• -с, -configfiles – выводит список только конфигурационных файлов (подразумевает -l);
• -scripts – выводит специфические для данного пакета скрипты, используемые как часть процессов инсталляции/деинсталляции, если таковые есть;
• -triggers, -triggerscripts – показать все триггер-скрипты, если таковые имеются, содержащиеся в пакете;
• -dump – выводит информацию о файлах следующим образом: path size mtime md5sum mode owner group isconfig isdoc rdev symlink. Эта опция должна использоваться в сочетании по меньшей мере с одной из опций -l, -с, -d;
• -last – упорядочивает список пакетов по времени установки таким образом, что наиболее свежие пакеты находятся в верху списка;
• -filesbypkg – показывает все файлы в каждом пакете;
• -triggerscripts – показывает все триггер-скрипты для выбранных пакетов.
Опции проверки
Общая форма команды проверки RPM выглядит так:rpm -V [опции-верификации]
Или
rpm -у [опции-верификации]
Или
rpm -verify [опции-верификации]
В процессе проверки пакета информация об установленных файлах пакета сравнивается с информацией из оригинального пакета и из базы данных RPM. В числе прочих верификация проверяет размер, контрольную сумму MD5, права доступа, тип, хозяина и группу каждого файла. Обо всех несоответствиях сообщается. Опции выбора пакетов такие же, как и для инспекции пакетов.
Файлы, которые не устанавливались из пакета (например, файлы документации, исключенные из процесса инсталляции при помощи опции -excludedocs) молча игнорируются.
Крайне полезная опция для администратора. Эта опция позволит при сбое в системе обнаружить поврежденные файлы (конечно, не все – конфигурационные файлы или файлы, созданные пользователем, так проверить не удастся). В случае взлома системы можно вычислить, какие файлы взломщик модифицировал (например, login).
Опции, которые могут быть использованы в процессе верификации:
• -nofiles – игнорировать отсутствующие файлы;
• -nomd5 – игнорировать ошибки контрольной суммы MD5;
• -пордр – игнорировать ошибки подписи PGP.
Форматом вывода является строка из восьми символов. Каждый из них показывает результат сравнения одного из атрибутов файла со значением, записанным в базе данных RPM. Точка обозначает, что тест прошел. Следующие символы говорят об ошибках некоторых тестов:
• 5 – контрольная сумма MD5;
• S – размер файла;
• L – ссылка (Симлинк);
• Т – время модификации;
• D – устройство;
• U – владелец;
• G – группа;
• М – права доступа (включает права доступа и тип файла).
Проверка подписи
Общая форма команды проверки подписи RPM выглядит так:rpm -checksig <файл_с_пакетом>
Эта команда проверяет встроенную в пакет PGP-подпись для подтверждения целостности и источника происхождения пакета. Информация о конфигурации PGP читается из конфигурационных файлов. Подробную информацию см. в разд. «Подписи PGP».
Опции сборки пакетов
Общая форма команды построения пакета RPM выглядит так:rpm -bO [опции-сборки] <spec_файл>
Или
rpm -tO [опции-сборки] <arc_файл>
Аргумент -b применяется в том случае, если для сборки пакета используется spec-файл. Если же команда rpm должна извлечь этот файл из архива gzip, используется аргумент -t. После первого аргумента ставится следующий: о, указывающий, какие этапы сборки и упаковки должны быть выполнены. Это один из:
• -bp – исполнить стадию %ргер spec-файла. Обычно это включает в себя распаковку исходного кода и прикладывание к нему патчей (от англ .patch — патч, заплатка, исправление);
• -bl – произвести проверку списка. В секции %files spec-файла производится расширение макросов и проверка перечисленных файлов на существование;
• -bc – исполнить стадию %buiid spec-файла (предварительно исполнив стадию %ргер). Обычно это сводится к исполнению некого эквивалента make;
• -bi – исполнить стадию % install spec-файла (предварительно исполнив стадии %ргер и %buiid). Обычно это сводится к исполнению некого эквивалента make install;
• -bb – собрать бинарный пакет (предварительно исполнив стадии %ргер, %build и % install);
• -bs – собрать только исходный пакет (предварительно исполнив стадии %prep, %build и %install);
• -ba – собрать бинарный (RPM) и исходный (SRPM) пакеты (предварительно исполнив стадии %prep, %build и % install).
Также могут быть использованы следующие опции:
• -short-circuit – исполнить непосредственно указанную стадию, пропустив предшествующие. Может быть использована только с -Ьс и -bi;
• -timecheck – установить возраст для timecheck (0 – чтобы запретить). Это значение также может быть установлено путем определения макроса _timecheck. Значение timecheck определяет максимальный возраст (в секундах) пакуемых в пакет файлов. Для всех файлов, которые старце этого возраста, будет выводиться предупреждение;
• -clean – удалить дерево, использованное для сборки, после того, как построены пакеты;
• -rmsource – удалить исходный код и spec-файл после сборки (может быть использовано отдельно, например, rpm -rmsource foo.spec);
• -test – не исполнять никаких стадий сборки. Полезно для тестирования spec-файлов;
• -sign – встроить в пакет PGP-подпись. Эта подпись может быть использована для проверки целостности и источника происхождения пакета. Подробную информацию см. в разд. «Подписи PGP»;
• -buiiroot <каталог> – использовать каталог <каталог> как корневой для сборки пакетов;
• -target <платформа> – при сборке пакета интерпретировать <платформа> как arch-vendor-os и соответственно установить макросы _target, _target_arch и _target_os.
Опции пересборки и перекомпиляции
Существуют два способа запуска RPM:
• rpm -recompile <файл_исходного_пакета>
• rpm -rebuild <файл_исходного_пакета>
Будучи вызванным любым из способов, RPM устанавливает указанный исходный пакет и исполняет стадии %prep, %buiid и %install. Кроме того, – rebuild собирает новый бинарный пакет. После того как сборка закончена, удаляется дерево, использованное для сборки (как с опцией – clean), исходный код и spec-файл.
Подпись существующего RPM
Подпись RPM выполняется следующими командами:
• rpm -resign <файл_бинарного_пакета>
Опция resign генерирует и вставляет новые подписи в указанные пакеты. Все существующие подписи из пакетов удаляются.
• rpm -addsign <файл_бинарного_пакета>
Опция addsign генерирует и добавляет новые подписи в указанные пакеты. Все существующие подписи пакетов при этом сохраняются.
Подписи PGP
Чтобы использовать возможность подписи, RPM должен быть настроен для запуска PGP. Для этого следует создать свою собственную пару из публичного и секретного ключей. Необходимо также настроить следующие макросы:
• _signature – тип подписи. В настоящее время поддерживается только pgp;
• _pgp_name – имя «пользователя», чьи ключи вы хотите использовать для подписи ваших пакетов.
При сборке пакетов к командной строке добавляется опция -sign. У вас спросят пароль, и ваш пакет будет собран и подписан.
Опции пересборки базы данных
Общая форма команды перестроения базы данных RPM выглядит так:
rpm -rebuilddb
Для построения новой базы данных:
rpm -initdb