YUM создан для решения следующих задач:
- Поиск пакетов в репозиториях
- Установка пакетов из репозиториев
- Установка пакетов из .rpm файлов, с разрешением зависимостей с помощью репозиториев
- Обновление системы
- Удаление ненужных пакетов
- Фактически, YUM представляет собой оболочку для RPM, обеспечивающую работу с репозиториями.
Запускается yum одноимённой командой, требующей указания субкоманды, и, в ряде случаев, аргументов в виде имени пакета или группы пакетов, что в общей форме выглядит так:
yum subcommand [arguments] --[options]
Команда yum без указания субкоманды выведет краткую справку касаемо последних и их опций. Аналогичный результат будет получен посредством субкоманды
# yum help
Loaded plugins: fastestmirror, presto, refresh-packagekit
Usage: yum [options] COMMAND
List of Commands:
check-update Check for available package updates
...
Options:
-h, --help show this help message and exit
...
Plugin Options:
...
А указание имени субкоманды в качестве аргумента в этой строке выведет краткие сведения о её назначении, например:
# yum help install
Loaded plugins: fastestmirror, presto, refresh-packagekit
install PACKAGE...
Install a package or packages on your system
Субкоманды yum'а определяют одно из действий, которое команда должна выполнить - установку или удаление пакета, вывод информации о нём, поиск пакетов и так далее. Обычно назначение субкоманды легко угадывается из её названия и (или) краткой характеристики в выводе help'а.
Все субкоманды yum можно разделить на две группы. Первая связана с поиском пакетов и получением информации о них, вторая - с манипуляциями пакетами и группами.
В состав первой группы входят такие
* search [string] - поиск пакета по имени или его фрагменту;
* list - вывод списка пакетов, всех (all или без указания фильтра), установленных (installed) или доступных (available);
* repolist - вывод списка подключённых репозиториев;
* resolvedep [shortname] - вывод полного имени пакета, с указанием номера версии, сборки и т.д., по его краткому имени;
* provides filename - поиск пакета, содержащего указанный файл;
* info pkgname - вывод полной информации о пакете;
* deplist pkgname - вывод списка зависимостей указанного пакета;
* grouplist - вывод списка групп, разделённого на установленные и доступные;
* groupinfo "Group name" - вывод списка пкаетов, входящих в указанную группу, имя которой даётся в соответствие с выводом субкоманды grouplist и экранируется кавычками;
* check-update - вывод списка пакетов, для которых в данный момент доступны обновления.
Все субкоманды первой группы могут исполняться от лица обычного пользователя. Если же дать их от имени администратора, исполнение начнётся с синхронизации локальной базы пакетов с таковыми подключённых репозиториев, что может занять значительное время.
В группу субкоманд, связанных с манипуляцией пакетами, входят:
* install pkgname1 ... pkgname# - установка из репозиториев единичного пакета или нескольких пакетов, имена которых даны (в краткой форме) в качестве аргумента, вместе со всеми их зависимостями;
* localinstall path2/fullname.rpm - установка пакета из локально хранящегося файла; зависимости его извлекаются из репозиториев, если таковые доступны;
* update [pkgname] - обновление пакета, указанного в качестве аргумента; в отсутствие аргумента выполняется тотальное обновление системы, аналогично сумме apt-get update и apt-get upgrade;
* upgrade - тотальное обновление системы при смене версии дистрибутива, подобно apt-get distupgrade;
* reinstall - переустановка ранее инсталлированного пакета, например, безнадёжно испорченного;
* groupinstall "Group name" - установка группы пакетов, аргумент указывается аналогично субкоманде groupinfo;
* downgrade pkgname - "откат" пакета, заданного в качестве аргумента, на предыдущую версию из числа сохраняющихся в репозитории;
* erase pkgname - удаление пакета вместе со всем, что от него зависит; пакеты, от которых зависит удаляемый, остаются в неприкосновенности, даже если они никем не используются;
* groupremove "Group name" - удаление группы пакетов, аргумент указывается аналогично субкоманде groupinfo;
* makecache - запись метаданных репозиториев в локальный кэш;
* clean - очистка локального кэша.
Все субкоманды второй группы для своего исполнения требуют прав администратора. И начинается их исполнение с синхронизации локальной базы пакетов с базами репозиториев. Затем происходит проверка зависимостей - и по её результатам выводится итог: сколько пакетов, включая зависимости, должно быть установлено, обновлено или удалено, их имена, подлежащий скачиванию объем информации. И запрашивается подтверждение на выполнение операции. Так что при ошибке вполне можно отказаться от её выполнения - это особенно актуально при удалении программ и особенно групп, когда удаление поддержки, скажем, зулусского языка может снести весь OpenOffice.org и изрядную часть шрифтов.
Опции yum довольно многочисленны, привязаны как к главной команде, так и к отдельным субкомандам.
Хочется остановиться на одной из опций, --skip-broken - она может понадобиться при первом же обновлении системы, не важно, через yum или PackageKit. Поскольку, как показывает практика, вероятность ошибки при обновлении очень не равна нулю, особенно если не ограничиваться рекомендуемыми gpk-update-viewer обновлениями безопасности. И ошибка эта, скорее всего, окажется связанной с нарушениями зависимостей обновляемых пакетов.
И в этом случае команда
# yum update --skip-broken
пропустит обновление пакетов с нарушенными зависимостями.
Отдельно надо сказать о субкоманде shell - она запускает собственную интерактивную командную оболочку yum'а, в сеансе которой можно оперировать уже просто его субкомандами, аргументами и опциями. Опуская главную команду yum. Впрочем, с учётом того, что в yum shell не работают автодополнения, выигрыш от этого сомнителен.
YUM – поиск пакетов, файлов
Для поиска используются три опции YUM – list, search, provide.
Поиск пакета по его названию выполняется с помощью опции list. Например, найти пакет packagename можно так:
# yum list packagename
Если вы не помните имя пакета полностью – можно воспользоваться подстановкой значения с помощью символа *, не забывая его заэкранировать с помощью символа обратного слеша для правильной обработки вашим командным интерпретатором (например – bash):
# yum list packagen*
Вместо * (замена любого количества символов) можно использовать знак ? – который заменяет один любой символ в поиске. Например, в имени пакета screen – 6 символов. Для поиска по первым 4-м символам введите:
# yum list scre??
…
screen.i686 4.0.3-16.el6 @base
Эти символы замены (? и *) допускаются и в большинстве остальных команд YUM.
Поиск пакета в списках по его имени (можно неполному слову) и в его описании:
# yum search scre
…
screen.i686 : A screen manager that supports multiple logins on one terminal
…
Интересная опция – provides. Она используется для поиска пакета, содержащего указанный в поиске файл/каталог. К примеру, требуется узнать к какому пакету относится файл httpd.conf. Для этого воспользуемся такой командой:
# yum provides */httpd.conf
…
httpd-2.2.15-15.el6.centos.1.i686 : Apache HTTP Server
Repo : base
Matched from:
В результате мы получаем Apache Server, который после установки будет содержать файл httpd.conf.
Другой вариант – надо найти пакет, который хранит свои файлы в каталоге /etc/httpd:
# yum provides /etc/httpd*
Установка, обновление, удаление пакетов с помощью YUM
Установка производится с помощью опции install. В процессе – YUM попробует обнаружить все зависимости и предложит их установить:
# yum install mc
…
Dependencies Resolved
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
mc i686 1:4.7.0.2-3.el6 base 1.6 M
Installing for dependencies:
gpm-libs i686 1.20.6-12.el6 base 28 k
perl i686 4:5.10.1-127.el6 base 9.7 M
perl-Module-Pluggable i686 1:3.90-127.el6 base 38 k
perl-Pod-Escapes i686 1:1.04-127.el6 base 30 k
perl-Pod-Simple i686 1:3.13-127.el6 base 210 k
perl-libs i686 4:5.10.1-127.el6 base 591 k
perl-version i686 3:0.77-127.el6 base 49 k
…
Можно указать несколько пакетов для установки, разделяя их запятыми.
Что бы YUM не запрашивал подтверждения установки пакета и/или его зависимостей – используйте ключ -y:
# yum -y install mc
Переустановить пакет:
# yum reinstall packagename
Для установки пакета, предварительно загруженного на сервер – воспользуйтесь опцией localinstall. Например – установка пакета atop:
# yum localinstall atop-1.25-1.el5.rf.i386.rpm
Обновить установленный пакет packagename можно командой:
# yum update packagename
А обновить полностью систему – той же командой, но без указания имени пакета:
# yum update
Посмотреть список установленных пакетов, которые можно обновить:
# yum check-update
Выполнить downgrade пакета до его предыдущей версии:
# yum downgrade packagename
Для удаления пакета из системы используется опция remove (или erase – которая является алиасом remove):
# yum remove packagename
YUM и репозитории
Получить список активных репозиториев в ваших repo-файлов из каталога /etc/yum.repos.d/можно так:
# yum repolist
repo id repo name status
base CentOS-6 – Base 4,776
extras CentOS-6 – Extras 17
updates CentOS-6 – Updates 960
А всех, в том числе неактивных – так:
# yum repolist all
…
repo id repo name status
…
C6.2-extras CentOS-6.2 – Extras disabled
C6.2-updates CentOS-6.2 – Updates disabled
base CentOS-6 – Base enabled: 4,776
c6-media CentOS-6 – Media disabled
…
debug CentOS-6 – Debuginfo disabled
extras CentOS-6 – Extras enabled: 17
updates CentOS-6 – Updates enabled: 960
Ещё интересная возможность – отобразить доступные для установки (уже установленные пакеты отображаться не будут) только из определённого репозитория. Например – вывести список пакетов из репозитория base:
# yum –disablerepo “*” –enablerepo “base” list available
Что бы получить полный список, в том числе уже установленные пакеты – уберите слово available в этой команде.
Другие возможности YUM
Получить информацию об установленных пакетах можно так:
# yum info
О конкретном пакете packagename:
# yum info packagename
Если пакет уже установлен в системе – он будет отмечен как Installed Packages в описании. Если пакет доступен для установки из репозитория, но ещё не установлен – он будет отмечен как Available Packages. Например:
# yum info gcc-c++
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
* base: ftp.colocall.net
* extras: ftp.colocall.net
* updates: ftp.colocall.net
Available Packages
Name : gcc-c++
Arch : i686
Version : 4.4.6
Release : 4.el6
Size : 4.3 M
Repo : base
Summary : C++ support for GCC
URL : http://gcc.gnu.org
License : GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions
Description : This package adds C++ support to the GNU Compiler Collection.
: It includes support for most of the current C++ specification,
: including templates and exception handling.
Тут так же поддерживаются символы-заменители, например – вы не помните полностью имя пакета screen:
# yum info scre*
Исключить пакет из списка пакетов для обновления можно так.
Откройте для редактирования файл /etc/yum.conf, и в него добавьте строку:
exclude=
После чего через запятую укажите список пакетов, которые необходимо поддерживать в их текущей версии. Например – так:
exclude=aic94xx-firmware, b43-openfwwf
Просмотреть список зависимостей пакета:
# yum deplist packagename
Посмотреть список последних действий YUM:
# yum history
Loaded plugins: fastestmirror
ID | Login user | Date and time | Action(s) | Altered
——————————————————————————-
7 | root <root> | 2013-03-06 15:02 | I, U | 45
6 | root <root> | 2013-03-06 14:59 | Install | 1 EE
5 | root <root> | 2013-03-06 14:58 | Install | 1
4 | root <root> | 2013-03-06 14:54 | Install | 8
3 | root <root> | 2013-03-06 14:47 | Install | 3
2 | root <root> | 2013-03-06 14:22 | Install | 1
1 | System <unset> | 2013-03-06 13:52 | Install | 209
При проблемах с менеджером пакетов YUM
Очистить кеш:
# yum clean all
Пересоздать кеш:
# yum makecache
Другие возможности работы с RPM-пакетами
Посмотреть список установленных в системе пакетов НЕ из списка репозиториев CentOS;
# rpm -qa –qf ‘%{NAME} %{VENDOR}n’ | grep -v CentOS
Посмотреть список man-страниц для определённого пакета можно так:
# rpm -qd packagename
Посмотреть список всех установленных в системе пакетов:
# rpm -qa
Показать список всех GPG-ключей с соответствующей информацией репозитория:
# rpm -q gpg-pubkey –qf ‘%{name}-%{version}-%{release} –> %{summary}n
Посмотреть список изменений в версиях пакета:
# rpm -q –changelog packagename | less
Посмотреть список пакетов по дате их установки/обвноления (например – найти необновившиеся пакеты):
# rpm -qa –last | less
Получить список установленных ключей GPG с информацией об их репозиториях:
# rpm -q gpg-pubkey –qf ‘%{name}-%{version}-%{release} –> %{summary}n’
GNU Privacy Guard, GnuPG, GPG — свободная альтернатива набору криптографического ПО PGP, выпущенная под лицензией GNU General Public License. Является частью проекта GNU, получила гранты от немецкого правительства. GnuPG полностью совместим со стандартом IETF OpenPGP. Текущие версии GnuPG могут взаимодействовать с PGP и другими OpenPGP-совместимыми системами в режиме совместимости. GnuPG позволяет шифровать и подписывать данные в целях безопасного хранения и передачи информации.
Yum, шпаргалка
отображение команд и опций
#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