Менеджер пакетов YUM
![]()
Yellow dog Updater, Modified (YUM) — открытый консольный менеджер RPM-пакетов. Позволяет облегчить каскадное обновление Linux систем с отслеживанием взаимосвязей RPM-пакетов. Используется, как правило в RedHat-подобных операционных системах (CentOS, Fedora Linux). В данной статье будут рассматриваться решения проблем с ним и частые вопросы по его использованию.
yum install выдает ошибку can’t start new thread при запуске
При запуске yum install somepackagename (или другого действия) выдается ошибка
Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile Traceback (most recent call last): File "/usr/lib/python2.4/threading.py", line 416, in start _start_new_thread(self.__bootstrap, ()) thread.error: can't start new thread
Ошибка вызвана нехваткой оперативной памяти. Освободите оперативную память/увеличьте тариф или попробуйте отключить использование плагинов прописав в /etc/yum.conf пропишите
plugins=0
plugins=1
Примеры использования менеджера пакетов Yum
- yum list — вывести список всех пакетов, как установленных, так и доступных из репозиториев
- yum list kernel* — список всех пакетов, начинающихся со слова kernel
- yum search keyword — поискать пакеты, в описаниях которых содержится ключевое слово keyword
- yum info kernel-smp — выдать информацию о пакете с названием kernel-smp
- yum check-update — проверить наличие обновлений в репозиториях
- yum check-update clamav — проверить наличие обновления пакета clamav
- yum update — проверить наличие обновлений и если есть свежие версии, то обновить
- yum update firefox — обновить firefox и все зависимые пакеты, если есть свежие версии
- yum install package-1 — установить пакет package-1 из репозитория (при наличии зависимостей также установить и необходимые пакеты)
- yum remove package-1 — удалить пакет, а также зависимые от него пакеты
- yum grouplist — список групп пакетов
- yum groupinstall «Group Name» — установить все пакеты из группы «Group Name»
- yum repolist — список доступных репозиториев
Как добавить репозиторий
1. Способ первый
Перед подключением этого репозитория рекомендуется скачать и выполнить импорт GPG ключа:
проверить корректность импорта можно так:
rpm -qa gpg*
Если команда выдает ошибку, то значит уже выпущена новая версия пакета.
- Создать файлик с расширением repo в директории /etc/yum.repos.d/ и прописать в нем данные в таком формате:
[название репозитория] name=описание репозитория; baseurl=url репозитория. Формат: http://www.mydomain.org/myrepo ftp://ftp.mydomain.org/myrepo file:///path_to_my_repo enabled=включен/отключен(1 или 0) gpgcheck=проверка GPG-подписи пакетов (1 или 0) gpgkey=путь к ключу GPG
Рекомендуется еще установить и настроить плагин yum-priorities. Применяется для упорядочивания приоритетов репозиториев. Пакеты из репозитория с более низким приоритетом не будут обновлять пакеты, установленные из репозиториев, имеющих более высокий приоритет. Также приоритеты используются и при установке новых пакетов — в том случае, если пакет находится в двух или более репозиториях, он будет установлен из того репозитория, который имеет наивысший приоритет.
Полезные ссылки
- Доступные репозитории для CentOS — http://centos.name/?page/additionalresources/repositories
yum upgrade
yum upgrade — аналог apt upgrade в Debian подобных системах, который используется на CentOS. Команда скачивает свежие версии всех пакетов и устанавливает их.
yum upgrade — обновление системы CentOS
Как при любом обновлении возможны непредвиденные последствия, которые могут возникнуть если программное обеспечение устанавливалось нестандартно. Например, собиралось из исходников. Или ставилось из сторонних репозиториев.
Перед любым обновлением нужно делать бэкапы и проверять их состояние.
Выполнения команды в общем случае достаточно. Какие-то пакеты при обновлении можно исключить. Например, пакеты ядра
Пример приведен на скриншоте:

Флаг exclude со значением kernel добавляется если обновлять ядро не требуется, или если это невозможно (такое бывает при использовании виртуальных машин).
Можно добавлять к команде флаг —skip-broken
Все пакеты, которые нельзя обновить, будут пропускаться
Конфигурационный файл пакетного менеджера yum находится по пути /etc/yum.conf. Если обновление всегда требуется выполнять с исключениями — в файл можно включить нужную директиву
exclude=kernel*
Дополнительно эту опцию указывать при обновлении не потребуется.
Также в файле /etc/yum.conf задаются другие настройки пакетного менеджера.

Например, в файле задан путь к логу. По умолчанию это /var/log/yum.log. В логе нужно искать информацию о том какие пакеты и когда устанавливались в систему или удалялись из неё. Это бывает нужно при поиске причин сбоев.
Обновления могут вести к сбоям и конфликтам в работе различного ПО. Перед любыми обновлениями желательно делать полные бэкапы системы.
Настроить перодическое резервное копирование системы и отдельных файлов можно с помощью планировщика CRON.
Yum, шпаргалка

Шпаргалка по работе с пакетным менеджером Yum (Yellowdog Updater, Modified), который используется в популярных Linux дистрибутивах: RedHat, CentOS, Scientific Linux (и других). В целях экономии места вывод команд не представлен.
Оглавление
#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» при запросе,
#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
Шпаргалка по менеджеру пакетов YUM в CentOS и RHEL

23.09.2019

VyacheslavK

CentOS, Linux

Комментариев пока нет
В этой статье мы рассмотрим менеджер пакетов Yum, который позволяет управлять установкой, удалением и обновлением программ (.RPM-пакетов), автоматически разрешать зависимости, управлять дополнительными репозиториями. Данная статья о Yum должна прежде всего быть интересна как шпаргалка для начинающих администраторов Linux.
Yum (Yellowdog Updater Modified) – консольный менеджер пакетов для дистрибутивов Linux, основанных на пакетах формата RPM. (RedHat Package Manager) Сюда входят такие популярные ОС как RedHat, CentOS, Fedora, Oracle Linux, Scientific Linux.
Yum: установка, обновление и удаление пакетов
С чего начать? Пожалуй, как и в любых других случаях, начинаем со справки:
yum help – полная справка по менеджеру пакетов yum
Открыв ее, я выделю основные команды:
yum clean all – очистить кеш всех пакетов (обчычно используется при возникновении проблем при работе yum).
yum makecache – пересоздать кеш пакетов заново.
yum repolist – отобразить список подключенных репозиториев, вывод выглядит так:
Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirror.fasthost.ru * extras: mirror.fasthost.ru * updates: mirror.fasthost.ru repo id repo name status base/7/x86_64 CentOS-7 - Base 10,019 extras/7/x86_64 CentOS-7 - Extras 435 updates/7/x86_64 CentOS-7 - Updates 2,500 repolist: 12,954
У меня в системе установлены только стандартные репозитории CentOS-7: Base, Extras и Updates.
yum list available – вывести список всех доступных пакетов для установки.
yum list installed – список всех пакетов, которые установлены в системе.
yum list kernel – вывести список пакетов, которые относятся к ядру Linux.
Вы можете проверить установлен ли в вашей системе определенный пакет, например, apache:
yum list installed httpd
Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirror.fasthost.ru * extras: mirror.fasthost.ru * updates: mirror.fasthost.ru Installed Packages httpd.x86_64 2.4.6-89.el7.centos.1 @updates
Вы можете получить более подробную информацию о пакете, например, получим данные о пакете MariaDB:
yum info mariadb

Чтобы установить пакет используется команда yum install. Для установки веб-сервера apache выполните:
yum install httpd
Если при выплнении команд yum вы получаете ошибку Traceback (most recent call last):thread.error: can’t start new thread , скорее всего у вас не хватает оперативной памяти. Попробуйте добавить RAM или отключите плагины yum (в /etc/yum.conf укажите plugins=0).
Перед установкой пакета можно проверить его на зависимости и необходимые пакеты с помощью команды:
yum deplist httpd
Если вы хотите установить какой-то пакет, но забыли его полное название, можно воспользоваться подстановочным символом *. Например:
yum install epel-*
Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: centos.fasthost.ru * extras: centos.fasthost.ru * updates: centos.fasthost.ru Resolving Dependencies --> Running transaction check ---> Package epel-release.noarch 0:7-11 will be installed --> Finished Dependency Resolution Install 1 Package Total download size: 15 k Installed size: 24 k Is this ok [y/d/N]:
Если ввести просто:
yum install epel
No package epel available. Error: Nothing to do
Увы, пакета не видно.
Yum позволяет установить сразу несколько пакетов:
yum install httpd php wget rsyslog
yum reinstall proftpd
Чтобы удалить установленный пакет с помощью yum используется параметр remove :
yum remove httpd
Но перед удалением любого пакета, рекомендуется сначала проверить его на зависимости (бывают пакеты, удаление которых влечет за собой удаление множества других пакетов, что в следствии приводит к неработоспособности системы):
yum deplist proftpd

Найти пакет по имени или описанию:
yum search nginx
С помощью опции provides вы можете найти пакеты, содержавшие определенный файл, например:
yum provides */squid.conf
Выполнить обновление всех установленных пакетов можно с помощью команды:
Вы можете обновить только определенный пакет, указав его имя:
Проверить если доступные обновления для системы можно командой:
Получить информацию о доступных обновлениях безопасности:
yum updateinfo list security
Бывают случаи, когда после обновления какого-либо пакета или сервиса, возникают проблемы. Например, после обновления php, перестал работать ваш сайт. Вы можете вернуть предыдущую версию пакета, откатив установленный пакет через yum:
yum downgrade perl
Так же хотел обратить ваше внимание, на групповую установку пакетов через grouplist. В репозитории существуют предопределенные группы пакетов с различными наборами программ. Вы можете вывести список имеющихся групп:
Рассмотрим на примере группового листа «Basic Web Server». Получить информацию группе и пакетах в ней:
yum groupinfo «Basic Web Server»

При проверке мы видим, что будут установлены набор пакеты и сервисы, для веб-сервера.
И еще один полезный групповой лист «System Administration Tools»:
yum groupinfo «System Administration Tools”

Как видим в данном листе содержатся пакеты, которые будут полезны для мониторинга и отладки.
Установить групповой лист можно командой:
yum groupinstall «System Administration Tools»
Установленные пакеты будут в отдельном блоке «Installed Groups»:

Yum: история и логи установки/удаления пакетов
Вы можете вывести информацию об истории установки пакетов 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
Sep 03 11:06:38 Installed: mpfr-3.1.1-4.el7.x86_64 Sep 03 11:06:38 Installed: libmpc-1.0.1-3.el7.x86_64 Sep 03 11:06:38 Installed: libquadmath-4.8.5-36.el7_6.2.x86_64 Sep 03 11:06:38 Installed: apr-1.4.8-3.el7_4.1.x86_64 Sep 03 11:06:38 Installed: m4-1.4.16-10.el7.x86_64 Sep 03 11:06:38 Installed: apr-util-1.5.2-6.el7.x86_64 Sep 03 11:06:38 Installed: unzip-6.0-19.el7.x86_64 Sep 03 11:06:38 Installed: patch-2.7.1-10.el7_5.x86_64 Sep 03 11:06:38 Installed: 1:perl-Error-0.17020-2.el7.noarch Sep 03 11:06:38 Installed: boost-system-1.53.0-27.el7.x86_64 Sep 03 11:06:38 Installed: perl-Thread-Queue-3.02-2.el7.noarch Sep 03 11:06:38 Installed: avahi-libs-0.6.31-19.el7.x86_64 Sep 03 11:06:38 Installed: zip-3.0-11.el7.x86_64 Sep 03 11:06:38 Installed: boost-thread-1.53.0-27.el7.x86_64 Sep 03 11:06:38 Installed: libgfortran-4.8.5-36.el7_6.2.x86_64 Sep 03 11:06:39 Installed: cpp-4.8.5-36.el7_6.2.x86_64
Дополнительные полезные параметры yum
У утилиты yum есть несколько полезных опций, которые часто приходитя использовать при управлении пакетами. Чтобы при установке или удалении пакетов, после ввода команды не предпринимать никаких действий, можно воспользоваться опцией -y , например,:
yum update -y yum install httpd -y
Чтобы ответить no при запросе, нужно указать опцию:
Использовать yum без плагинов или отключить конкретный плагин:
Включить отключенный плагин:
Задействовать отключенный репозиторий:
yum update –enablerepo=atomic
Отключить определенный репозиторий:
yum update –disablerepo=atomic
Конфигурационный файл /etc/yum.conf
Конфигурационный файл 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
Для чего нужны плагины в yum? Как и везде, упрощают нашу работу.
Некоторые популярные плагины и их описание:
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
======================================================================= N/S matched: yum-plugin ======================================================================= PackageKit-yum-plugin.x86_64 : Tell PackageKit to check for updates when yum exits fusioninventory-agent-yum-plugin.noarch : Ask FusionInventory agent to send an inventory when yum exits kabi-yum-plugins.noarch : The CentOS Linux kernel ABI yum plugin yum-plugin-aliases.noarch : Yum plugin to enable aliases filters yum-plugin-auto-update-debug-info.noarch : Yum plugin to enable automatic updates to installed debuginfo packages yum-plugin-changelog.noarch : Yum plugin for viewing package changelogs before/after updating yum-plugin-copr.noarch : Yum plugin to add copr command yum-plugin-fastestmirror.noarch : Yum plugin which chooses fastest repository from a mirrorlist yum-plugin-filter-data.noarch : Yum plugin to list filter based on package data yum-plugin-fs-snapshot.noarch : Yum plugin to automatically snapshot your filesystems during updates yum-plugin-keys.noarch : Yum plugin to deal with signing keys yum-plugin-list-data.noarch : Yum plugin to list aggregate package data yum-plugin-local.noarch : Yum plugin to automatically manage a local repo. of downloaded packages yum-plugin-merge-conf.noarch : Yum plugin to merge configuration changes when installing packages yum-plugin-ovl.noarch : Yum plugin to work around overlayfs issues yum-plugin-post-transaction-actions.noarch : Yum plugin to run arbitrary commands when certain pkgs are acted on yum-plugin-pre-transaction-actions.noarch : Yum plugin to run arbitrary commands when certain pkgs are acted on yum-plugin-priorities.noarch : plugin to give priorities to packages from different repos yum-plugin-protectbase.noarch : Yum plugin to protect packages from certain repositories. yum-plugin-ps.noarch : Yum plugin to look at processes, with respect to packages yum-plugin-remove-with-leaves.noarch : Yum plugin to remove dependencies which are no longer used because of a removal yum-plugin-rpm-warm-cache.noarch : Yum plugin to access the rpmdb files early to warm up access to the db yum-plugin-show-leaves.noarch : Yum plugin which shows newly installed leaf packages yum-plugin-tmprepo.noarch : Yum plugin to add temporary repositories yum-plugin-tsflags.noarch : Yum plugin to add tsflags by a commandline option yum-plugin-upgrade-helper.noarch : Yum plugin to help upgrades to the next distribution version yum-plugin-verify.noarch : Yum plugin to add verify command, and options yum-plugin-versionlock.noarch : Yum plugin to lock specified packages from being updated
Вы можете установить выбранный плагин командой yum install, как и любой другой пакет:
yum install yum-plugin-changelog
yum -y install yum-versionlock
Чтобы заблокировать обновление пакета через плагин, выполните:
yum versionlock nginx
Вывести список заблокировнных пакетов:
yum versionlock list
Убрать пакет из заблокированных:
yum versionlock delete nginx

Если вам в какой-то момент времени не нужно использовать определенный плагин, вы его можете отключить, добавив префикс при вызове yum:
Или же отключить вообще все плагины, установленные в системе:
Использование yum через прокси
Yum для работы с репозиториями программ использует протокол HTTP/1.1. Если ваш Linux сервер имеет доступ в интернет только через HTTP прокси сервер, вы можете указать имя прокси сервера в конфигурационном файле /etc/yum.con в секции [main]:
Если прокси-сервер требует авторизацию, добавьте строки:
Для проверки работы yum через прокси сервер воспользуйтесь командой
yum clean all && yum search nginx
Для проверки я указал публичный прокси сервер с Германии и при установке, сработал плагин fastestmirror, нашел зеркала с которых скорость будет выше:

Если нужно использовать прокси только для некоторых репозиториев, не нужно править файл /etc/yum.conf, а настройки прокси указать в конфигурационном файле репозитория /etc/yum.repos.d/ваш_конфиг.repo.
Итак, в этой статье мы рассмотрели базовые возможности менеджера rpm пакета yum в Linux CentOS/ RHEL. В следующей статье мы более подробно поговорим об управлении репозиториями в Yum. Знакомьтесь, пробуйте и используйте yum в своей работе.
Предыдущая статья Следующая статья