- Подписка на печатную версию:
- Подписка на электронную версию:
- Подшивки старых номеров журнала (печатные версии)
LXF131:DrBrown2
Материал из Linuxformat.
Быстрое руководство по RPM
- Пользуйтесь RPM как профи, не читая man-страницу.
RPM – сокращение от Red Hat Package Manager (менеджер пакетов Red Hat). Название относится и к формату файлов пакетов, и к программе для управления ими. Данный формат определен в Linux Standard Base и используется (естественно) в Red Hat Linux, в производных Red Hat, таких как CentOS и Fedora, и в некоторых конкурирующих дистрибутивах, включая SUSE. По современным стандартам, RPM – примитивное средство, и большинство пользователей, наверное, предпочтут ему более высокоуровневые утилиты на основе репозиториев, которые поддерживают автоматическое разрешение зависимостей – типа Yum, apt-get, gpk-application или Synaptic.
Тем не менее, RPM сохраняет свое значение как основной инструмент сопровождения базы данных установленных пакетов, а также собственно их развертывания и опроса. И не помешает знать, как управлять им напрямую. Как и многие утилиты командной строки в Linux, rpm страдает излишком количества опций, и в нашем кратком руководстве я покажу, как выполнить основные задачи без необходимости нырять в man. В таблице ниже приведены некоторые стандартные задачи и способ их решения.
RPM подробно
Большинство примеров в таблице очевидны; попробуйте их с какими-нибудь пакетами на ваш выбор, а на некоторые задачи взглянем более детально.
Во-первых, рассмотрим случай, когда при попытке установки пакета RPM не удается разрешить зависимость:
#rpm -i agg-2.4-2.1.i386.rpm error: Failed dependencies: libSDL-1.2.so.0 is needed by agg-2.4-2.1.i386
Здесь возможности RPM иссякают. Хотя ясно, что имеет место нехватка зависимостей, RPM не пытается установить их и хоть сколько-нибудь помочь. Например, какой пакет нужно установить, чтобы получить отсутствующую libSDL?
У RPM есть полезная функция проверки состояния имеющихся в системе файлов и сравнения их с содержимым базы данных установленных пакетов. Это похоже на запуск Tripwire для проверки, не изменилось ли что-нибудь, чему меняться не следует. Проверить это можно для одного пакета:
# rpm --verify initscripts
Или для всех пакетов:
# rpm --verify --all
Вот фрагмент вывода:
# rpm --verify --all ..5….T. c /etc/inittab S.5….T. /etc/cron.d/smolt S.5….T. с /etc/libuser.conf .M……. /usr/lib/pm-utils/sleep.d S.5….T. с /etc/ldap.conf .M….G.. /var/log/gdm
Для каждого файла, который не совпадает в точности с содержимым базы данных, RPM выводит различия в последовательности из девяти символов, включающих:
- S – отличается размер файла;
- M – отличаются права доступа к файлу;
- 5 – отличается контрольная сумма MD5;
- D – отличается младший/старший номер устройства;
- U – отличается владелец файла;
- G – отличается группа файла;
- T – отличается время изменения.
Так, мы видим, что, например, у файла /etc/ldap.conf размер, контрольная сумма и время изменения не те, что хранятся в базе данных RPM. Для конфигурационных файлов это нормально, и более половины рассогласований касаются именно их.
Именование имен
У пакетов RPM ужасные названия – невольно радуешься, что есть на свете дополнение имени файла. Но эти имена следуют определенному шаблону, показанному на рисунке. Обратите внимание, что фрагмент имен перед расширением .rpm означает архитектуру, для которой собран пакет. Архитектуры i386 и sparc предполагают пакеты из скомпилированных двоичных файлов для соответствующего семейства процессоров. Src означает, что в пакете исходный код, а noarch сообщает, что пакет «не зависит от архитектуры». Такие пакеты обычно пишутся на интерпретируемых языках, например Perl или Python, или могут быть просто документацией.
Чтобы... | Воспользуйтесь командой: |
---|---|
Вывести список всех установленных пакетов | rpm -qa Часто передается в ''grep'', чтобы найти заданные пакеты: rpm -qa | grep init |
Показать информацию об установленном пакете | rpm -qi initscripts |
Показать файлы, входящие в состав установленного пакета | rpm -ql initscripts |
Выяснить, из какого пакета файл | rpm -qf /usr/sbin/sshd |
Найти зависимости («Что еще нужно для того, чтобы этот пакет работал?») | rpm -qR openssh-server |
Найти зависимые пакеты («Что сломается, если я удалю этот пакет?») | rpm --whatrequires initscripts Одни зависимости выводятся как имена пакетов, другие – как имена файлов, часто библиотек |
Вывести сведения о еще не установленном пакете | rpm -qip bzip2-1.0.3-3.i386.rpm |
Установить пакет | rpm -ivh bzip2-1.0.3-3.i386.rpm |
Удалить пакет | rpm -e openssh-server |
Выяснить, изменились ли какие-то файлы пакета с момента его установки | rpm --verify openssh-server |