ЛР №8. Управление пакетами
Цель работы
Ознакомиться с основными принципами комплектации системы в дистрибутивах Linux на основе Red Hat Packet Manager (RPM) и научиться выполнять установку, удаление и обновление программного обеспечения.
Задания к работе
- Вывести полный список пакетов, установленных в системе (rpm -qa). Подсчитать общее количество пакетов, установленных в системе (rpm -qa | wc -l)
- Выбрать из общего списка все пакеты, имеющие в названии слово gnome (т.е. те пакеты, которые принадлежат интегрированной среде GNOME) и подсчитать их количество (rpm -qa |grep -i gnome | wc -l)
- Проверить, установлен ли в системе пакет mc (rpm-q mc) и получить расширенную информацию об этом пакете (rpm -qi mc)
- Вывести в файл список тех файлов, которые включены в пакет mc (rpm -ql mc)
- Вывести список зависимостей для этого пакета (rpm -qR mc)
- Выполнить имитацию удаления (НЕ УДАЛЕНИЕ!) пакета perl. Подсчитать количество пакетов, которые от него зависят (rpm -e --test perl &> f1; wc -l f1 – все задание в одной команде)
- Проверить, установлены ли в системе пакеты lynx, links и w3m.
- Выполнить установку пакета w3m (если не установлен)
- Выполнить имитацию установки пакетов (rpm -ivh - -test файл_пакета) httpd, vsftpd и webmin, проанализировать результаты (убедиться, что все зависимости удовлетворены)
Методические указания
Дистрибутивы и форматы пакетов
Программы управления пакетами
Формат .tar
Формат .rpm
Менеджер пакетов rpm
RPM - это мощный консольный менеджер пакетов, используемый для сборки, установки, инспекции, проверки, обновления и удаления отдельных программных пакетов. Каждый такой пакет состоит из набора файлов и информации о пакете, включающей название, версию, описание пакета, и т.д.Может быть выбран один из следующих основных режимов: Инициализация базы данных, Перестроение базы данных, Сборка пакетов, Перекомпиляция пакетов, Сборка пакетов из tar-архивов, Запрос, Показ полей запроса, Установка, Обновление, Удаление, Проверка установки, Проверка подписи, Повторная подпись, Добавление подписи, Установка владельцев и групп и Показ конфигурации.
ОБЩИЕ ОПЦИИ
Эти опции могут быть использованы во всех режимах работы.
- -vv
- Выводить много отладочной информации.
- --quiet
- Выводить как можно меньше сообщений - как правило, выводятся только сообщения об ошибках.
- --help
- Вывести более детальную, чем обычно, справку об использовании rpm.
- --version
- Вывести одну строку, содержащую номер версии используемого rpm.
- --rcfile <список-файлов>
- Каждый файл из разделенного двоеточиями <списка-файлов> последовательно читается rpm на предмет конфигурационной информации. По умолчанию <список-файлов> выглядит как /usr/lib/rpm/rpmrc:/etc/rpmrc:~/.rpmrc. В этом списке обязан существовать только первый файл; все тильды будут заменены значением переменной среды $HOME.
- --root <каталог>
- Использовать для всех операций файловую систему с корнем в <каталоге>. Обратите внимание, что это значит, что база данных также будет читаться и модифицироваться в <каталоге>, а все pre и post скрипты будут исполняться после chroot() в <каталог>.
- --dbpath <каталог>
- Использовать базу данных RPM, расположенную в <каталоге>.
- --justdb
- Обновить только базу данных, не затрагивая файловую систему.
- --nowait-lock
- Не ждать освобождения блокировки базы данных пакетов.
- --ftpproxy <хост>
- Использовать <хост> как FTP-прокси. См. ОПЦИИ FTP/HTTP.
- --ftpport <порт>
- Использовать <порт> как FTP порт прокси-сервера. См. ОПЦИИ FTP/HTTP.
- --httpproxy <хост>
- Использовать <хост> как HTTP-прокси. См. ОПЦИИ FTP/HTTP.
- --httpport <порт>
- Использовать <порт> как FTP или HTTP порт прокси-сервера. См. ОПЦИИ FTP/HTTP.
- --pipe <cmd>
- Перенаправить вывод rpm на вход команды <cmd>.
ОПЦИИ УСТАНОВКИ И ОБНОВЛЕНИЯ
Общая форма команды установки пакетов выглядит так:rpm -i [опции-установки] <файл_пакета>+
Такая команда устанавливает новые пакеты. Общая форма команды обновления пакетов выглядит так:
rpm -U [опции-установки] <файл_пакета>+
Такая команда производит обновление установленных пакетов. Работа этой команды полностью аналогична работе команды установки за исключением того, что все остальные версии пакетов удаляются из системы.
rpm [-F|--freshen] [опции-установки] <файл_пакета>+
Такая команда производит обновление пакетов, но только в том случае, если в системе установлены более ранние версии этих пакетов.
Допускается задание <файл_пакета> в виде адресов ftp или http. В этом случае перед установкой файл будет получен с сервера, указанного в URL. См. ОПЦИИ FTP/HTTP на предмет информации о встроенной поддержке FTP/HTTP.
- --force
- То же, что и комбинация --replacepkgs, --replacefiles и --oldpackage.
- -h, --hash
- Выводить знаки "#" по мере распаковки архива с пакетом. Количество печатаемых знаков рассчитывается при запуске rpm исходя из характеристик выходного потока с тем, чтобы совместно с именем пакета выводимая информация про каждый пакет занимала ровно одну строку. Используется совместно с -v для улучшения восприятия.
- --oldpackage
- Позволяет заменить новый пакет на более старый при обновлении (откатиться назад, на предыдущую версию).
- --percent
- Выводить процент готовности по мере распаковки архива с пакетом. Задумано для облегчения использования rpm из других утилит.
- --fancypercent
- Выводить "живой процент" готовности по мере установки пакета (полезно вместе с -h).
- --replacefiles
- Устанавливать пакеты, даже если они перепишут файлы из других, уже установленных пакетов.
- --replacepkgs
- Устанавливать пакеты, даже если некоторые из них уже установлены в системе.
- --allfiles
- Устанавливать или обновлять все файлы, определенные как "missingok", даже если они уже существуют.
- --nodeps
- Не проверять зависимости перед установкой или обновлением пакета.
- --noscripts
- Не исполнять пре- и пост-установочных скриптов.
- --notriggers
- Не исполнять триггер-скриптов, активируемых при установке данного пакета.
- --ignoresize
- Не проверять файловую систему на наличие достаточного свободного места перед установкой этого пакета.
- --excludepath <путь>
- Не устанавливать файлы, чьи имена начинаются с <пути>.
- --excludedocs
- Не устанавливать никаких файлов, отмеченных при сборке пакета как файлы документации.
- --includedocs
- Устанавливать файлы документации. Это поведение по умолчанию.
- --test
- Не устанавливать пакет, просто проверить возможность установки и сообщить о возможных проблемах.
- --ignorearch
- Произвести установку или обновление, даже если архитектуры бинарного RPM и машины не совпадают.
- --ignoreos
- Произвести установку или обновление, даже если операционные системы бинарного RPM и машины не совпадают.
- --prefix <путь>
- Для переместимых пакетов: установить префикс установки в <путь>.
- --relocate <старый_путь>=<новый_путь>
- Для переместимых пакетов: преобразовывает файлы, которые должны были бы быть установлены в <старый_путь>, в <новый_путь>.
- --badreloc
- Для использования вместе с --relocate; производит перемещение, даже если пакет не является переместимым.
- --noorder
- Не переупорядочивать список устанавливаемых пакетов. Обычно список переупорядочивается для удовлетворения зависимостей.
ОПЦИИ ЗАПРОСА
Общая форма команды запроса (инспекции) выглядит так:
rpm -q [опции-запроса]
Можно задать формат, в котором будет выводиться информация о пакете. Для этого используется опция --queryformat с последующей строкой формата.
Форматы запроса представляют собой модифицированную версию стандартного форматирования printf. Формат состоит из статических строк (которые могут включать стандартные escape-последовательности C для переводов строки, табуляций и других специальных символов) и форматов по типу используемых в printf(3). Так как rpm уже знает типы данных, подлежащих выводу, спецификаторы типов должны быть опущены и заменены именами тэгов(ключей) заголовков, подлежащих выводу, заключенными в {}. Часть имени тэга RPMTAG_ может быть опущена.
Альтернативные форматы вывода могут быть заданы путем добавления к имени тэга :typetag. В настоящее время поддерживаются следующие типы: octal, date, shescape, perms, fflags и depflags.
Например, для вывода только названий запрашиваемых пакетов, можно использовать в качестве строки формата %{NAME}. Для вывода названий пакетов и информации о дистрибутиве в две колонки можно использовать %-30{NAME}%{DISTRIBUTION}.
Будучи запущенным с аргументом --querytags, rpm выведет список всех тэгов, которые можно использовать в строке формата.
Есть два набора опций для запроса - выбор пакетов и выбор информации.
Опции выбора пакетов:
- <название_пакета>
- Запросить установленный в системе пакет с именем <название_пакета>.
- -a, --all
- Запросить все установленные в системе пакеты.
- --whatrequires <сервис>
- Запросить все пакеты, требующие <сервис> для правильного функционирования.
- --whatprovides <сервис>
- Запросить все пакеты, предоставляющие <сервис>.
- -f <файл>, --file <файл>
- Запросить пакеты, которым принадлежит <файл>.
- -g <группа>, --group <группа>
- Запросить пакеты, входящие в<группу>.
- -p <файл_пакета>
- Запросить (не инсталлированый) <файл_пакета>. Файл <файл_пакета> может быть задан как адрес ftp или http; в этом случае заголовок пакета будет получен с указанного сервера. См. ОПЦИИ FTP/HTTP на предмет встроенной поддержки FTP/HTTP.
- --specfile <spec-файл>
- Разобрать и запросить <spec-файл> так, как если бы это был пакет. Хотя не вся информация (например, списки файлов) доступна, этот тип запроса позволяет использовать rpm для извлечения информации из spec-файлов без необходимости написания парсера spec-файлов.
- --querybynumber <номер>
- Запросить непосредственно запись базы данных под указанным <номером>. Может быть полезно для отладочных целей.
- --triggeredby <пакет>
- Запросить все пакеты, содержащие триггер-скрипты, активируемые <пакетом>.
Опции выбора информации:
- -i
- Вывести информацию о пакете, включая название, версию и описание. Использует --queryformat, если таковой задан.
- -R, --requires
- Вывести список пакетов, от которых зависит данный пакет.
- --provides
- Вывести список сервисов, предоставляемых данным пакетом.
- --changelog
- Вывести протокол изменений данного пакета.
- -l, --list
- Вывести список файлов, входящих в данный пакет.
- -s, --state
- Вывести состояние файлов в пакете (подразумевает -l). Каждый файл может находиться в одном из следующих состояний: нормальный, не установлен или заменен.
- -d, --docfiles
- Вывести список только файлов документации (подразумевает -l).
- -c, --configfiles
- Вывести список только конфигурационных файлов (подразумевает -l).
- --scripts
- Вывести специфические для данного пакета скрипты, используемые как часть процессов инсталляции/деинсталляции, если таковые есть.
- --triggers, --triggerscripts
- Показать все триггер-скрипты, если таковые имеются, содержащиеся в пакете.
- --dump
- Вывести информацию о файлах следующим образом: path size mtime md5sum mode owner group isconfig isdoc rdev symlink. Эта опция должна использоваться в сочетании с по меньшей мере одной из опций -l, -c, -d.
- --last
- Упорядочить список пакетов по времени установки таким образом, что наиболее свежие пакеты находятся в верху списка.
- --filesbypkg
- Показать все файлы в каждом пакете.
- --triggerscripts
- Показать все триггер-скрипты для выбранных пакетов.
ОПЦИИ ПРОВЕРКИ
Общая форма команды проверки выглядит так:
rpm -V|-y|--verify [опции-проверки]
В процессе проверки пакета информация об инсталлированных файлах пакета сравнивается с информацией из оригинального пакета из базы данных RPM. В числе прочих, проверяется размер, контрольная сумма MD5, права доступа, тип, владелец и группа каждого файла. Все несоответствия докладываются. Опции выбора пакетов такие же, как и для запроса (инспекции) пакетов.
Файлы, которые не устанавливались из пакета (например, файлы документации, которые были исключены из процесса инсталляции при помощи опции "--excludedocs"), молча игнорируются.
Опции, которые могут быть использованы в процессе проверки:
- --nofiles
- Игнорировать отсутствующие файлы.
- --nomd5
- Игнорировать ошибки проверки контрольной суммы MD5.
Форматом вывода является строка из восьми символов, возможный символ "c", указывающий на конфигурационный файл, и имя файла. Каждый из восьми символов показывает результат сравнения одного из атрибутов файла со значением, записанным в базе данных RPM. Точка обозначает, что тест прошел успешно. Следующие символы говорят об ошибках некоторых тестов:
- 5
- Контрольная сумма MD5
- S
- Размер файла
- L
- Символическая ссылка
- T
- Время модификации
- D
- Устройство
- U
- Владелец
- G
- Группа
- M
- Права доступа (включает права доступа и тип файла)
rpm -e <название_пакета>+
- --allmatches
- Удалить все версии пакета, отвечающие <названию_пакета>. Обычно, если <название_пакета> отвечает нескольким пакетам, выдается сообщение об ошибке и удаление не производится.
- --noscripts
- Не исполнять пре- и пост-установочные скрипты.
- --notriggers
- Не исполнять триггер-скриптов, активируемых при удалении данного пакета.
- --nodeps
- Не проверять зависимостей перед удалением пакетов.
- --test
- Не производить удаления, только сделать вид. Полезна в сочетании с опцией -vv.
Формат .deb
CC-BY-CA Анатольев А.Г., 11.01.2013