Время на прочтение
4 мин
Количество просмотров 687K
Шпаргалка по работе с пакетным менеджером Yum (Yellowdog Updater, Modified), который используется в популярных Linux дистрибутивах: RedHat, CentOS, Scientific Linux (и других). В целях экономии места вывод команд не представлен.
Оглавление
Команды
Опции Yum
Пакет Yum-Utils
Конфигурационные файлы
Плагины
Работа через прокси
отображение команд и опций
#yum help
список названий пакетов из репозиторий
#yum list
список всех доступных пакетов
#yum list available
список всех установленных пакетов
#yum list installed
установлен ли указанный пакет
#yum list installed httpd
список установленных и доступных пакетов
#yum list all
список пакетов, относящихся к ядру
#yum list kernel
отображение информации о пакете
#yum info httpd
список зависимостей и необходимых пакетов
#yum deplist httpd
найти пакет, который содержит файл
#yum provides "*bin/top"
поиск пакета по имени и описанию
#yum search httpd
#yum search yum
получить информацию о доступных обновлениях безопасности
#yum updateinfo list security
вывести список групп
#yum grouplist
вывести описание и содержимое группы
#yum groupinfo "Basic Web Server"
установка группы пакетов «Basic Web Server»
#yum groupinstall "Basic Web Server"
удаление группы
#yum groupremove "Basic Web Server"
Проверка на доступные обновления
#yum check-update
список подключенных репозиториев
#yum repolist
информация об определенном репозитории
#yum repoinfo epel
информация о пакетах в указанном репозитории
#yum repo-pkgs epel list
установить все пакеты из репозитория
#yum repo-pkgs reponame install
удалить пакеты установленные из репозитория
#yum repo-pkgs reponame remove
создать кэш
#yum makecache
проверить локальную базу rpm (поддерживаются параметры dependencies, duplicates, obsoletes, provides)
#yum check
#yum check dependencies
просмотр yum истории (вывод списка транзакций)
#yum history list
просмотр информации определенной транзакции (установленные пакеты, установленные зависимости)
#yum history info 9
отмена транзакции
#yum history undo 9
повторить
#yum history redo 9
дополнительно можно просмотреть лог
#cat /var/log/yum.log
удалить пакеты сохраненные в кэше
#yum clean packages
удалить все пакеты и метаданные
#yum clean all
установить пакет
#yum install httpd
удаление пакета
#yum remove httpd
обновить пакет
#yum update httpd
обновить все пакеты
#yum update
обновить до определенной версии
#yum update-to
установить из локальной директории (поиск/установка зависимостей будут произведены из подключенных репозиториев)
#yum localinstall httpd.rpm
или
#yum install httpd.rpm
установить с http
#yum localinstall http://server/repo/httpd.rpm
откатиться к предыдущей версии пакета
#yum downgrade
переустановка пакета (восстановление удаленных файлов)
#yum reinstall httpd
удаление ненужных более пакетов
#yum autoremove
создание локальных репозиториев (createrepo ставится отдельно)
#createrepo
установка обновлений по расписанию (yum-cron устанавливается отдельно)
#yum-cron
Опции Yum
ответить «yes» при запросе,
-y
#yum update -y
ответить «no» при запросе
--assumeno
использовать Yum без плагинов
--noplugins
или отключить определенный плагин
--disableplugin=fastestmirror
включить плагины, которые установлены, но отключены
#yum --enableplugin=ps
включить отключенный репозиторий
#yum update -y --enablerepo=epel
отключить репозиторий
#yum update -y --disablerepo=epel
скачать пакеты, но не устанавливать
(на Centos 7 x86_64 будут скачаны в ‘/var/cache/yum/x86_64/7/base/packages/’)
#yum install httpd --downloadonly
Cледующие команды доступны после установки пакета yum-utils
найти из какого репозитория установлен пакет
#find-repos-of-install httpd
найти процессы, пакеты которых обновлены и требуют рестарта
#needs-restarting
запрос к репозиторию, узнать зависимости пакета, не устанавливая его
#repoquery --requires --resolve httpd
синхронизировать yum репозиторий updates в локальную директорию repo1
#reposync -p repo1 --repoid=updates
проверить локальный репозиторий на целостность
#verifytree URL
завершить транзакции
#yum-complete-transaction
установить необходимые зависимости для сборки RPM пакета
#yum-builddep
управление конфигурационными опциями и репозиториями yum
#yum-config-manager
запрос к локальной базе yum, отображение информации о пакете
(использованная команда, контрольная сумма, URL с которого был установлен и другое)
#yumdb info httpd
скачать rpm пакеты из репозитория
#yumdownloader
скачать src.rpm пакет из репозитория
(должен быть подключен соответствующий репозиторий, например в ‘/etc/yum.repos.d/CentOS-Sources.repo’ в CentOS)
yumdownloader --source php
Конфигурационные файлы Yum и их расположение
Основной конфигурационный файл
/etc/yum.conf
директория, с конфигурациями (например, yum плагины)
/etc/yum/
директория, содержащая информацию о репозиториях
/etc/yum.repos.d/
Некоторые опции yum.conf:
Директория, где yum хранит кэш и файлы базы (по умолчанию ‘/var/cache/yum’)
cachedir=/var/cache/yum/$basearch/$releasever
Определяет должен или нет Yum хранить кэш заголовков и пакетов после успешной установки. Значения: 0 или 1. (по умолчанию 1)
keepcache=1
уровень вывода отладочных сообщений. Значения: 1-10 (по умолчанию 2)
debuglevel=2
лог файл (по умолчанию ‘/var/log/yum.log’)
logfile=/var/log/yum.log
обновлять устаревшие пакеты
obsoletes=1
проверка подписи пакетов. Значения: 0 или 1 (по умолчанию 1)
gpgcheck=1
включение плагинов. Значения: 0 или 1 (по умолчанию 1)
plugins=1
Некоторые полезные плагины
Добавляет опцию командной строки для просмотра ченжлога перед/после обновлениями
yum-plugin-changelog
выбирает более быстрые репозитории из списка зеркал
yum-plugin-fastestmirror
добавляет команды keys, keys-info, keys-data, keys-remove, которые позволяют работать с ключами.
yum-plugin-keys
блокировать указанные пакеты от обновления, команда yum versionlock
yum-plugin-versionlock
добавление команд yum verify-all, verify-multilib, verify-rpm для проверки контрольных сумм пакетов
yum-plugin-verify
Работа Yum через прокси сервер
Для всех пользователей:
добавить в секцию [main] в /etc/yum.conf
proxy="http://server:3128"
при необходимости указать пароль, добавить
proxy_proxy_username=user
proxy_password=pass
указать прокси для отдельного пользователя
#export http_proxy="http://server:3128"
Буду рад любым дополнениям и замечаниям.
Дополнительно читайте:
#man yum
#man rpm
Обновлено: 15.05.2023
Опубликовано: 01.07.2021
Статья представляет из себя небольшую шпаргалку по работе с пакетным менеджером dnf (Rocky Linux, CentOS Stream 8) и yum (CentOS 7 и ниже). В данном руководстве мы будем использовать только команду yum, так как она работает и в CentOS 7, и в более поздних версиях RPM-дистрибутивах.
Работа с репозиторием
Управление
Обслуживание
Примеры настроек
Установка пакетов и работа с ними
Получение информации о пакетах
Управление модулями
Блокировка пакетов для установки и обновления
Возможные ошибки
Репозитории
Команда yum/dnf использует репозитории для своей работы. Очень важно понять, как с ними работать в системе. Конфиги репозиториев CentOS описывают пути, по которым система может брать установочные файлы для пакетов, а также правила работы с самими репозиториями.
Примеры команд для управления репозиториями
1. Просмотр репозиториев.
Список включенных репозиториев:
yum repolist
Список включенных и отключенных репозиториев:
yum repolist all
Также мы можем получить подробное описание для каждого включенного репозитория:
yum repolist -v
Список отключенных репозиториев можно посмотреть отдельно командой:
yum repolist disabled
2. Добавление репозитория командой.
Для добавления репозитория мы можем воспользоваться командой yum-config-manager, для этого сначала нужно установить yum-utils:
yum install yum-utils
Теперь вводим:
yum-config-manager –add-repo <репозиторий>
Например:
yum-config-manager –add-repo https://yum.mariadb.org/10.5/centos8-amd64
* на основе ссылки https://yum.mariadb.org/10.5/centos8-amd64 будет добавлен репозиторий.
Важно отметить, что утилита yum-config-manager не умеет задавать красивые имена для репозитория. Это приводит к эстетической и технической проблемам. Если эстетика никак не помешает работать, то вторая проблема серьезнее — рассмотрим ее подробнее.
При подключении репозитория с длинным URL адресом мы получим ошибку:
Bad id for repo: <имя репозитория>, byte = $ 42
Она означает, что название идентификатора превышает допустимую длину. В итоге, репозиторий не будет использоваться системой.
Проблему можно решить обходным способом. Сначала мы добавим репозиторий с неправильным адресом, но коротким и красивым, например:
yum-config-manager –add-repo http://repo-name
Потом уже зададим правильный URL с помощью setopt (о нем рассказано ниже):
yum-config-manager –save –setopt=repo-name.baseurl=https://yum.mariadb.org/10.5/centos8-amd64/yum/redhat/$releasever/mariadb/1.7/x86_64
3. Добавление репозитория через файл.
Также мы можем создать конфигурационный файл с описанием репозитория. Все файлы находятся в каталоге /etc/yum.repos.d. Например, создадим файл с добавлением репозитория mariadb:
vi /etc/yum.repos.d/mariadb.repo
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.5/centos8-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
enabled=1
* где:
- name — произвольное имя репозитория.
- baseurl — путь, по которому система может забирать пакеты из репозитория.
- gpgkey — путь до открытого gpg-ключа. Нужен для проверки цифровой подписи пакетов.
- gpgcheck — нужно ли проверять цифровую подпись пакетов.
- enabled — опция включает или выключает репозиторий.
4. Временное включение и отключение репозиториев во время операций (на примере репозитория EPEL).
Отключить во время обновления:
yum update –disablerepo=epel
Включить во время обновления:
yum update –enablerepo=epel
Отключить во время установки:
yum install –disablerepo=epel
Включить во время установки:
yum install –enablerepo=epel
5. Постоянное отключение/включение репозиториев.
Мы можем отключить наш репозиторий командой:
yum-config-manager –disable <имя репозитория>
* для выполнения данной команды мы должны установить в систему пакет yum-utils.
Например:
yum-config-manager –disable yum.mariadb.org_10.5_centos8-amd64
Разрешить репозиторий можно той же командой с опцией –enable:
yum-config-manager –enable yum.mariadb.org_10.5_centos8-amd64
Также мы можем выполнить настройку в конфигурационном файле, например:
vi /etc/yum.repos.d/mariadb.repo
Находим:
enabled=1
… и меняем на:
enabled=0
* в данном примере 1 разрешает репозиторий, а 0 запрещает.
6. Настройка опций.
Наши репозитории настраиваются с помощью опций, которые перечислены в конфигурационном файле. Мы можем также их задавать командой:
yum-config-manager –save –setopt=<имя репозитория>.<имя опции>=<значение>
Например:
yum-config-manager –save –setopt=mariadb.module_hotfixes=1
Довольно часто нам нужно работать с опцией проверки ключей. Тогда вводим команды:
yum-config-manager –save –setopt=mirror-yandex.gpgcheck=1
yum-config-manager –save –setopt=mirror-yandex.gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
* в данном примере мы указываем на необходимость проверки gpg-ключа (gpgcheck) и путь до него (gpgkey). Само собой, по данному пути (/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7) у нас должен быть загружен сам ключ.
Обслуживание
1. Удалить кэш для списков пакетов в репозиториях, а также загруженные исходники для пакетов:
yum clean –enablerepo=* all
Также мы можем удалить кэш только для определенных репозиториев, например:
yum clean all –disablerepo=”*” –enablerepo=”epel,nginx-thirdparty”
* обязательно, сначала должен следовать disablerepo, после enablerepo.
2. Сформировать кэш списков пакетов в репозиториях:
yum makecache
Настройка репозитория
В данном разделе приведем некоторые опции, с помощью которых можно настроить репозитории. Как было сказано выше, каждый репозиторий описывается в своем файле. В нем же мы можем задавать различные опции.
Предположим, что мы будем настраивать базовый репозиторий системы РЕД ОС. Тогда открываем:
vi /etc/yum.repos.d/RedOS-Base.repo
1. baseurl
Один из основных параметров. Определяет пути расположения метаданных репозитория. Именно по нему система будет искать служебный файл со списком пакетов.
baseurl=https://repo1.red-soft.ru/redos/7.3/$basearch/os,https://mirror.yandex.ru/redos/7.3/$basearch/os,http://repo.red-soft.ru/redos/7.3/$basearch/os
* обратите внимание, что в данном примере прописано использование нескольких адресов, разделенных запятой. Также в адресе можно указывать переменные.
2. gpgcheck
Указывает, нужно ли проверять подписи пакетов.
gpgcheck=0
* в данном примере мы отключаем проверку.
3. priority
Определяет приоритет репозитория. Например, один и тот же пакет будет находиться в нескольких репозиториях. Будет установлен тот, версия которого выше. Но если нам нужно установить пакеты из определенного репозитория, даже, если их версия ниже. Для этого и нужен приоритет.
priority=1
Чем ниже число, тем выше приоритет. Если опция priority не указана, такой репозиторий будет иметь меньших приоритет, по сравнению с тем, где он указан.
Установка, обновление, удаление и другое
В данном разделе рассмотрим команды, при помощи которых мы можем манипулировать установкой, обновлением, удалением и понижением версии пакетов.
1. Установка пакета:
yum install <имя пакета>
Команда выведет на экран все действия, которые будут предприняты — установка зависимостей, обновление других пакетов, и даже (в редких случаях), удаление конфликтов. Нам необходимо согласиться с данными действиями и начнется загрузка и установка.
2. Обновление всех установленных пакетов:
yum update
3. Обновление конкретного пакета
yum update <имя пакета>
4. Установить пакет из определенного репозитория:
yum –disablerepo=”*” –enablerepo=thirdparty install nginx
* как говорилось выше, мы можем оперировать опциями disablerepo и enablerepo для включения и отключения репозитория во время установки. В данном примере мы запретили все и разрешили установить нужный нам пакет из репозитория thirdparty.
5. Понизить версию пакета можно с помощью команды downgrade:
yum downgrade <имя пакета и версию, которые нужно установить>
Например, если в нашей системе установлен пакет nginx-1.15.3, мы сможем понизить его версию так:
yum downgrade nginx-1.13.1
* в данном примере будет удален пакет nginx-1.15.3 и установлен nginx-1.13.1.
6. Удаление пакета.
Если нам нужно удалить пакет из системы, выполняем:
yum remove <имя пакета>
7. Только скачать пакет, не устанавливая его:
yum install –downloadonly –downloaddir=<куда скачать> <имя пакета>
Например:
yum install –downloadonly –downloaddir=/tmp nodejs
* скачиваем пакет nodejs в каталог /tmp.
8. Распаковать содержимое пакета RPM:
rpm2cpio <путь до файла rpm> | cpio -idmv
Просмотр информации о пакетах
1. Список установленных пакетов.
а) для Rocky Linux:
yum list –installed
б) для CentOS 7:
rpm -qa
Если нам нужно найти пакет по части его имени, можно добавить фильтр с помощью grep:
yum list –installed | grep nginx
rpm -qa | grep nginx
* в данном примере команда вернет результат, если в нашей системе установлен пакет, в названии которого есть nginx.
2. Получение зависимостей.
а) для установленного пакета:
yum deplist <имя пакета>
Или с помощью rpm:
rpm -q httpd –requires
Например:
yum deplist nginx
* покажет, какие пакеты или библиотеки необходимы для установки nginx. Дополнительно, могут быть указаны пакеты, которые нужны для удовлетворения зависимостей.
б) из установочного файла.
Выполняется с помощью утилиты rpm с добавлением опции -p:
rpm -qp <путь до пакета> –requires
Например:
rpm -qp nginx-1.23.1-1.el7.ngx.x86_64.rpm –requires
3. Посмотреть список файлов внутри установочного пакета.
Мы можем посмотреть данный список для уже установленного пакета:
rpm -ql <имя установленного пакета>
Например:
rpm -ql nginx
Или из установочного файла:
rpm -qlp <путь до RPM-пакета>
Например:
rpm -qlp nginx.rpm
4. Посмотреть, какой пакет предоставляет определенный файл:
yum provides audit-libs-python
В данном примере мы получим ответ:
audit-libs-python-2.8.5-4.el7.x86_64 : Python bindings for libaudit
Repo : base
Это значит, что audit-libs-python содержится в пакете audit-libs-python-2.8.5-4.el7.x86_64, который в свою очередь, находится в репозитории base.
Можно также выполнять поиск по маске:
yum provides audit-libs-*
5. Показать постинсталляционный скрипт.
После установки некоторых пакетов может запускаться набор команд, которые выполняют дополнительную настройку системы или установленного софта. Чтобы посмотреть, что именно будет выполняться, вводим команду:
rpm -qp –scripts <путь до RPM-файла>
6. Показать общую информацию о пакете.
а) для установочного файла:
rpm -qip <путь до RPM-файла>
б) для установленного пакета:
rpm -qi <имя пакета>
Например:
rpm -qi libcurl-devel
Name : libcurl-devel
Version : 7.29.0
Release : 59.el7_9.1
Architecture: x86_64
Install Date: Mon 01 Aug 2022 02:02:29 PM MSK
Group : Development/Libraries
Size : 638991
License : MIT
Signature : RSA/SHA256, Wed 18 Nov 2020 05:18:23 PM MSK, Key ID 24c6a8a7f4a80eb5
Source RPM : curl-7.29.0-59.el7_9.1.src.rpm
Build Date : Mon 16 Nov 2020 07:36:11 PM MSK
Build Host : x86-02.bsys.centos.org
Relocations : (not relocatable)
Packager : CentOS BuildSystem <http://bugs.centos.org>
Vendor : CentOS
URL : http://curl.haxx.se/
Summary : Files needed for building applications with libcurl
Description :
The libcurl-devel package includes header files and libraries necessary for
developing programs which use the libcurl library. It contains the API
documentation of the library, too.
Управление потоками (модулями)
Модульные репозитории позволяют установить пакеты разных версий. По сути, это группы RPM-пакетов, которые должны быть установлены вместе и представляют из себя логическую единицу для установки программного продукта нужной версии. Включить можно только одну версию модуля для репозитория.
1. Вывести список доступных модулей:
dnf module list
* обозначения:
- [d] — значения по умолчанию.
- [e] — включенные модули.
- [x] — отключены.
- [i] — установленные.
В нашей системе может не быть включенных модулей. В этом случае пакеты будут устанавливаться из стандартных репозиторией.
Мы также можем посмотреть отдельные по состоянию группы модулей:
dnf module list –enabled
* включенные.
dnf module list –disabled
* отключенные.
dnf module list –installed
* установленные.
2. Вывести список возможных модулей для конкретного пакета:
dnf module list nodejs
* в данном примере для nodejs.
3. Разрешить или запретить конкретный модуль:
dnf module enable nodejs:12
dnf module disable nodejs:14
* первая команда разрешит модуль nodejs версии 12, вторая, соответственно, запрещает использование модуля nodejs версии 14.
4. Переключение модуля.
Если мы хотим изменить активный модуль, необходимо сначала отключить текущий командой dnf module reset, например:
dnf module reset php:7.3
* если попробовать включить модуль без отключения активного мы увидим ошибку:
Error: It is not possible to switch enabled streams of a module.
It is recommended to remove all installed content from the module, and reset the module using ‘dnf module reset <module_name>’ command. After you reset the module, you can install the other stream.
После включаем новый поток:
dnf module enable php:7.4
Заблокировать установку и обновление пакетов
В некоторых случаях, может возникнуть необходимость запретить установку и обновление определенных пакетов. Есть несколько способов это сделать.
1. Во время обновления (разово)
Данный метод можно использовать при обновлении пакетов. Мы с помощью ключа -x просто указываем через запятую те, которые не должны быть обновлены, например:
yum -x postgresql*,asterisk update
* данной командой мы обновим все пакеты, кроме asterisk и тех, название которых начинается на postgresql.
2. Постоянный запрет в yum.conf
Аналогично, можно запретить как установку, так и обновление в конфигурационном файле yum.conf. Открываем его командой:
vi /etc/yum.conf
Добавляем:
exclude=postgresql* asterisk
* в данном примере мы также запретим установку и обновление asterisk, а также пакетов, название которых начинается на postgresql.
3. Настройка репозитория
Ну и также мы можем заблокировать установку и обновление через конфигурационный файл репозитория. Например:
vi /etc/yum.repos.d/pgdg-redhat-all.repo
И добавим:
[pgdg12]
…
exclude=postgresql12*
* в данном примере мы блокируем пакет postgresql12.
Возможные ошибки
Рассмотрим примеры ошибок, с которыми мы можем столкнуться и способы их решения.
1. Curl error (60): SSL peer certificate or SSH remote key was not OK
Ошибка появляется при попытке выполнить операцию обновления или установки пакетов.
Причина: сертификат подключенного репозитория не проходит проверку. Возможно, он просрочен или выдан не доверенным центром сертификации.
Решение: проблему можно решить на стороне сервера (если мы являемся его администратором), например, получив правильный сертификат у Let’s Encrypt. На стороне клиента можно отключить проверку SSL для репозитория командой:
yum-config-manager –save –setopt=<имя репозитория>.sslverify=0
Или в конфигурационном файле репозитория добавить или изменить строку с sslverify:
sslverify=0
* данная опция задает необходимость проверки SSL для репозитория.
2. Error: GPG validation FAILED
Ошибка появляется при попытке установить пакет.
Причина: система не может загрузить и импортировать gpg-ключ. Это возможно в разных сценариях, например, в настройках репозитория не указан путь до него, но при этом указано, что проверка подписи необходима или ключ не удалось загрузить и импортировать.
Решение: для некоторых пакетов идет отдельная инструкция по настройке репозитория, в частности, установки ключа GPG. Или мы можем отключить проверку gpg командой:
yum-config-manager –save –setopt=<имя репозитория>.gpgcheck=0
Или через конфигурационный файл:
gpgcheck=0
This example shows how to locate a module in the AppStream repository and how to find out more about its contents.
Procedure
-
List available modules:
$
yum module list
Name Stream Profiles Summary (...) postgresql 10 [d] client, PostgreSQL server and client module server [d] postgresql 9.6 client, PostgreSQL server and client module server [d] (...) Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled -
Examine details of the postgresql module:
$
yum module info postgresql
Name : postgresql Stream : 10 [d][a] Version : 820190104140132 Context : 9edba152 Profiles : client, server [d] Default profiles : server Repo : appstream-internal-nightly Summary : PostgreSQL server and client module Description : (...) (...) Name : postgresql Stream : 9.6 Version : 820190104140337 Context : 9edba152 Profiles : client, server [d] Default profiles : server Repo : appstream-internal-nightly Summary : PostgreSQL server and client module Description : (...) (...) Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled, [a]ctive]Because no stream is specified, all streams are used for the listing.
-
Examine profiles available in stream 10 of the postgresql module:
$
yum module info --profile postgresql:10
(...) Name : postgresql:10:820190104140132:9edba152:x86_64 client : postgresql server : postgresql-serverEach of the profiles installs a different set of packages, including their dependencies.
-
Install the postgresql module using the default stream 10 and profile server:
#
yum install @postgresql
Dependencies resolved. ==================================================================== Package Version Repository Size ==================================================================== Installing group/module packages: postgresql-server 10.6-1.module+el8+2469+5ecd5aae appstream 5.1 M Installing dependencies: libpq 10.5-1.el8 appstream 188 k postgresql 10.6-1.module+el8+2469+5ecd5aae appstream 1.5 M Installing module profiles: postgresql/server Enabling module streams: postgresql 10 Transaction Summary ==================================================================== Install 3 Packages Total download size: 6.7 M Installed size: 27 M Is this ok [y/N]: y (...)The stream 10 is enabled and packages in its profile server installed.
-
Inspect the current status of the postgresql module:
$
yum module list postgresql
Name Stream Profiles Summary postgresql 10 [d][e] client, server [d] [i] (...) postgresql 9.6 client, server [d] (...) Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalledThe output shows that the default stream 10 is enabled and its profile server is installed.
Introduction to yum command
yum (Yellowdog Updater Modified) is a tool in an RPM-based Linux system for managing the packages. It can install, update and remove packages on the system. It also provides information about installed packages on the system and available packages on the default repositories. yum automatically resolves dependencies and performs obsolete processing based on repository metadata.
ALSO READ: 8 chacl command examples in Linux [Cheat Sheet]
How yum works
- YUM is basically a package management tool which relies on repositories to look for packages for install/update/downgrade/remove purpose
- So you must have a repository to be able to use yum.
- All supported Linux distributions come with their own set of repositories. By default all the repository files are configured inside
/etc/yum.repos.d
with.conf
extension. - The repo configuration file include repo name, repo path, gpg check and enabled parameter. Based on this parameter, yum will query the repository for available packages.
- You can also configure your own repository.
Here is a sample repo configuration file:
[BaseOS] name=CentOS-$releasever - Base mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=BaseOS&infra=$infra #baseurl=http://mirror.centos.org/$contentdir/$releasever/BaseOS/$basearch/os/ gpgcheck=1 enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
Here,
- name: Repository Name
- mirrorlist/baseurl: Path of the repository which contains all the packages. Supports HTTP(S), FTP(S), FILE etc. NFS is not supported directly, so you must manually first mount the NFS share and the use
file://
to access the repo. - gpgcheck: perform a checksum match using the GOG key to make sure no one has contaminated the repo.
0
(Zero) means disable the check. - enabled: You can enable or disable specific repo.
0
(Zero) means disabled and1
(One) means enabled - gpgkey: Path of the gpgkey to be used for checksum validation if
gpgcheck = 1
Different examples to use yum command
You need to have the root privileges to execute the yum
command. You can either switch to root or use sudo
to get the root privilege. The basic syntax of yum
command is:
$ sudo yum [options] [command] [package_name]
Below, we will look at different examples of yum
commands to manage the packages in an RPM-based Linux distribution.
1. Install a package along with it’s dependencies using yum command
You can use this command to install any packages on the system. It will automatically install the latest version and its dependencies.
$ sudo yum install package_name
Sample Output:
[deepak@localhost ~]$ sudo yum install iotop ... Resolving Dependencies --> Running transaction check ---> Package iotop.noarch 0:0.6-4.el7 will be installed --> Finished Dependency Resolution ... Installed: iotop.noarch 0:0.6-4.el7 Complete!
ALSO READ: 15+ scp command examples in Linux [Cheat Sheet]
2. Remove a package and it’s dependencies using yum command
You can use remove
command to remove any installed packages and their dependencies from the system. You cannot remove the yum package as it is included in the protected_packages configuration.
$ sudo yum remove package_name
Sample Output:
[deepak@localhost ~]$ sudo yum remove iotop Loaded plugins: fastestmirror, langpacks Resolving Dependencies --> Running transaction check ---> Package iotop.noarch 0:0.6-4.el7 will be erased --> Finished Dependency Resolution ... Removed: iotop.noarch 0:0.6-4.el7 Complete!
3. yum command to update a package and its dependencies
You can update any installed package with yum
command. It only updates the package if the latest versions are available.
$ sudo yum update package_name
As you can observe here, all dependent packages of NetworkManager have been updated.
Sample Output:
[deepak@localhost ~]$ sudo yum update NetworkManager ... Resolving Dependencies --> Running transaction check ---> Package NetworkManager.i686 1:1.18.8-1.el7 will be updated --> Processing Dependency: NetworkManager = 1:1.18.8-1.el7 for package: 1:NetworkManager-ppp-1.18.8-1.el7.i686 --> Processing Dependency: NetworkManager = 1:1.18.8-1.el7 for package: 1:NetworkManager-tui-1.18.8-1.el7.i686 --> Processing Dependency: NetworkManager(x86-32) = 1:1.18.8-1.el7 for package: 1:NetworkManager-team-1.18.8-1.el7.i686 --> Processing Dependency: NetworkManager(x86-32) = 1:1.18.8-1.el7 for package: 1:NetworkManager-adsl-1.18.8-1.el7.i686 --> Processing Dependency: NetworkManager(x86-32) = 1:1.18.8-1.el7 for package: 1:NetworkManager-ppp-1.18.8-1.el7.i686 --> Processing Dependency: NetworkManager(x86-32) = 1:1.18.8-1.el7 for package: 1:NetworkManager-wifi-1.18.8-1.el7.i686 ---> Package NetworkManager.i686 1:1.18.8-2.el7_9 will be an update --> Processing Dependency: NetworkManager-libnm(x86-32) = 1:1.18.8-2.el7_9 for package: 1:NetworkManager-1.18.8-2.el7_9.i686 ... Updated: NetworkManager.i686 1:1.18.8-2.el7_9 NetworkManager-glib.i686 1:1.18.8-2.el7_9 Dependency Updated: NetworkManager-adsl.i686 1:1.18.8-2.el7_9 NetworkManager-libnm.i686 1:1.18.8-2.el7_9 NetworkManager-ppp.i686 1:1.18.8-2.el7_9 NetworkManager-team.i686 1:1.18.8-2.el7_9 NetworkManager-tui.i686 1:1.18.8-2.el7_9 NetworkManager-wifi.i686 1:1.18.8-2.el7_9 Complete!
If it is run without specifying a package name, it updates every installed package on the system.
$ sudo yum update
ALSO READ: 10 elinks command examples in Linux [Cheat Sheet]
4. yum command to search a package from available repositories
search
command allows you to find the packages by name. It does not have to be the exact name. It displays all the available packages that match the word.
$ sudo yum search package_name
Sample Output:
5. yum command to get the list of all packages
list
command prints the list of all packages that are installed and available in the package management repositories.
$ sudo yum list
Sample Output:
[deepak@localhost ~]$ sudo yum list Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirror-hk.koddos.net * extras: mirror-hk.koddos.net * updates: mirror-hk.koddos.net Installed Packages GConf2.i686 3.2.6-8.el7 @anaconda GeoIP.i686 1.5.0-14.el7 @anaconda ModemManager.i686 1.6.10-4.el7 @anaconda ModemManager-glib.i686 1.6.10-4.el7 @anaconda NetworkManager.i686 1:1.18.8-2.el7_9 @updates ... Available Packages 3proxy.x86_64 0.8.13-1.el8 epel AusweisApp2.x86_64 1.22.2-3.el8 epel AusweisApp2-data.noarch 1.22.2-3.el8 epel AusweisApp2-doc.noarch 1.22.2-3.el8 epel BackupPC.x86_64 4.4.0-1.el8 epel BackupPC-XS.x86_64 0.62-1.el8 epel BibTool.x86_64 2.68-1.el8 epel ...
6. List all the installed packages with yum command
To get the list of only installed packages on the system, you can use the following command.
$ sudo yum list installed
Sample Output:
7. yum command to get the list of a specific package
You can specify the package name to get the list or find the package. It shows both available or installed packages.
$ sudo yum list package_name
Sample Output:
8. yum command to get information of a package
If you want to know the information of the package, you can use this command. It displays the name, architecture, version, release, size, license, and other details.
$ sudo yum info package_name
Sample Output:
9. Reinstall a package with yum command
You can also reinstall a package that is already installed on the system.
$ sudo yum reinstall package_name
Sample Output:
[deepak@localhost ~]$ sudo yum reinstall nmap ... Resolving Dependencies --> Running transaction check ---> Package nmap.i686 2:6.40-19.el7 will be reinstalled --> Finished Dependency Resolution Dependencies Resolved ================================================================================================================ Package Arch Version Repository Size ================================================================================================================ Reinstalling: nmap i686 2:6.40-19.el7 base 3.9 M Transaction Summary ================================================================================================================ Reinstall 1 Package ... Installed: nmap.i686 2:6.40-19.el7 Complete!
ALSO READ: 10+ cmp command examples in Linux [Cheat Sheet]
10. yum command to check the available updates of packages
You can check if any of the installed packages on your system have updates available with this command.
$ sudo yum check-update
Sample Output:
11. yum command to download package instead of installing
Sometimes, you may need to download the packages without installing them in your system. In that case, you can use --downloadonly
option. To specify the download directory, use --downloaddir=<DIR_PATH>
option.
$ sudo yum install package_name --downloadonly --downloaddir=DIR_PATH
Sample Output:
## Suppress output and give YES to the prompt ~]# yum -q -y install mariadb --downloadonly --downloaddir=/root/ ## Following packages were downloaded ~]# ls -l mariadb-* -rw-r--r-- 1 root root 6309098 Sep 15 08:27 mariadb-10.3.28-1.module_el8.3.0+757+d382997d.x86_64.rpm -rw-r--r-- 1 root root 65086 Sep 15 08:27 mariadb-common-10.3.28-1.module_el8.3.0+757+d382997d.x86_64.rpm -rw-r--r-- 1 root root 204648 Sep 15 08:27 mariadb-connector-c-3.1.11-2.el8_3.x86_64.rpm -rw-r--r-- 1 root root 14908 Sep 15 08:27 mariadb-connector-c-config-3.1.11-2.el8_3.noarch.rpm ## Mariadb rpm was not installed ~]# rpm -qa | grep mariadb
12. List all group packages using yum command
The collection of packages in a certain group are called group packages. This command lists all the available groups for the system.
$ sudo yum grouplist
Sample Output:
[deepak@localhost ~]$ sudo yum grouplist Loaded plugins: fastestmirror, langpacks There is no installed groups file. Maybe run: yum groups mark convert (see man yum) Loading mirror speeds from cached hostfile * base: mirror-hk.koddos.net * extras: mirror-hk.koddos.net * updates: mirror-hk.koddos.net Available Environment Groups: Minimal Install Compute Node Infrastructure Server File and Print Server Basic Web Server Virtualization Host Server with GUI GNOME Desktop KDE Plasma Workspaces Development and Creative Workstation Available Groups: Compatibility Libraries Console Internet Tools Development Tools Graphical Administration Tools Legacy UNIX Compatibility Scientific Support Security Tools Smart Card Support System Administration Tools System Management Done
ALSO READ: 10+ practical examples to create symbolic link in Linux
13. yum command to install a group package
If you install a group package, it will install all the packages present in that group. You can use this command to install a group package.
$ sudo yum groupinstall group_package
Sample Output:
[deepak@localhost ~]$ sudo yum groupinstall 'Compatibility Libraries' Loaded plugins: fastestmirror, langpacks There is no installed groups file. Maybe run: yum groups mark convert (see man yum) Loading mirror speeds from cached hostfile * base: mirror-hk.koddos.net * extras: mirror-hk.koddos.net * updates: mirror-hk.koddos.net Resolving Dependencies --> Running transaction check ---> Package compat-db47.i686 0:4.7.25-28.el7 will be installed --> Processing Dependency: compat-db-headers = 4.7.25-28.el7 for package: compat-db47-4.7.25-28.el7.i686 ---> Package compat-exiv2-023.i686 0:0.23-2.el7 will be installed ---> Package compat-glibc.i686 1:2.12-4.el7.centos will be installed --> Processing Dependency: compat-glibc-headers = 1:2.12-4.el7.centos for package: 1:compat-glibc-2.12-4.el7.centos.i686 ---> Package compat-libcap1.i686 0:1.10-7.el7 will be installed ---> Package compat-libf2c-34.i686 0:3.4.6-32.el7 will be installed ---> Package compat-libgfortran-41.i686 0:4.1.2-45.el7 will be installed --> Finished Dependency Resolution ... Installed: compat-db47.i686 0:4.7.25-28.el7 compat-exiv2-023.i686 0:0.23-2.el7 compat-glibc.i686 1:2.12-4.el7.centos compat-libcap1.i686 0:1.10-7.el7 compat-libf2c-34.i686 0:3.4.6-32.el7 compat-libgfortran-41.i686 0:4.1.2-45.el7 compat-libtiff3.i686 0:3.9.4-12.el7 compat-openldap.i686 1:2.3.43-5.el7 libpng12.i686 0:1.2.50-10.el7 openssl098e.i686 0:0.9.8e-29.el7.centos.3 Dependency Installed: compat-db-headers.noarch 0:4.7.25-28.el7 compat-glibc-headers.i686 1:2.12-4.el7.centos kernel-headers.i686 0:3.10.0-1160.42.2.el7.centos.plus Complete!
14. yum command to update group package
You can use this command to update any installed group package in your system.
$ sudo yum groupupdate group_package
Sample Output:
[deepak@localhost ~]$ sudo yum groupupdate 'Compatibility Libraries'
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirror-hk.koddos.net
* extras: mirror-hk.koddos.net
* updates: mirror-hk.koddos.net
Maybe run: yum groups mark install (see man yum)
No packages in any requested group available to install or update
15. yum command to remove group package
The removal of a group package from the system removes all the packages that belong to that group. It is not recommended unless you want to get rid of all packages of a certain group.
$ sudo yum groupremove group_package
Sample Output:
[deepak@localhost ~]$ sudo yum groupremove 'Compatibility Libraries' Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirror-hk.koddos.net * extras: mirror-hk.koddos.net * updates: mirror-hk.koddos.net No environment named Compatibility Libraries exists Resolving Dependencies --> Running transaction check ---> Package compat-db47.i686 0:4.7.25-28.el7 will be erased ---> Package compat-exiv2-023.i686 0:0.23-2.el7 will be erased ---> Package compat-glibc.i686 1:2.12-4.el7.centos will be erased --> Processing Dependency: compat-glibc = 1:2.12-4.el7.centos for package: 1:compat-glibc-headers-2.12-4.el7.centos.i686 ---> Package compat-libcap1.i686 0:1.10-7.el7 will be erased ---> Package compat-glibc-headers.i686 1:2.12-4.el7.centos will be erased --> Finished Dependency Resolution ... Running transaction Erasing : 1:compat-glibc-2.12-4.el7.centos.i686 1/11 Erasing : 1:compat-glibc-headers-2.12-4.el7.centos.i686 2/11 Erasing : compat-libf2c-34-3.4.6-32.el7.i686 3/11 Erasing : openssl098e-0.9.8e-29.el7.centos.3.i686 4/11 Erasing : compat-libtiff3-3.9.4-12.el7.i686 5/11 Erasing : libpng12-1.2.50-10.el7.i686 6/11 ... Removed: compat-db47.i686 0:4.7.25-28.el7 compat-exiv2-023.i686 0:0.23-2.el7 compat-glibc.i686 1:2.12-4.el7.centos compat-libcap1.i686 0:1.10-7.el7 compat-libf2c-34.i686 0:3.4.6-32.el7 compat-libgfortran-41.i686 0:4.1.2-45.el7 compat-libtiff3.i686 0:3.9.4-12.el7 compat-openldap.i686 1:2.3.43-5.el7 libpng12.i686 0:1.2.50-10.el7 openssl098e.i686 0:0.9.8e-29.el7.centos.3 Dependency Removed: compat-glibc-headers.i686 1:2.12-4.el7.centos Complete!
ALSO READ: vgcfgrestore: Recover LVM without Backup [100% Working]
16. List currently enabled repositories with yum command
This command prints the list of all enabled repositories on the system.
$ sudo yum repolist
OR
$ sudo yum repolist enabled
Sample Output:
[deepak@localhost ~]$ sudo yum repolist Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirror-hk.koddos.net * extras: mirror-hk.koddos.net * updates: mirror-hk.koddos.net repo id repo name status base/7/i386 CentOS-7 - Base 7,611 extras/7/i386 CentOS-7 - Extras 404 updates/7/i386 CentOS-7 - Updates 1,992 repolist: 10,007
You can also list the disabled yum repositories by passing the argument disabled
.
$ sudo yum repolist disabled
17. yum command to list all yum repositories
You can list all the configured repositories on your system using all
option.
$ sudo yum repolist all
Sample Output:
18. Enable specific repository for runtime execution
--enablerepo
option allows you to install a package from any specific repository. It also enables a disabled repository to install a package.
$ sudo yum install package_name --enablerepo=repo_name
OR
You can decide to disable all the repositories and only use a single repository using
$ sudo yum install package_name --disablerepo=* --enablerepo=repo_name
Sample Output:
19. Disable specific repository for runtime execution
--disablerepo
option disables the repository, and the package will not be installed from that repository. If the package mentioned is not available in any of the enabled repositories, you may not be able to install the package.
$ sudo yum install package_name --disablerepo=repo_name
For Example, due to some issues two of my repositories were unreachable with following error:
Errors during downloading metadata for repository 'c8-media-BaseOS':
- Curl error (37): Couldn't read a file:// file for file:///media/CentOS/BaseOS/repodata/repomd.xml [Couldn't open file /media/CentOS/BaseOS/repodata/repomd.xml]
Errors during downloading metadata for repository 'c8-media-AppStream':
- Curl error (37): Couldn't read a file:// file for file:///media/CentOS/AppStream/repodata/repomd.xml [Couldn't open file /media/CentOS/AppStream/repodata/repomd.xml]
Due to this error, yum was not allowing me to install the packages. So I chose to temporarily disable these repos and continue with package installation as anyhow I didn’t need those repos for the package which I was planning to install:
~]# yum install iotop --disablerepo=c8-media-BaseOS,c8-media-AppStream
Sample Output:
ALSO READ: 5+ lvscan command examples in Linux [Cheat Sheet]
20. Find which rpm package provides a specific file
You can use this command to find a specific file of packages. You can provide the file name or the path to be searched with yum provides
or whatprovides
command as shown below:
$ sudo yum provides file_name
OR
$ sudo yum whatprovides file_name
For Example, to find the rpm which provides useradd command we can use:
As you can see, it has given the RPM name which is responsible for installing useradd binary. But there may be some more files with the same name.
To get that complete list you can use regex with yum command:
[root@controller ~]# yum provides */useradd Last metadata expiration check: 0:35:45 ago on Wed 15 Sep 2021 08:15:15 AM IST. bash-completion-1:2.7-5.el8.noarch : Programmable completion for Bash Repo : @System Matched from: Filename : /usr/share/bash-completion/completions/useradd bash-completion-1:2.7-5.el8.noarch : Programmable completion for Bash Repo : BaseOS Matched from: Filename : /usr/share/bash-completion/completions/useradd shadow-utils-2:4.6-8.el8.x86_64 : Utilities for managing accounts and shadow password files Repo : @System Matched from: Filename : /etc/default/useradd Filename : /usr/sbin/useradd shadow-utils-2:4.6-12.el8.x86_64 : Utilities for managing accounts and shadow password files Repo : BaseOS Matched from: Filename : /etc/default/useradd Filename : /usr/sbin/useradd
So now we get a whole list of useradd
files which are available in different path along with the owner rpm name.
21. View the history of all the yum command executed on the node
This command shows the information of what has happened in the past execution of yum
command.
$ sudo yum history
Sample Output:
ALSO READ: Using lvreduce to PROPERLY shrink Logical Volume [Cheat Sheet]
The output may look confusing to you, I have already written a detailed article covering this command.
23. yum command to undo and redo changes
You can undo and redo the changes made by specific yum command execution. The transaction_id
can be collected from yum history
command. To undo the change, you can use:
$ sudo yum history undo transaction_id
Sample Output:
[deepak@localhost ~]$ sudo yum history undo 10 Loaded plugins: fastestmirror, langpacks Undoing transaction 10, from Mon Sep 13 19:36:08 2021 Install iotop-0.6-4.el7.noarch @base Resolving Dependencies --> Running transaction check ---> Package iotop.noarch 0:0.6-4.el7 will be erased --> Finished Dependency Resolution Dependencies Resolved ================================================================================================================ Package Arch Version Repository Size ================================================================================================================ Removing: iotop noarch 0.6-4.el7 @base 156 k Transaction Summary ================================================================================================================ Remove 1 Package ... Removed: iotop.noarch 0:0.6-4.el7 Complete! [deepak@localhost ~]$
To redo the change, you can use:
$ sudo yum history redo transaction_id
Sample Output:
[deepak@localhost ~]$ sudo yum history redo 10 Loaded plugins: fastestmirror, langpacks Repeating transaction 10, from Mon Sep 13 19:36:08 2021 Install iotop-0.6-4.el7.noarch @base Loading mirror speeds from cached hostfile * base: mirror-hk.koddos.net * extras: mirror-hk.koddos.net * updates: mirror-hk.koddos.net Resolving Dependencies --> Running transaction check ---> Package iotop.noarch 0:0.6-4.el7 will be installed --> Finished Dependency Resolution Dependencies Resolved ================================================================================================================ Package Arch Version Repository Size ================================================================================================================ Installing: iotop noarch 0.6-4.el7 base 52 k Transaction Summary ================================================================================================================ Install 1 Package ... Installed: iotop.noarch 0:0.6-4.el7 Complete!
ALSO READ: 6 practical scenarios to use grep recursive with examples
24. yum command to undo all transactions up to the specified transaction
You can use rollback
command to undo all transactions up to the specified transaction. Suppose, if you have 15 transactions in the yum history and you pass the argument 5 as transaction ID. Then it will undo all the transactions from 15 to 6.
NOTE:
Use this command with caution as it can potentially break your system if you plan to rollback multiple transactions. In such scenarios it is always recommended to use LVM snapshot feature to perform rollback rather than yum rollback.
$ sudo yum history rollback transaction_id
Sample Output:
[deepak@localhost ~]$ sudo yum history rollback 9 Loaded plugins: fastestmirror, langpacks Rollback to transaction 9, from Mon Sep 13 19:34:36 2021 Undoing the following transactions: 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21 Updated NetworkManager-1:1.18.8-1.el7.i686 @anaconda Update 1:1.18.8-2.el7_9.i686 @updates Updated NetworkManager-adsl-1:1.18.8-1.el7.i686 @anaconda Update 1:1.18.8-2.el7_9.i686 @updates Updated NetworkManager-glib-1:1.18.8-1.el7.i686 @anaconda Update 1:1.18.8-2.el7_9.i686 @updates Updated NetworkManager-libnm-1:1.18.8-1.el7.i686 @anaconda Update 1:1.18.8-2.el7_9.i686 @updates Updated NetworkManager-ppp-1:1.18.8-1.el7.i686 @anaconda Dep-Install compat-db-headers-4.7.25-28.el7.noarch @base Install iotop-0.6-4.el7.noarch @base Dep-Install kernel-headers-3.10.0-1160.42.2.el7.centos.plus.i686 @updates Reinstall nmap-2:6.40-19.el7.i686 @base Dep-Install nmap-ncat-2:6.40-19.el7.i686 @base ...
25. Execute yum command without YES/NO prompt
By default, you will be asked a question when you try to install or remove a package. You can use -y
option to choose yes option in the yum command.
$ sudo yum command -y package_name
Sample Output:
[deepak@localhost ~]$ sudo yum install mariadb -y
...
Resolving Dependencies
--> Running transaction check
---> Package mariadb.i686 1:5.5.68-1.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================================================
Package Arch Version Repository Size
================================================================================================================
Installing:
mariadb i686 1:5.5.68-1.el7 base 8.8 M
Transaction Summary
================================================================================================================
Install 1 Package
...
Installed:
mariadb.i686 1:5.5.68-1.el7
Complete!
[deepak@localhost ~]$
ALSO READ: 15 useradd command examples in Linux [Cheat Sheet]
25. yum command to clean the yum caches
yum stores the package data in the/var/cache/yum/ directory, where the caches are also created. The caches use some space in the disk and sometimes may cause errors. You can use this command to clean all those caches.
$ sudo yum clean all
Sample Output:
[deepak@localhost ~]$ sudo yum clean all
Loaded plugins: fastestmirror, langpacks
Cleaning repos: base extras updates
Cleaning up list of fastest mirrors
Other repos take up 348 k of disk space (use --verbose for details)
26. Enter the yum shell with yum command
You can use the interactive shell of yum to execute all the yum
commands.
$ sudo yum shell
Sample Output:
[deepak@localhost ~]$ sudo yum shell Loaded plugins: fastestmirror, langpacks > info yum Loading mirror speeds from cached hostfile * base: mirror-hk.koddos.net * extras: mirror-hk.koddos.net * updates: mirror-hk.koddos.net Installed Packages Name : yum Arch : noarch Version : 3.4.3 Release : 168.el7.centos Size : 5.6 M Repo : installed From repo : anaconda Summary : RPM package installer/updater/manager URL : http://yum.baseurl.org/ License : GPLv2+ Description : Yum is a utility that can check for and automatically download and : install updated RPM packages. Dependencies are obtained and downloaded : automatically, prompting the user for permission as necessary. > repo list repo id repo name AppStream CentOS-8 - AppStream BaseOS CentOS-8 - Base HighAvailability CentOS-8 - HA PowerTools CentOS-8 - PowerTools epel Extra Packages for Enterprise Linux 8 - x86_64 epel-modular Extra Packages for Enterprise Linux Modular 8 - x86_64 extras CentOS-8 - Extras > exit Leaving Shell [deepak@localhost ~]$
Conclusion
This article shows you the different examples of yum
commands to install, remove, search or update packages and their dependencies. You can also manage the group packages and the repositories. yum
command is a useful tool to get information about packages in an RPM-based Linux system.
What’s Next
6 practical examples of yum history to rollback updates and patches
Further Reading
man page for yum command
YUM (Yellowdog Updater Modified) – утилита командной строки с открытым исходным кодом, а также графический менеджер пакетов для RPM (RedHat Package Manager). С помощью yum пользователь или системный администратор может легко искать, устанавливать, обновлять, удалять пакеты программного обеспечения в системах Fedora linux, RHEL, CentOS. Для поиска и установки пакетов с разрешением зависимостей, yum использует множество сторонних репозиториев.
1. Установка пакетов с yum
Что-бы Установить FTP сервер VsFTPd, нужно выполнить:
# yum install vsftpd
После проверки зависимостей пакета, yum попросит подтверждения операции, что-бы установка прошла в автоматическом режиме, нужно добавить ключ -y:
# yum -y install vsftpd
2. Yum, удаление пакетов
Что-бы удалить пакет со всеми его зависимостями нужно использовать yum с опцией remove:
# yum remove vsftpd
Как и в предыдущем случае, будет запрошено подтверждение, которого можно избежать, использовав ключ -y:
# yum -y remove vsftpd
3. Yum, обновление пакетов
Для обновления пакетов в yum, используется опция update. Предположим, необходимо обновить ftp сервер, proftpd с разрешением зависимостей, для этого выполняем команду:
# yum update proftpd Resolving Dependencies --> Running transaction check ---> Package proftpd.x86_64 0:1.3.5d-2.el7 will be updated ---> Package proftpd.x86_64 0:1.3.5e-2.el7 will be an update --> Finished Dependency Resolution Dependencies Resolved ========================================================================= Package Arch Version Repository Size ========================================================================= Updating: proftpd x86_64 1.3.5e-2.el7 epel 3.7 M Transaction Summary ========================================================================= Upgrade 1 Package Total download size: 3.7 M Is this ok [y/d/N]: y Downloading packages: Delta RPMs disabled because /usr/bin/applydeltarpm not installed. proftpd-1.3.5e-2.el7.x86_64.rpm | 3.7 MB 00:00:09 Running transaction check Running transaction test Transaction test succeeded Running transaction Updating : proftpd-1.3.5e-2.el7.x86_64 1/2 Cleanup : proftpd-1.3.5d-2.el7.x86_64 2/2 Verifying : proftpd-1.3.5e-2.el7.x86_64 1/2 Verifying : proftpd-1.3.5d-2.el7.x86_64 2/2 Updated: proftpd.x86_64 0:1.3.5e-2.el7 Complete!
4. Yum, список пакетов по имени
Что-бы проверить пакеты по их имени используется команда list, проверить можно сразу несколько пакетов:
# yum list nload htop Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirror.awanti.com * extras: mirror.awanti.com * updates: centos.mirror.far.fi Installed Packages htop.x86_64 2.0.2-1.el7 @epel Available Packages nload.x86_64 0.7.4-4.el7 epel
5. Yum, поиск пакетов
Найти пакет с помощью yum можно, как по полному имени пакета, так и по его части, для этого используется команда search:
# yum search vsftpd Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirror.awanti.com * extras: mirror.awanti.com * updates: centos.mirror.far.fi ==================== N/S matched: vsftpd ==================== vsftpd-sysvinit.x86_64 : SysV initscript for vsftpd daemon vsftpd.x86_64 : Very Secure Ftp Daemon Name and summary matches only, use "search all" for everything.
В данном случае yum показал результаты в которых имя пакета или его краткое описание полностью совпадает со строкой поиска и было предложено использовать расширенный вариант поиска с командой search all, в таком случае yum будет искать совпадение не только в имени и кратком описании, но и в полном описании пакета.
# yum search all vsftpd ....................... ====================== Matched: vsftpd ======================= vsftpd-sysvinit.x86_64 : SysV initscript for vsftpd daemon vsftpd.x86_64 : Very Secure Ftp Daemon ccze.x86_64 : A robust log colorizer pure-ftpd-selinux.x86_64 : SELinux support for Pure-FTPD
Если же команде search передать только часть имени пакета, то yum сразу проведет поиск по имени, по краткому а так-же по полному описанию пакета, то есть результат будет как в случае с search all.
6. Yum, информация о пакете
Что-бы получить расширенную информацию о пакете, используется команда info:
# yum info vsftpd Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirror.awanti.com * extras: mirror.awanti.com * updates: centos.mirror.far.fi Available Packages Name : vsftpd Arch : x86_64 Version : 3.0.2 Release : 21.el7 Size : 169 k Repo : base/7/x86_64 Summary : Very Secure Ftp Daemon URL : https://security.appspot.com/vsftpd.html License : GPLv2 with exceptions Description : vsftpd is a Very Secure FTP daemon. It was written completely from : scratch.
7. Yum, список доступных пакетов
Получить список всех доступных для установки пакетов можно с помощью команды list и ключевого слова available:
# yum list available
8. Yum список установленных пакетов
Что-бы вывести все установленные пакеты используется опция list и ключевое слово installed:
# yum list installed
9. Yum, узнать из какого пакета файл
Узнать какой пакет установил конкретный файл можно с помощью команды provides:
# yum provides /etc/yum.conf Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirror.awanti.com * extras: mirror.awanti.com * updates: centos.mirror.far.fi yum-3.4.3-150.el7.centos.noarch : RPM package installer/updater/manager Repo : base Matched from: Filename : /etc/yum.conf
10. Yum, проверка обновлений
Посмотреть пакеты для которых доступно обновление можно с помощью команды check-update:
# yum check-update NetworkManager.x86_64 1:1.4.0-20.el7_3 updates NetworkManager-libnm.x86_64 1:1.4.0-20.el7_3 updates NetworkManager-tui.x86_64 1:1.4.0-20.el7_3 updates
11. Обновить систему с помощью yum
Что-бы держать операционную систему и программное обеспечение в актуальном состоянии, нужно периодически выполнять обновление. Следующая команда выполнит обновление пакетов до последних версий, включая исправления безопасности:
# yum update
12. Yum, список доступных групп пакетов
Для удобства, пакеты программного обеспечения можно объединять в группы. Вместо установки каждого пакета отдельно, yum может установить определенную группу, при этом будут установлены все пакеты входящие в данную группу. Получить список доступных групп пакетов можно так:
# yum grouplist Loaded plugins: fastestmirror There is no installed groups file. Maybe run: yum groups mark convert (see man yum) Loading mirror speeds from cached hostfile * base: mirror.awanti.com * extras: mirror.awanti.com * updates: mirror.awanti.com Available Environment Groups: Minimal Install Compute Node Infrastructure Server File and Print Server Basic Web Server Virtualization Host Server with GUI GNOME Desktop KDE Plasma Workspaces Development and Creative Workstation Available Groups: Compatibility Libraries Console Internet Tools Development Tools Graphical Administration Tools Legacy UNIX Compatibility Scientific Support Security Tools Smart Card Support System Administration Tools System Management Done
13. Yum, состав группы пакетов
Узнать из каких пакетов состоит группа можно так:
# yum groupinfo "Basic Web Server"
14. Yum, установка группы пакетов
Для установки определенной группы пакетов используется команда groupinstall:
# yum groupinstall 'Basic Web Server'
15. Yum, обновление группы пакетов
# yum groupupdate "Basic Web Server"
16. Yum, удаление группы пакетов yum
# yum groupremove "Basic Web Server"
17. Список репозитариев yum
Что-бы увидеть список включенных репозитариев, выполните:
# yum repolist Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirror.awanti.com * extras: mirror.awanti.com * updates: centos.mirror.far.fi repo id repo name status base/7/x86_64 CentOS-7 - Base 9,363 epel Extra Packages for Enterprise Linux 7 - x86_64 29,392 extras/7/x86_64 CentOS-7 - Extras 380 updates/7/x86_64 CentOS-7 - Updates 1,851 repolist: 42,393
Что-бы посмотреть список и включенных и выключенных репозитариев, нужно использовать такой вариант команды:
# yum repolist all
18. Yum, установка пакета из конкретного репозитария
Что-бы установить пакет из определенного, включенного или отключенного репозитария, используйте опцию –enablerepo, в примере ниже, будет включен репозитарий epel:
# yum --enablerepo=epel install nload
19. Интерактивная оболочка yum
У yum есть своя, весьма функциональная и удобная интерактивная оболочка в которой выполняются необходимые команды:
# yum shell Loaded plugins: fastestmirror > version Installed: 7/x86_64 533:a2e66be16bec121cfd145378961f7e8184084ff2 Group-Installed: yum 14:bac853782e456a8ab662dc99a4d175fdef97a66e > exit
20. Yum, очистка кэша репозитариев
По умолчанию yum хранит все данные включенных репозиториев в подкаталогах /var/cache/yum/ARCH/VER/repo_name, чтобы очистить все кэшированные файлы включенных репозиториев, например в целях экономии дискового пространства, нужно выполнить:
# yum clean all
21. История операций yum
Что-бы посмотреть историю операций yum, выполните:
# yum history Loaded plugins: fastestmirror ID | Login user | Date and time | Action(s) | Altered ------------------------------------------------------------------------------- 16 | root | 2017-06-06 02:14 | I, U | 100 EE 15 | root | 2017-06-05 06:46 | Erase | 1 14 | root | 2017-06-05 06:25 | Install | 1 ................... history list
Не забываем про
# man yum # man yum.conf
Удачи.