В данной статье мы рассмотрим менеджер пакетов Yum, который позволяет управлять установкой, удалением и обновлением пакетов, автоматически разрешать зависимости, управлять дополнительными репозиториями.

Yum (Yellowdog Updater Modified) – консольный менеджер пакетов для дистрибутивов Linux, основанных на пакетах формата RPM (RedHat Package Manager). Сюда входят такие популярные ОС как RedHat, CentOS, Fedora, Oracle Linux, Scientific Linux.

Знак $ в консоли говорит о том, что мы находимся в пользовательском режиме. Знак # говорит о том, что в привилегированном.

Работая в пользовательском режиме для повышения прав необходимо использовать команду sudo. Например: sudo yum install httpd.

При установке пакетов система просит подтверждение установки: [y/d/N]. Чтобы подтверждение было одобрено по умолчанию, нужно добавить ключ -y

Полная справка по менеджеру пакетов yum:

yum help

Очистить кеш всех пакетов (обчычно используется при возникновении проблем при работе yum):

yum clean all

Пересоздать кеш пакетов заново:

yum makecache

Отобразить список подключенных репозиториев:

yum repolist

Вывести список всех доступных пакетов для установки:

yum list available

Список всех пакетов, которые установлены в системе:

yum list installed

Вывести список пакетов, которые относятся к ядру Linux:

yum list kernel

Проверить установлен ли в системе определенный пакет, например, apache:

yum list installed httpd
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirror.awanti.com
* epel: mirror.datacenter.by
* extras: mirrors.powernet.com.ru
* updates: mirror.axelname.ru
Installed Packages
httpd.x86_64    2.4.6-93.el7.centos    @base

Можно получить более подробную информацию о пакете:

yum info httpd
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirror.awanti.com
* epel: mirrors.glesys.net
* extras: mirrors.powernet.com.ru
* updates: mirror.axelname.ru
Installed Packages
Name        : httpd
Arch        : x86_64
Version     : 2.4.6
Release     : 93.el7.centos
Size        : 9.4 M
Repo        : installed
From repo   : base
Summary     : Apache HTTP Server
URL         : http://httpd.apache.org/
License     : ASL 2.0
Description : The Apache HTTP Server is a powerful, efficient, and extensible
            : web server.

Чтобы установить пакет используется команда yum install. Для установки веб-сервера apache выполните:

yum install httpd

Перед установкой пакета можно проверить его на зависимости и необходимые пакеты с помощью команды:

yum deplist httpd

Если вы хотите установить какой-либо пакет, но забыли его полное название, можно воспользоваться подстановочным символом *. Например:

yum install epel-*

Можно установить сразу несколько пакетов:

yum install wget htop yum-utils

Переустановка пакета:

yum reinstall proftpd

Удалить установленный пакет:

yum remove httpd

!Но перед удалением любого пакета, рекомендуется сначала проверить его на зависимости (бывают пакеты, удаление которых влечет за собой удаление множества других пакетов, что в следствии приводит к неработоспособности системы):

yum deplist httpd

Найти пакет по имени или описанию:

yum search httpd

С помощью опции provides вы можете найти пакеты, содержавшие определенный файл, например:

yum provides */squid.conf

Выполнить обновление всех установленных пакетов:

yum update

Вы можете обновить только определенный пакет, указав его имя:

yum update httpd

Проверить если доступные обновления для системы можно командой:

yum check-update

Получить информацию о доступных обновлениях безопасности:

yum updateinfo list security

Бывают случаи, когда после обновления какого-либо пакета или сервиса, возникают проблемы. Например, после обновления php, перестало работать ваше приложение или сайт. Вы можете вернуть предыдущую версию пакета, откатив установленный пакет:

yum downgrade php

Имеется возможность группой установки пакетов командой grouplist. В репозитории существуют предопределенные группы пакетов с различными наборами программ. Вы можете вывести список имеющихся групп:

yum grouplist

Рассмотрим на примере группового листа «Basic Web Server». Получить информацию о группе и пакетах в ней:

yum groupinfo "Basic Web Server"

При проверке мы видим, что будут установлены набор пакетов и сервисов для веб-сервера.

Ещё один полезный групповой лист «System Administration Tools»:

yum groupinfo "System Administration Tools"

Как видим, в данном листе содержатся пакеты, которые будут полезны для мониторинга и отладки.

Установить групповой лист можно командой:

yum groupinstall "System Administration Tools"

Вы можете вывести информацию об истории установки пакетов yum (списка транзакций) с помощью команды:

yum history list

Вывод состоит из 5 столбцов, в первом выводится ID транзакции по которому можно посмотреть всю информацию (установленные пакеты, зависимости):

Например:

yum history info 10

Более того, можно отменить данную транзакцию командой:

yum history undo 10

В моем случае удалилось бы 4 пакета:

Так же всю информацию об истории установки/удаления пакетов менеджером yum можно посмотреть в логе /var/log/yum.log:

cat /var/log/yum.log
Jun 15 05:34:39 Installed: perl-Getopt-Long-2.40-3.el7.noarch
Jun 15 05:34:41 Installed: 4:perl-5.16.3-295.el7.x86_64
Jun 15 05:34:41 Installed: 2:vim-filesystem-7.4.629-6.el7.x86_64
Jun 15 05:34:43 Installed: 2:vim-common-7.4.629-6.el7.x86_64
Jun 15 05:34:44 Installed: 2:vim-enhanced-7.4.629-6.el7.x86_64
Jun 15 05:34:44 Installed: 1:mc-4.8.7-11.el7.x86_64
Jun 15 05:34:44 Installed: htop-2.2.0-3.el7.x86_64
Jun 15 05:34:44 Installed: tree-1.6.0-10.el7.x86_64
Jun 15 05:35:04 Installed: net-tools-2.0-0.25.20131004git.el7.x86_64
Jun 15 06:46:19 Installed: apr-1.4.8-5.el7.x86_64
Jun 15 06:46:19 Installed: apr-util-1.5.2-6.el7.x86_64
Jun 15 06:46:19 Installed: httpd-tools-2.4.6-93.el7.centos.x86_64
Jun 15 06:46:19 Installed: mailcap-2.1.41-2.el7.noarch
Jun 15 06:46:20 Installed: httpd-2.4.6-93.el7.centos.x86_64

Утилита yum имеет несколько полезных опций, которые часто приходитя использовать при управлении пакетами. Чтобы при установке или удалении пакетов, после ввода команды не подтверждать своих действий, можно воспользоваться опцией -y, например,:

yum install httpd -y

Чтобы ответить no при запросе, нужно указать опцию:

--assumeno

Использовать yum без плагинов или отключить конкретный плагин:

--noplugins

--disableplugin=fastestmirror

Включить отключенный плагин:

--enableplugin=fastestmirror

Задействовать отключенный репозиторий:

yum update –enablerepo=atomic

Отключить определенный репозиторий:

yum update –disablerepo=atomic

Конфигурационный файл yum — /etc/yum.conf.

Основные параметры конфигурационного файла:

cachedir – локальный кэш пакетов (по умоланию /var/cache/yum)

logfile — путь до файла с логами yum

obsoletes — обновлять или нет, устаревшие пакеты(1-да, 0-нет)

gpgcheck — проверка подписи пакета перед установкой (1-да, 0-нет)

keepcache — хранение кеша (1-да, 0-нет)

cachedir — директория для хранения кеша(по умолчанию /var/cache/yum)

debuglevel – уровень отладки от 1 до 10

plugins — включение yum плагинов (1-да, 0-нет)

bugtracker_url – ссылка по которой будут зарегистрированы ошибки работы yum

installonly_limit – максимальное количество версий, которые могут быть установлены для одного пакета.

Некоторые популярные плагины и их описание:

yum-plugin-fastestmirror – плагин служащий для измерения скорости зеркал и предоставления самого быстрого для установки пакетов.

yum-plugin-security — плагин которые предоставляет список обновлений относящихся только к безопасности системы.

yum-plugin-keys — позволяет работать с ключами keys, keys-info, keys-data, keys-remove

Директория где хранятся все плагины /etc/yum/

yum-plugin-versionlock – позволяет блокировать обновление указанных пакетов

Вывести список доступных плагинов yum:

yum search yum-plugin

Вы можете установить выбранный плагин командой yum install, как и любой другой пакет:

yum install yum-plugin-changelog

yum -y install yum-versionlock

Чтобы заблокировать обновление пакета через плагин, выполните:

yum versionlock nginx

Вывести список заблокировнных пакетов:

yum versionlock list

Убрать пакет из заблокированных:

yum versionlock delete nginx

Если вам в какой-то момент времени не нужно использовать определенный плагин, вы его можете отключить, добавив префикс при вызове yum:

--disableplugin=fastestmirror

Или же отключить вообще все плагины, установленные в системе:

--noplugins

Yum для работы с репозиториями программ использует протокол HTTP/1.1. Если ваш Linux сервер имеет доступ в интернет только через HTTP прокси сервер, вы можете указать имя прокси сервера в конфигурационном файле /etc/yum.conf в секции [main]:

proxy=http://proxyservername:3128

Если прокси-сервер требует авторизацию, добавьте строки:

proxy_proxy_username=user

proxy_password=pass

Для проверки работы yum через прокси сервер воспользуйтесь командой:

yum clean all && yum search nginx

Для проверки я указал публичный прокси сервер с Германии и при установке, сработал плагин fastestmirror, нашел зеркала с которых скорость будет выше:

Если нужно использовать прокси только для некоторых репозиториев, не нужно править файл /etc/yum.conf, а настройки прокси указать в конфигурационном файле репозитория /etc/yum.repos.d/ваш_конфиг.repo.