Linux
Шрифт:
• Name – имя программы, к примеру apache;
• Version – версия программы;
• Release – релиз (версия сборки);
• RPM version – версия пакета RPM: для Red Hat Linux 1 х версия 4, для более ранних – версия 3;
• Size – размер в байтах;
• Source RPM – пакет с исходными кодами, на базе которого собирался бинарный пакет. Например: gcc-2.96–85.src.ipm;
• Summary – краткое, в одно-два предложения описание пакета. Например: The С Preprocessor;
• URL – Web-адрес разработчика программы;
• Vendor – сборщик пакета, например: Red Hat, Inc.
Категории пакетов
Для удобства пользователей пакеты содержат в себе признак, указывающий, к какой категории программного обеспечения относится пакет (поле Group). Стандартная иерархия пакетов приведена на рис. 8.1.
Рис. 8.1. Стандартная иерархия пакетов
Ниже дана краткая расшифровка категорий пакетов.
• Amusements – развлечения. К этому разделу обычно относятся игры и всякие бесполезные, но веселые программки – глаза, которые следят за курсором, котенок, бегающий по экрану, и т. п.:
– Games – подраздел предназначен для игр;
– Graphics – всякие забавные графические программы, в том числе хранители экрана (screensavers).
• Applications – приложения. Раздел предназначен для пользовательских (в широком смысле) программ. Как правило, сюда помещаются программы общего назначения: редакторы, инженерные пакеты, средства мультимедиа:
– Archiving – подраздел, посвященный программам и утилитам архивации;
– Communications – подраздел, содержащий все, что относится к связи. Здесь собраны разнообразные программы и утилиты для работы с модемами, факсами, ISDN, ATM, радиосвязью и многое другое;
– Databases – подраздел, посвященный базам данных и разнообразным утилитам для взаимодействия с базами данных;
– Editors – редакторы. В этом разделе хранятся разнообразные редакторы, от очень простых консольных редакторов до графических монстров;
– Engineering – подраздел, посвященный инженерным пакетам: редакторы схем, формул, химических соединений, чертежные пакеты и тому подобные приложения;
– File – подраздел, содержащий утилиты для работы с файлами;
– Internet – программы, предназначенные для работы в Интернете: Web-браузеры, почтовые
– Multimedia – все для мультимедиа: проигрыватели CD, MP3-файлов, программы для просмотра телепередач и приема радиостанций, микшеры и т. д.;
– Productivity – подраздел для программ, позволяющих увеличить производительность труда: органайзеры, напоминалки, картотеки и т. п.;
– Publishing – подраздел для программ подготовки документов к печати: программы верстки, разметки и т. п.;
– System – подраздел для системных программ. Здесь могут быть программы, предназначенные только для администратора, и программы, интересные только для пользователя;
– Text – подраздел для программ и утилит работы с текстом: поиск слов и фраз, замены и т. п.
• Development – раздел, полностью посвященный программированию и программистам: отладчики, компиляторы, библиотеки разработчика, различные утилиты:
– Debuggers – подраздел для программ-отладчиков;
– Languages – подраздел, посвященный языкам программирования, компиляторам, интерпретаторам;
– Libraries – подраздел для библиотек: по большей части библиотеки разработчика, не системные;
– System – подраздел для системных утилит;
– Tools – подраздел для различного инструментария программиста, не попавшего в предыдущие подразделы.
• Documentation – раздел для документации, поставляемой отдельно от программ.
• System Environment – раздел системного окружения, наиболее ориентированный на ядро системы:
– Base – подраздел для базовых пакетов;
– Daemons – подраздел исключительно для демонов (daemon, демон – программа, выполняющая некоторые системные функции или являющаяся сервером каких-то услуг, сервисов);
– Kernel – подраздел, предназначенный исключительно для ядра Linux как в двоичном виде, так и в исходных кодах;
– Libraries – подраздел для системных библиотек;
– Shells – подраздел для хранения разнообразных командных оболочек.
• User Interface – раздел пользовательского интерфейса. Вернее было бы назвать его разделом, посвященным X Window:
– Desktops – подраздел, посвященный различным оконным менеджерам;
– X – пакеты, относящиеся к X Window;
– X Hardware Support – подраздел содержит пакеты, ориентированные на конкретный тип видеокарт.
Команды консольного менеджера RPM
Раздел полностью посвящен консольному менеджеру RPM. Понятно желание пользоваться графическими менеджерами пакетов – красиво, наглядно, удобно, просто, в конце концов. Но не следует забывать, всегда может случится так, что у вас не будет возможности загрузить X Window (например, необходимо установить новую версию X Window), да и возможностей у RPM побольше, а ресурсов он потребляет несравненно меньше. Тем более, что еще никто не отменял дистанционное администрирование, при котором вообще невозможно воспользоваться графическими пакетами. Раздел практически полностью основывается на содержимом шап-страницы RPM.
Итак, использование RPM, Менеджера пакетов от Red Hat. Может быть выбран один из следующих основных режимов:
• инициализация базы данных;
• пересборка базы данных;
• сборка пакетов;
• рекомпиляция пакетов;
• сборка пакетов из tar-архивов;
• запрос;
• показ полей запроса;
• установка;
• обновление;
• удаление;
• верификация;
• проверка подписи;
• повторная подпись;
• добавление подписи;
• установка владельцев и групп;
• показ конфигурации.
Общие опции
Общие опции могут быть использованы во всех режимах работы:
• -vv – выводить много отладочной информации;
• -quiet – выводить как можно меньше сообщений: как правило, выводятся только сообщения об ошибках;
• -help – вывести более детальную, чем обычно, справку об использовании RPM;
• -version – вывести одну строку, содержащую номер версии используемого RPM;
• -rcfile <список_файлов> – каждый из файлов из разделенного двоеточиями <списка_файлов> последовательно читается RPM на предмет конфигурационной информации. По умолчанию <список_файлов> выглядит как /usr/lib/ipm/ipmrc:/etc/ipmrc:~/.ipmrc. В этом списке обязана существовать только первая строка; все тильды будут заменены значением $номе;
• -root <каталог> – использовать для всех операций файловую систему с корнем в <каталог>. Обратите внимание, это значит, что база данных также будет читаться и модифицироваться под <каталог> и все pre– и post-скрипты будут исполняться после chroot в <каталог>;
• -dbpath <путь> – использовать базу данных RPM в <путь>;
• -justdb – обновить только базу данных, не файловую систему;
• -ftpproxy <host> – использовать <host> как FTP-прокси (см. разд. «Опции FTP/HTTP»);
• -httpproxy <host> – использовать <host> как НТТР-прокси (см. разд. «Опции FTP/HTTP»);
• -ftpport <порт> – использовать <порт> как FTP-порт прокси-сервера (см. разд. «Опции FTP/HTTP»);
• -httpport <порт> – использовать <порт> как HTTP-порт прокси-сервера (см. разд. «Опции FTP/HTTP»);
• -pipe <cmd> – перенаправляет вывод RPM на вход команды <cmd>.
Опции установки и обновления
Общая форма команды установки новых RPM выглядит так:rpm -i [опции-установки] <файл_пакета>
Общая форма команды обновления установленных RPM выглядит так:
rpm -U [опции-установки] <файл_пакета>
Команда обновления установленных пакетов полностью аналогична работе команды установки за исключением того, что если уже был установлен пакет, rpm проверяет версию установленного пакета и если она меньше версии нового пакета, происходит удаление установленного пакета и установка нового. Или более просто, если пакет не был установлен, эта команда производит установку, а если был установлен и имеет более раннюю версию, то происходит замена более ранней версии на новую.
rpm -F [опции-установки] <файл_пакета>
Или
rpm -freshen [опции-установки] <файл_пакета>
Эта команда производит обновление пакетов, но только если в системе существуют более ранние версии этих пакетов.
Допускается задание <файл_пакета> в виде FTP– или HTTP-адресов (например,. В этом случае перед установкой пакет будет получен с сервера, указанного в адресе. Подробную информацию о встроенной поддержке FTP/HTTP см. в разд. «Опции FTP/HTTP» данной главы.
Опции:
• -force – то же, что и комбинация – replacepkgs, – replace-ffiilleess и – oidpackage. Принудительная установка пакета, невзирая на наличие неудовлетворенных зависимостей или уже установленных пакетов, и моющих более позднюю версию;
• -h, -hash – выводить 50 раз знак # по мере распаковки архива с пакетом. Используется с -v для придания читабельного вида. Можно использовать при автоматической установке пакетов, когда результат инсталляции выводится в журнальный (лог, log) файл;
• -oidpackage – позволяет заменить новый пакет на более старый при обновлении (откатиться назад). Как правило, необходимость отката (rollback) возникает в двух случаях: первый – при смене версий программного обеспечения (например, компилятор gcc поменял версию с 2.9х на 3.0), а новая версия имеет недостатки в функционировании (подвисает, исчезли необходимые вам свойства программы и т. д.). Второй – новая версия программного обеспечения конфликтует с уже установленными пакетами (не те версии библиотек, другой формат вызова модулей и т. п.);
• -percent – выводить процент готовности по мере распаковки архива с пакетом. Задумано для облегчения использования RPM из других утилит;
• -repiacef iies – устанавливать пакеты, даже если они перепишут файлы из других, уже установленных пакетов;
• -replacepkgs – устанавливать пакеты, даже если некоторые из них уже установлены в системе;
• -aiifiles – устанавливать или обновлять все файлы, определенные как missingok (согласно базе RPM – отсутствующие файлы в системе для данного пакета), даже если они уже существуют;
• -nodeps – не проверять зависимости перед установкой или обновлением пакета;
• -noscripts – не исполнять pre– и post-установочных скриптов;
• -notriggers – не исполнять триггер-скриптов, взведенных на установку данного пакета;
• -ignoresize – не проверять файловую систему на наличие достаточного свободного места перед установкой этого пакета;
• -exciudepath <путь> – не устанавливать файлы, чьи имена начинаются с <путь>;
• -exciudedocs – не устанавливать никаких файлов, отмеченных как файлы документации (включает man-документацию и документы texinfo);
• -inciudedocs – устанавливать файлы документации. Это поведение по умолчанию;
• -test – не устанавливать пакет, просто проверить возможность установки и сообщить о потенциальных проблемах;
• -ignorearch – произвести установку или обновление, даже если архитектуры бинарного RPM и машины не совпадают;
• -ignoreos – произвести установку или обновление, даже если операционные системы бинарного RPM и машины не совпадают;
• -prefix <путь> – установить префикс установки в <путь> для переместимых пакетов;
• -relocate <старый_путь>=<новый_путь> – для переместимых пакетов: преобразовывает в <новый_путь> файлы, которые должны были бы быть установлены в <старый_путь>;
• -badreioc – для использования вместе с – relocate. Производит перемещение, даже если пакет непереместимый;
• -noorder – не переупорядочивать список устанавливаемых пакетов. Обычно список переупорядочивается для удовлетворения зависимостей.Опции удаления (деинсталляции)
Общая форма команды удаления пакета выглядит так:
rpm -е <название_пакета>
Опции:
• -allmatches – удалить все версии пакета, отвечающие <название_пакета>. Обычно если <название_пакета> отвечает нескольким пакетам, выдается сообщение об ошибке и удаление не производится;
• -noscripts – не исполнять pre– и post-установочные скрипты;
• -notriggers – не исполнять триггер-скриптов, взведенных на удаление данного пакета;
• -nodeps – не проверять зависимостей перед удалением пакетов;
• -test – не производить удаления, только протестировать возможность удаления. Полезна в сочетании с опцией – w.
Опции запроса
Общая форма команды запроса RPM выглядит так:rpm -q [опции-запроса]
Можно задать формат, в котором будет выводиться информация о пакете. Для этого используется опция – queryformat с последующей строкой формата. Форматы запроса представляют собой модифицированную версию стандартного форматирования printf . Формат состоит из статических строк (которые могут включать стандартные escape-послеловательности языка программирования С для переводов строки, табуляций и других специальных символов) и форматов по типу используемых в printf .
Есть два набора опций для запроса – выбор пакетов и выбор информации.
Опции выбора пакетов
Запрос установленного пакета, называющегося <название_пакета>:– 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
Этот режим поддерживает только две опции: -dbpath и -root.
Опции FTP/HTTP
RPM содержит простые клиенты FTP и HTTP для упрощения установки и изучения пакетов, доступных через Интернет. Файлы пакетов для установки, обновления и запроса могут быть указаны как FTP– или HTTP-адрес:
ftp://<user>:<password>@hostname:<port>/path/to/packagee.rpm
Если часть <password> опущена, пароль будет запрошен (по одному разу для каждой пары user/hostname). Если ни <user>, ни <password> не указаны, будет использован anonymous ftp. Во всех случаях осуществляется пассивная (PASV) пересылка по FTP.
RPM позволяет применять с адресом FTP следующие опции:
• -ftpproxy <hostname> – система <hostname> будет организована как proxy-сервер для всех пересылок, что позволяет производить FTP-соединения через firewall, использующий прокси для выхода во внешний мир. Эта опция может быть задана также настройкой макроса _ftpproxy;
• -ftpport <port> – задает номер TCP-порта, открываемого для FTP-соединений вместо порта по умолчанию. Эта опция может быть также задана настройкой макроса _ftpport.
RPM позволяет применять с адресом HTTP следующие опции:
• -httpproxy <hostname> – система <hostname> будет организована как proxy-сервер для всех пересылок, что позволяет производить HTTP-соединения через firewall, использующий прокси для выхода во внешний мир. Эта опция может быть задана также настройкой макроса _httpproxy;
• – httpport <port> – задает номер TCP-порта, открываемого для HTTP-соединений вместо порта по умолчанию. Эта опция может быть также задана настройкой макроса _httpport.
Используемые файлы
Следующие файлы необходимы при работе с пакетом RPM:
• /usr/lib/rpm/rpmrc;
• /etc/rpmrc;
• ~/.rpmrc;
• /var/state/rpm/packages;
• /var/state/rpm/pathidx;
• /var/state/ipm/nameidx;
• /tmp/rpm*.
Примеры использования консольного менеджера пакетов RPM
В предыдущем разделе мы познакомились с опциями менеджера RPM. С легкостью установки программ в Windows не сравнить. Впрочем, пользователи вряд ли применяют даже десятую часть имеющихся опций, поэтому и не следует запоминать их все. Рассмотрим, что практически используется в работе с пакетами.
Установка пакетов осуществляется с помощью команды:rpm -i <полное_имя_пакета>
Или
rpm -i <полное_имя_пакета> <полное_имя_пакета> <полное_имя_пакета> …
Например: rpm -i срр-2. 96–85. i386.rpm Таким образом можно установить сразу несколько пакетов. Помимо удобства (сразу указывается список пакетов, и они устанавливаются сами) указание нескольких пакетов необходимо в том случае, если возникают неудовлетворенные зависимости. Попадаются пакеты, зависящие друг от друга. Без второго пакета не установить первый, а второй не устанавливается – требует установки первого. Простейшее решение – поставить пакеты командой:
rpm -i <полное_имя_пакета_1> <полное_имя_пакета_2>
Команда простая, работает хорошо, но если в системе уже установлен пакет, пусть и более ранней версии, вы получите предупреждение, а сам пакет не установится. Чтобы обновить пакет, используем следующую команду:
rpm -U <полное_имя_пакета>
Эта команда производит обновление пакета, если он уже установлен, или установку, если не установлен. Однако не всегда при обновлении необходимо устанавливать отсутствующий пакет. В таких случаях можно воспользоваться командой: