8.1 Управление программами с помощью RPM (Managing Software with RPM)¶
При установке программного обеспечения в Linux у вас есть два основных варианта:
- Установить заранее скомпилированное приложение или службу из программного пакета (software package). Пакеты содержат исполняемые файлы (и другие файлы), заранее скомпилированные и сконфигурированные для определённой аппаратной архитектуры и/или дистрибутива Linux.
- Установить из исходного кода. При установке из исходного кода вы используете компилятор на своей системе для компиляции исходного кода приложения в исполняемые файлы, которые смогут работать на вашем оборудовании в вашем дистрибутиве.
Для установки программ из исходного кода в системе должен быть установлен компилятор (например, gcc). Для установки из пакетов необходим менеджер пакетов (package manager). Многие дистрибутивы, включая openSUSE и Fedora, используют менеджер пакетов Red Hat (Red Hat Package Manager, RPM) для установки пакетов RPM и управления ими. Другие дистрибутивы, например Ubuntu, используют систему управления пакетами Debian.
Независимо от того, какой менеджер пакетов использует ваш дистрибутив, все они выполняют схожие задачи:
- Установка программного обеспечения
- Обновление уже установленного программного обеспечения
- Удаление программного обеспечения
- Запрос информации об установленном программном обеспечении
- Проверка целостности установленного программного обеспечения
Для хранения сведений обо всём установленном программном обеспечении RPM использует файл базы данных RPM (RPM database file) — /var/lib/rpm. При каждой установке, обновлении или удалении пакета в базе данных RPM создаётся соответствующая запись.
Совет
Иногда этот файл базы данных может повредиться. Неприятная ситуация! Если это произойдёт, попробуйте восстановить базу данных RPM, выполнив команду rpm --rebuilddb в приглашении командной строки (от имени суперпользователя root).
В этой части главы мы рассмотрим следующее:
- Установка программ с помощью RPM
- Управление установленными программами с помощью RPM
- Использование
yumдля установки пакетов RPM
Установка программ с помощью RPM (Installing Software with RPM)¶
Как и при выполнении многих других задач, описанных в этой книге, для установки программ и управления ими в Linux можно использовать различные инструменты. Одни из них запускаются из приглашения командной строки, другие являются графическими утилитами, доступными из среды рабочего стола KDE или GNOME. Например, дистрибутив openSUSE включает модуль управления программами Software Management в составе утилиты настройки YaST. Он показан на рис. 8-1.

Рис. 8-1. Использование модуля YaST Software Management
Модуль управления программами позволяет выполнять различные административные задачи: устанавливать, обновлять и удалять пакеты. Аналогичные графические утилиты предоставляют и другие дистрибутивы.
У таких графических утилит есть много преимуществ. Помимо удобного интерфейса, большинство из них автоматически определяют и разрешают зависимости (dependencies) пакетов. Принцип работы зависимостей будет рассмотрен далее в этой главе.
В данной части главы мы не будем подробно останавливаться на работе с этими утилитами по ряду причин. Во-первых, как и при выполнении большинства других задач, описанных в книге, хороший администратор Linux должен уметь управлять программами из командной строки. Вам необходимо понимать, что происходит «под капотом» графической утилиты (которая, как правило, является лишь графической надстройкой (front end) поверх утилиты командной строки).
Кроме того, большинство графических утилит управления способны работать только с программными пакетами. Многие программы, которые придётся устанавливать в Linux, потребуют установки из пакета с исходным кодом. Такие программы необходимо распаковать и скомпилировать, что возможно сделать только из приглашения командной строки. Наконец, экзамен LPIC-1/Linux+ требует умения управлять программами именно из командной строки.
Соответственно, в этой части главы мы рассмотрим утилиту RPM для установки программ. Мы изучим следующие темы:
- Где взять программное обеспечение для Linux
- Установка программных пакетов
Начнём с обзора источников, из которых можно получить программы для вашей системы.
Где взять программное обеспечение для Linux (Obtaining Linux Software)¶
Одним из наибольших преимуществ Linux является богатство доступного программного обеспечения из самых разных источников — как правило, бесплатного или условно-бесплатного. В ранние дни Linux ситуация была иной: одним из главных препятствий для широкого распространения системы было отсутствие приложений, особенно офисных.
Сегодня всё изменилось. Назовите любую задачу, которую требуется решить в Linux, — и наверняка найдётся приложение или служба, способная с ней справиться.
Итак, откуда берутся программы для Linux? Как обсуждалось ранее, модель разработки Linux нарушает большинство общепринятых норм. В случае других операционных систем вы приобретаете программы в магазине или загружаете, купив лицензию онлайн. В Linux же ситуация иная: большинство программ получают из альтернативных источников. Рассмотрим некоторые из них.
Источники программ для Linux (Sources for Linux Software)¶
Получить программное обеспечение для своей системы Linux можно из множества источников, помимо компьютерного отдела ближайшего магазина. Первый источник, о котором следует знать (и который многие пользователи Linux упускают из виду), — это установочные диски дистрибутива. Многие дистрибутивы содержат огромное количество приложений и служб, которые можно установить. Например, установочный DVD openSUSE включает сотни RPM-пакетов приложений и служб в подкаталогах каталога suse, как показано на рис. 8-2.

Рис. 8-2. Приложения и службы на DVD дистрибутива
Помимо диска дистрибутива, программы для Linux можно загружать с множества сайтов в Интернете. Большинство проектов программного обеспечения с открытым исходным кодом имеют собственные сайты, где можно ознакомиться с программой и скачать последнюю версию. Например, по адресу www.pureftpd.org можно узнать подробнее и загрузить службу pure-ftpd, предназначенную для настройки FTP-сервера. Этот сайт показан на рис. 8-3.

Рис. 8-3. Получение программы с сайта проекта с открытым исходным кодом
Помимо отдельных сайтов проектов, существуют сайты-агрегаторы, предоставляющие ссылки на множество программ из одного места. Один из таких ресурсов — www.rpmfind.net, RPM-репозиторий, в котором можно найти и загрузить RPM-пакеты для вашей системы.
Ещё один отличный источник программ для Linux — SourceForge (http://sourceforge.net). SourceForge — это централизованный репозиторий программного обеспечения с открытым исходным кодом. На момент написания этой книги на сайте были доступны тысячи различных программ. Как и на rpmfind, здесь можно найти и загрузить нужный пакет.
С некоторыми дистрибутивами можно обращаться напрямую на сайт дистрибутива и скачивать оттуда пакеты. Например, можно перейти на http://software.opensuse.org и загрузить пакеты для конкретной версии openSUSE, как показано на рис. 8-4.

Рис. 8-4. Поиск программ на сайте openSUSE
Итак, для получения программ доступно множество ресурсов, в том числе:
- Установочный CD или DVD
- Сайты проектов программного обеспечения с открытым исходным кодом
- www.rpmfind.net
- www.sourceforge.net
- linux.tucows.com
- www.freshmeat.net
- www.linux.org
Программы в изобилии доступны на этих сайтах. Потратьте время на их изучение — не пожалеете!
После загрузки программы следует проверить файл, чтобы убедиться в его целостности. Рассмотрим, как это делается.
Проверка загруженных файлов (Verifying Your Downloads)¶
В большинстве случаев файлы, загруженные из Интернета, приходят на локальную систему в целости. Тем не менее возможно повреждение данных. Нет ничего более раздражающего, чем загрузить файл — особенно ISO-образ дистрибутива — и обнаружить, что он оказался повреждён. Кроме того, необходимо убедиться в подлинности файла и в том, что он не был подменён злоумышленником, пытающимся внедрить вредоносное программное обеспечение.
Хорошая новость: после загрузки можно проверить файл, сравнив его контрольную сумму (checksum) с контрольной суммой исходного файла. Контрольная сумма — это значение, получаемое путём вычисления содержимого файла с использованием алгоритма Message Digest 5 (MD5). Например, если вы загружаете ISO-образ DVD с сайта www.opensuse.org, то можете просмотреть контрольные суммы по ссылке на странице загрузки, как показано на рис. 8-5.

Рис. 8-5. Просмотр контрольных сумм исходного файла
После загрузки файла для вычисления контрольной суммы локальной копии используется команда sum. Введите sum путь/имя_файла. Например, если вы загрузили файл pure-ftpd-1.0.29-1.1.t.x86_64.rpm в каталог ~/Downloads, выполните:
Затем сравните контрольную сумму исходного файла с сайта с контрольной суммой локального файла. Если значения совпадают, всё в порядке: файлы идентичны, повреждений при передаче не произошло.
Если же контрольные суммы различаются, это означает, что копии файлов по какой-то причине различаются — скорее всего, файл был повреждён в процессе загрузки. В этом случае не пытайтесь восстановить локальную копию. Удалите её, загрузите заново и повторно проверьте контрольные суммы.
Давайте потренируемся использовать веб-ресурсы для получения программ в следующем упражнении.
Упражнение 8-1. Использование веб-ресурсов для получения программ Linux
В этом упражнении вы будете практиковаться в использовании веб-ресурсов для загрузки программного обеспечения Linux. Приведённые шаги были актуальны на момент написания книги. Поскольку веб-сайты и версии программ постоянно обновляются, шаги может потребоваться скорректировать. Для выполнения упражнения можно использовать виртуальную машину из комплекта книги. Запустите снимок состояния 8-1 для получения правильно настроенной среды.
Видео
Посмотрите видео к упражнению 8-1 с демонстрацией выполнения задания.
Выполните следующее:
- Загрузите систему Linux и войдите с именем пользователя
studentи паролемstudent. - Откройте веб-браузер и перейдите на http://www.sourceforge.net.
Примечание
Шаги написаны для браузера Firefox. Если после восстановления снимка состояния 8-1 подключение к Интернету недоступно, откройте терминал, перейдите в учётную запись root с помощью su - и выполните systemctl restart network в приглашении командной строки.
- В поле поиска на главной странице SourceForge введите
filezillaи нажмите Search. - Найдите ссылку Filezilla Download Now в результатах поиска и перейдите по ней.
- Загрузите последнюю версию Filezilla для вашего дистрибутива и архитектуры в формате
tar.bz2в каталогDownloadsдомашнего каталога (~). (Браузер может предложить открыть файл в графической утилите архивации. Не выбирайте этот вариант.) - В браузере перейдите на http://www.rpmfind.net/.
- В поле поиска введите
gftpи нажмите Search. - В списке результатов найдите подходящий RPM-пакет для вашего дистрибутива и архитектуры.
Совет
Можно нажать Ctrl+F и выполнить поиск по странице по имени дистрибутива и архитектуры.
- Выберите нужную ссылку для загрузки правильного RPM-пакета для вашей системы и сохраните файл в
~/Downloads. - Закройте браузер.
Теперь можно переходить к установке файлов. Рассмотрим, как это делается.
Установка программных пакетов (Installing Software Packages)¶
В Linux можно также устанавливать заранее скомпилированные и настроенные приложения и службы из программных пакетов. В пакетах исходный код уже собран и настроен для конкретной архитектуры — а в ряде случаев для конкретного дистрибутива Linux.
Главное достоинство RPM — простота установки и управления программами по сравнению с установкой из исходного кода (которую мы рассмотрим позже). Установка и компиляция из исходного кода требует глубоких знаний Linux, явно превосходящих уровень большинства конечных пользователей.
RPM-пакеты устанавливаются довольно просто. Большинство из них загружается в виде одного файла, который обрабатывается непосредственно с помощью утилиты rpm.
Прежде чем показать, как это делается, необходимо рассмотреть соглашения об именовании RPM-пакетов. Это важно, поскольку пакеты собраны для конкретной архитектуры процессора, а иногда и для конкретного дистрибутива Linux. В отличие от установки из исходного кода, где программа адаптируется под архитектуру в процессе установки, RPM-пакеты поставляются уже скомпилированными под определённую архитектуру. Это означает, что для одного пакета может существовать несколько версий под разные платформы.
Главное — убедиться, что вы загружаете и устанавливаете правильную версию пакета RPM для своей системы. Это можно определить по имени файла. Рассмотрим пример:
Этот RPM устанавливает программу gFTP — графический FTP-клиент для доступа к файлам на FTP-сервере. Различные части имени файла передают следующую информацию:
- Имя пакета (Package Name). Идентифицирует пакет. В данном примере имя пакета —
gftp. - Номер версии (Version Number). Указывает версию программы. Здесь версия —
2.0.19. - Номер сборки (Release Number). Указывает текущую сборку данной версии. Иногда при создании RPM-пакета обнаруживаются ошибки. Когда выходит новая сборка того же версии программы, исправляющая ошибку, номер сборки увеличивается. В примере номер сборки —
7.1. В этом поле также может содержаться необязательный идентификатор дистрибутива:fcx— пакет для Fedora Core версии x. Например,fc4— для Fedora Core 4.rhlx— пакет для Red Hat Linux версии x.susexxx— пакет для SUSE Linux версии xxx. Например,suse101— для SUSE Linux 10.1.
- Тип архитектуры (Architecture Type). Указывает архитектуру процессора. В примере архитектура —
x86_64, то есть программа будет работать на 64-разрядных процессорах x86. Возможные значения:i386— Intel 80386 или более позднийi586— Intel Pentium или более позднийi686— Intel Pentium 4 или более позднийx86_64— 64-разрядные x86athlon— AMD Athlonppc— PowerPCnoarch— не зависит от архитектуры
RPM-пакеты можно найти на установочном CD или DVD дистрибутива, а также в различных местах в Интернете. После загрузки RPM-пакета следует использовать команду sum для вычисления контрольной суммы и сравнения её с контрольной суммой исходного файла.
Кроме того, с помощью команды rpm можно проверить подлинность пакета: убедиться, что он получен непосредственно от организации, ответственной за обслуживание программы, и не был изменён третьей стороной. Для этого введите rpm --checksig имя_файла_пакета. Команда запросит цифровой ключ подписи пакета. Если пакет был изменён, ключ окажется недействительным.
В следующем примере пакет pure-ftpd загружен из Интернета. Для проверки целостности пакета нужно перейти в каталог с файлом пакета и выполнить rpm --checksig pure-ftpd-1.0.29-1.4.x86_64.rpm:
rtracy@openSUSE:~/Downloads> rpm --checksig pure-ftpd-1.0.29-1.4.x86_64.rpm
pure-ftpd-1.0.29-1.4.x86_64.rpm: rsa sha1 (md5) pgp md5 OK
Обратите внимание: вывод команды сообщает, что подпись верна (OK), то есть пакет не был изменён с момента создания.
Убедившись, что пакет поступил на локальную систему в целости, можно установить его снова с помощью команды rpm. Для этого введите rpm –i имя_файла_пакета. Параметр –i указывает утилите rpm установить указанный пакет. Например, для установки пакета gFTP, загруженного ранее, нужно перейти в каталог с файлом пакета и выполнить (от имени root):
rtracy@openSUSE:~> su -
Password:
openSUSE:~ # cd /home/rtracy/Downloads/
openSUSE:/home/rtracy/Downloads # rpm -i gftp-2.0.19-7.1.x86_64.rpm
Программа установлена и готова к использованию. Всё просто!
Совет
Если вы знаете полный URL пакета, который хотите установить, его можно установить напрямую из Интернета. Введите rpm –i url/имя_файла.rpm.
Из приведённого примера видно, что утилита rpm в ходе установки не выдала практически никаких сведений. Некоторые администраторы предпочитают именно такой режим; другие хотят видеть визуальные индикаторы хода установки. Для этого используется параметр –ihv:
openSUSE:/home/rtracy/Downloads # rpm -ihv gftp-2.0.19-7.1.x86_64.rpm
Preparing... ########################################### [100%]
1:gftp ########################################### [100%]
Параметр –h заставляет rpm отображать знаки # в качестве индикатора хода выполнения. Параметр –v включает подробный вывод.
Лично я всегда использую параметр –ihv при работе с rpm. Для небольших пакетов это несущественно. Однако установка крупного RPM-пакета может занять несколько минут, и без –ihv сеанс будет выглядеть зависшим. Визуальный индикатор — пусть даже в виде набора знаков # — даёт уверенность в том, что процесс идёт нормально. Если нужна ещё более подробная информация, используйте параметр –vv.
Одна из замечательных особенностей rpm — автоматическая проверка зависимостей. Программный пакет может зависеть от другого пакета, который должен быть установлен в системе до него. Такой требуемый пакет называется зависимостью (dependency). Утилита rpm проверяет устанавливаемый пакет и автоматически определяет, все ли зависимые пакеты установлены. Если нет, выдаётся ошибка с предложением установить недостающие пакеты.
Если вы хотите проверить зависимости, не выполняя установку, используйте параметр --test. При наличии неудовлетворённых зависимостей они будут выведены на экран. Можно полностью пропустить проверку зависимостей и установить пакет, даже если зависимые программы не установлены (что крайне не рекомендуется), используя параметр --nodeps.
Примечание
Одно из достоинств графических утилит управления программами, таких как YaST, состоит в том, что они не только вычисляют зависимости, но и устанавливают их автоматически. При использовании консольной утилиты rpm все зависимые пакеты необходимо устанавливать вручную.
После запуска rpm установленной программой можно пользоваться. Некоторые пакеты создадут пункт меню или значок в среде рабочего стола KDE или GNOME для запуска приложения.
Другие пакеты — в особенности устанавливающие системные службы — потребуют запуска из командной строки с помощью сценария запуска или путём выполнения имени исполняемого файла. Например, установленный клиент gFTP можно запустить, введя gftp в приглашении командной строки.
Давайте потренируемся устанавливать программы из RPM-пакета в следующем упражнении.
Упражнение 8-2. Установка RPM-пакетов
В этом упражнении вы будете практиковаться в установке клиента gFTP. Для выполнения упражнения можно использовать виртуальную машину из комплекта книги. Запустите снимок состояния 8-2 для получения правильно настроенной среды.
Видео
Посмотрите видео к упражнению 8-2 с демонстрацией выполнения задания.
Выполните следующее:
- При работающей системе откройте терминал.
- При необходимости перейдите в учётную запись root, введя
su –и парольstudent. - Перейдите в домашний каталог командой
cd ~. Используйте командуlsдля просмотра имени файла пакетаgftp. - В приглашении командной строки введите
rpm –ihv gftp-версия.архитектура.rpm, заменивверсияиархитектурана текущие значения версии и архитектуры пакета. - Запустите клиент gFTP командой
gftp &в приглашении командной строки. - Если ваша сеть подключена к Интернету, введите
ftp.openssl.orgв поле Host иAnonymousв поле User, затем нажмите Connect. Вы должны увидеть подключение к FTP-серверу OpenSSL, как показано на рис. 8-6. - Закройте окно gftp.

Рис. 8-6. Использование клиента gFTP для доступа к FTP-серверу
Теперь, когда вы знаете, как устанавливать программы из RPM-пакета, перейдём к вопросу управления установленными программами.
Управление установленными программами с помощью RPM (Managing Installed Software with RPM)¶
Если вы достаточно долго работаете с компьютерами, то знаете, что время от времени программы приходится ремонтировать или удалять. То же самое справедливо и для Linux. В этой части главы мы рассмотрим управление установленными программами. Темы для изучения:
- Удаление программного обеспечения
- Обновление программного обеспечения
- Запрос информации о пакетах
- Проверка пакетов
- Извлечение файлов из пакетов
Начнём с вопроса удаления программ в Linux.
Удаление программного обеспечения (Uninstalling Software)¶
Как ни удивительно, администратору Linux приходится часто удалять программы. Дело не в том, что с программами что-то не так: просто большинство дистрибутивов устанавливают множество пакетов в ходе базовой установки. Если во время установки не задать вручную, какое именно программное обеспечение должно быть установлено, в системе, скорее всего, окажется немало ненужных пакетов. В лучшем случае они занимают дисковое пространство, в худшем — потенциально создают уязвимости в системе безопасности.
После установки любого дистрибутива Linux настоятельно рекомендуется потратить несколько минут на просмотр установленных программ. Обнаружив ненужные — удаляйте их!
Процедура удаления RPM-пакетов столь же проста и понятна, как и их установка. Для этого введите rpm –e имя_пакета в приглашении командной строки. Параметр –e указывает утилите rpm удалить указанный пакет. Например, ранее мы установили пакет gFTP. Удалить его можно командой rpm –e gftp:
Обратите внимание: утилита rpm проверяет зависимости и при удалении. Если в системе установлено программное обеспечение, зависящее от удаляемого пакета, будет выведено сообщение об ошибке с перечнем зависимых пакетов. Сначала необходимо удалить эти пакеты.
Давайте потренируемся удалять RPM-пакеты в следующем упражнении.
Упражнение 8-3. Удаление RPM-пакетов
В этом упражнении вы будете практиковаться в удалении клиента gftp, установленного в предыдущем упражнении. Для выполнения упражнения можно использовать виртуальную машину из комплекта книги. Запустите снимок состояния 8-3 для получения правильно настроенной среды.
Видео
Посмотрите видео к упражнению 8-3 с демонстрацией выполнения задания.
Выполните следующее:
- При работающей системе откройте терминал.
- При необходимости перейдите в учётную запись root, введя
su –и парольstudent. - В приглашении командной строки введите
rpm –e gftp. Должно появиться сообщение об удалении gftp.
Далее рассмотрим обновление RPM-пакетов.
Обновление программного обеспечения (Updating Software)¶
Возможность управления зависимостями в rpm существенно экономит время. Однако она порождает вопрос обновлений. Что если нужно обновить установленный пакет, от которого зависят многие другие? Неужели придётся сначала удалять все зависимые пакеты? Это было бы крайне неудобно!
К счастью, это не так. Утилита rpm позволяет обновить существующий пакет без удаления зависимых пакетов. Для этого используется параметр –U: утилита удалит более старую версию пакета и установит новую. Например, если в системе установлена старая версия gftp и нужно обновиться до версии 2.0.19, выполните rpm –U gftp-2.0.19-7.1.x86_64.rpm:
openSUSE:/home/rtracy/Downloads # rpm -Uhv gftp-2.0.19-7.1.x86_64.rpm
Preparing... ########################################### [100%]
1:gftp ########################################### [100%]
Совет
Если попытаться использовать параметр –U для пакета, который ещё не установлен, rpm просто установит его. Я вообще всегда использую –U вне зависимости от того, устанавливаю или обновляю пакет. С параметром –U также можно использовать –h и –v для отображения индикатора хода выполнения.
Запрос информации о пакетах (Querying Packages)¶
Помимо установки и обновления пакетов, с помощью команды rpm можно запрашивать сведения о них. Для этого используется параметр –q (query). С его помощью можно вывести список всех установленных пакетов, просмотреть версию и номер сборки конкретного пакета или получить подробные сведения о нём.
Параметр –q требует указания, что именно запрашивать. Например, для вывода списка всех установленных пакетов введите rpm –qa:
openSUSE:~ # rpm -qa
xorg-x11-libXau-7.5-1.9.x86_64
libsqlite3-0-3.6.23-4.1.x86_64
libnuma1-2.0.4.rc2-1.2.x86_64
libgssglue1-0.1-13.1.x86_64
libdaemon0-0.13-8.2.x86_64
libaio-0.3.107-4.1.x86_64
pptp-1.7.2-28.1.x86_64
...
Список может быть очень длинным! Для получения сведений о конкретном пакете с –q можно использовать следующие параметры:
-
–iВыводит сводную информацию о конкретном пакете. Например,rpm –qi postfixотобразит информацию о пакете postfix:openSUSE:~ # rpm -qi postfix Name : postfix Relocations: (not relocatable) Version : 2.7.1 Vendor: openSUSE Release : 2.2.1 Build Date: Tue Sep 14 08:07:39 2010 Install Date: Wed Mar 9 11:36:14 2011 Build Host: e133 Group : Productivity/Networking/Email/Servers Source RPM: postfix-2.7.1-2.2.1.src.rpm Size : 2670578 License: IBM Public License .. Signature : RSA/8, Tue Sep 14 08:08:16 2010, Key ID b88b2fd43dbdc284 Packager : http://bugs.opensuse.org URL : http://www.postfix.org/ Summary : A fast, secure, and flexible mailer Description : Postfix aims to be an alternative to the widely-used sendmail program. Authors: -------- Wietse Venema wietse@porcupine.org Distribution: openSUSE 11.3 -
--whatrequiresВыводит список пакетов, требующих указанный пакет. Например,rpm –q --whatrequires postfixпокажет пакеты, зависящие от postfix: -
–lВыводит список файлов, входящих в RPM-пакет. --providesОтображает функциональность, предоставляемую указанным пакетом.-
--requiresВыводит функциональность, требуемую указанным пакетом. В следующем примере показан выводrpm –q --requires postfix:
На экране отображается список системных требований. Если нужно узнать, какой пакет предоставляет конкретное требование, введите rpm –q --whatprovides имя_утилиты. В следующем примере видно, что пакет sed-4.1.5-134.1.x86_64 предоставляет утилиту sed:
Проверка пакетов (Verifying Packages)¶
Помимо запроса информации, утилита rpm позволяет проверять целостность пакетов. Программы могут повреждаться, удаляться или иным образом выходить из строя на любом компьютере независимо от операционной системы. С помощью rpm можно проверить установленные пакеты и убедиться, что всё работает как положено. Для этого используется параметр –V.
Параметр –V позволяет проверить один пакет по его имени, например rpm –V gftp. Для проверки всех пакетов системы введите rpm –Va. В обоих случаях при отсутствии ошибок утилита не выведет ничего. В следующем примере команда rpm –V gftp не выдала ошибок, поэтому на экран ничего не было выведено:
При обнаружении ошибок rpm выводит сообщение об ошибке и имя соответствующего файла:
openSUSE:~ # rpm –Va
S.5....T. c /etc/xinetd.d/vnc
S.5....T. c /etc/sane.d/dll.conf
S.5....T. c /etc/maven/maven2-depmap.xml
.M....... /etc/cups
S.5....T. c /etc/environment
....L.... c /etc/pam.d/common-account
....L.... c /etc/pam.d/common-auth
....L.... c /etc/pam.d/common-password
....L.... c /etc/pam.d/common-session
Сообщения об ошибках, формируемые в процессе проверки, следуют синтаксису:
Символы в сообщении обозначают следующее:
- S — проблема с размером файла
- M — проблема с режимом доступа к файлу
- 5 — проблема с контрольной суммой MD5 файла
- D — проблема с номерами версий файла
- L — проблема с символьной ссылкой файла
- U — проблема с владельцем файла
- G — проблема с группой файла
- T — проблема со временем изменения файла
- c — указанный файл является файлом конфигурации
- имя_файла — имя файла, не прошедшего проверку
Если какой-либо из указанных символов в выводе представлен точкой (.), это означает, что по данному параметру проблем не обнаружено. Символ указывает на выявленную проблему. Например, файл /etc/xinetd.d/vnc имеет ошибки S, 5 и T, то есть проблемы с размером, контрольной суммой MD5 и временем изменения. Кроме того, символ c означает, что это файл конфигурации.
Обратите внимание, что большинство ошибок в примере связаны с файлами конфигурации. Это не является проблемой: файлы конфигурации по своей природе часто изменяются, поэтому они могут не пройти проверку.
Однако если проверку не проходят другие файлы, например исполняемые, — это повод для беспокойства. Основываясь на выводе rpm –V, вы можете принять решение о переустановке пакета. Для этого используется параметр –U --replacepkgs. Например, для принудительной переустановки пакета gFTP введите:
Извлечение файлов из пакетов (Extracting Files from Packages)¶
Иногда возникает необходимость извлечь один или несколько файлов из файла пакета. Для этого можно воспользоваться утилитой rpm2cpio, которая преобразует RPM-пакет в cpio-архив.
Примечание
Работа с cpio-архивами будет подробно рассмотрена в главе 10. Пока просто считайте cpio-архив аналогом tar-архива или zip-файла.
Синтаксис использования rpm2cpio:
Например, для извлечения файла из RPM-пакета gFTP преобразуйте его в cpio-архив:
Затем можно извлечь нужный файл из созданного cpio-архива с помощью утилиты cpio.
Давайте потренируемся управлять RPM-пакетами в следующем упражнении.
Упражнение 8-4. Управление RPM-пакетами
В этом упражнении вы будете практиковаться в управлении установленными RPM-пакетами. Для выполнения упражнения можно использовать виртуальную машину из комплекта книги. Запустите снимок состояния 8-3 для получения правильно настроенной среды.
Видео
Посмотрите видео к упражнению 8-4 с демонстрацией выполнения задания.
Выполните следующее:
- При работающей системе откройте терминал.
- При необходимости перейдите в учётную запись root, введя
su –и парольstudent. - Выведите список всех установленных RPM-пакетов, введя
rpm –qaв приглашении командной строки. - Просмотрите информацию об утилите rpm с помощью команды
rpm –qi rpm. - Определите пакеты, зависящие от пакета rpm, введя
rpm –q --whatrequires rpm. Какие пакеты требуютrpm? - Определите компоненты, необходимые утилите rpm, введя
rpm –q --requires rpm. Что требуется для работыrpm? - Один из компонентов, необходимых
rpm, — этоlibz.so.1. Определите пакет, предоставляющий этот компонент, введяrpm –q --whatprovides libz.so.1. Какой пакет предоставляет этот компонент?
Использование yum для установки RPM-пакетов (Using yum to Install RPM Packages)¶
Помимо rpm, для установки RPM-пакетов из командной строки можно использовать команду yum. Команда yum (Yellowdog Updater Modified, YUM) является надстройкой над rpm и имеет ряд ключевых преимуществ:
- Позволяет установить пакет вместе со всеми его зависимостями одной командой. Это огромный плюс! Управление зависимостями может стать настоящей проблемой при установке пакетов. Это называется «зависимостным адом» (dependency hell): вы хотите установить пакет X, но оказывается, что он зависит от пакетов Y и Z, которые, в свою очередь, зависят от A, B, C, E, F и G — у каждого из которых тоже есть зависимости. В итоге для установки одного пакета может потребоваться установить 20 и более дополнительных. Вот здесь и блистает
yum! Он автоматически вычисляет и устанавливает все зависимые пакеты. - Самостоятельно находит пакеты, выполняя поиск в одном или нескольких репозиториях в Интернете. Больше не нужно тратить часы в поисках нужной версии пакета для удовлетворения зависимостей.
yumсделает всё за вас.
Начав использовать yum, вы, возможно, больше не захотите работать с rpm напрямую! При запуске из командной строки yum находит последнюю версию запрошенного пакета, загружает его, устанавливает зависимости, а затем устанавливает сам пакет.
Внимание
Утилита yum поддерживается не всеми дистрибутивами. Первоначально она была разработана для систем на базе Red Hat, поэтому хорошо поддерживается в Red Hat и Fedora. В openSUSE она не установлена по умолчанию, но её можно установить вручную.
Базовый синтаксис использования yum:
Основные команды yum приведены в таблице 8-1.
| Команда | Описание |
|---|---|
yum install имя_пакета |
Устанавливает указанный пакет. |
yum remove имя_пакета |
Удаляет указанный пакет. |
yum list all |
Выводит все пакеты в репозитории и установленные пакеты. |
yum list installed |
Выводит все установленные пакеты. |
yum list installed имя_пакета |
Проверяет, установлен ли указанный пакет. |
yum list имя_пакета |
Выполняет поиск указанного пакета в настроенных репозиториях. |
yum list available |
Выводит все доступные для установки пакеты из настроенных репозиториев. |
yum list updates |
Формирует список обновлений для всех установленных пакетов. |
yum list update имя_пакета |
Проверяет наличие обновлений для указанного пакета. |
yum info имя_пакета |
Отображает информацию об указанном пакете, включая версию и зависимости. |
yum whatprovides путь/имя_файла |
Определяет RPM-пакет, предоставляющий указанный файл. |
createrepo /путь |
Определяет путь к репозиторию пакетов. |
Таблица 8-1. Команды yum
Например, на рис. 8-7 в приглашении командной строки Fedora введена команда yum install gcc для установки GNU C Compiler. Утилита yum выполняет поиск в настроенных репозиториях, находит последнюю версию gcc, вычисляет зависимости, устанавливает их, а затем устанавливает сам пакет gcc.

Рис. 8-7. Установка пакета gcc с помощью yum
Если нужно только загрузить файл без установки, используйте команду yumdownloader вместо yum. Синтаксис: yumdownloader имя_пакета. Утилита находит последнюю версию пакета в настроенных репозиториях и загружает её.
Конечно, yum и yumdownloader не знают магически, где искать нужные RPM-пакеты — им необходимо сообщить об этом с помощью двух файлов конфигурации:
-
/etc/yum.conf— конфигурационный файлyum. Определяет URL репозиториев, их имена, каталог для хранения загруженных пакетов (cachedir) и путь к файлу журнала (logfile). Пример файлаyum.confв системе Fedora:[root@fs3 ~]# cat /etc/yum.conf [main] cachedir=/var/cache/yum/$basearch/$releasever keepcache=0 debuglevel=2 logfile=/var/log/yum.log exactarch=1 obsoletes=1 gpgcheck=1 plugins=1 installonly_limit=3 color=never # metadata_expire=90m # PUT YOUR REPOS HERE OR IN separate files named file.repo # in /etc/yum.repos.d -
/etc/yum.repos.d/— каталог, где хранятся конфигурационные файлы репозиториев. Как видно из предыдущего примера, конфигурацию репозиториев можно размещать либо в файлеyum.conf, либо в отдельных файлахимя.repoв этом каталоге. Как правило, конфигурацию репозиториев вyum.confне добавляют, а создают по отдельному файлу для каждого репозитория. Список репозиториев нашей системы Fedora:[root@fs3 yum.repos.d]# ls fedora.repo fedora-updates-testing.repo fedora-updates.repo packagekit-media.repoКак видно, в этой системе Fedora настроено четыре репозитория
yum. Пример файла конфигурации репозитория с обновлениями Fedora:[root@fs3 yum.repos.d]# cat fedora-updates.repo [updates] name=Fedora $releasever - $basearch – Updates failovermethod=priority #baseurl=http://download.fedoraproject.org/pub/fedora/linux/updates/$releasever/$basearch/ mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=updates-released-f$releasever&arch=$basearch enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$basearch [updates-debuginfo] name=Fedora $releasever - $basearch - Updates – Debug failovermethod=priority #baseurl=http://download.fedoraproject.org/pub/fedora/linux/updates/$releasever/$basearch/debug/ mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=updates-released-debug-f$releasever&arch=$basearch enabled=0 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$basearch [updates-source] name=Fedora $releasever - Updates Source failovermethod=priority #baseurl=http://download.fedoraproject.org/pub/fedora/linux/updates/$releasever/SRPMS/ mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=updates-released-source-f$releasever&arch=$basearch enabled=0 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$basearch
Этот файл конфигурации репозитория содержит ряд ключевых элементов, описанных в таблице 8-2.
| Элемент | Описание |
|---|---|
[имя_репозитория] |
Определяет репозиторий. |
name= |
Задаёт имя репозитория. |
baseurl= |
Определяет URL расположения файла. В приведённых примерах репозитории находятся в Интернете. Можно также определить локальный репозиторий — на сервере репозиториев в сети или в локальной файловой системе. Синтаксис: протокол:///путь_к_репозиторию. Например, если репозиторий находится на локальном диске в каталоге /var/repos, используйте baseurl=file:////var/repos. |
enabled= |
Включает (1) или отключает (0) репозиторий. |
gpgcheck= |
Включает (1) или отключает (0) проверку GPG-ключа безопасности для файлов репозитория. |
gpgkey= |
Задаёт расположение GPG-ключа безопасности. |
Таблица 8-2. Элементы файла конфигурации репозитория yum