Управление пакетами в RHEL6. Yum

Yum - это менеджер пакетов Red Hat, который умеет запрашивать информацию о пакетах, получать пакеты из репозиториев, устанавливать и удалять их, используя автоматическое разрешение зависимостей, а также обновлять целиком систему до последних версий пакетов. Yum выполняет автоматическое разрешение зависимостей для пакетов, которые обновляются, устанавливаются или удаляются, и, таким образом, позволяет автоматически определять, получать и устанавливать все доступные по зависимостям пакеты. Для Yum можно настроить ноые, дополнительные репозитории, или, по другому, источники пакетов, кроме того, для него доступны многие дополнения, которые улучшают и расширяют его возможности. Yum позволяет выполнять многие из задач, которые выполняет RPM; кроме того, многие из опции командной строки у него также подобны. Yum обеспечивает простое и легкое управление пакетами на одной машине или же на группе машин.

====================================================================

Важно

Безопасное управление пакетами с помощью подписей GPG

Yum обеспечивает безопасное управление пакетами путем включения проверки сигнатур GPG для пакетов, подписанных с помощью GPG, дл всех репозиториев пакетов или для отдельных репозиториев. В случае включения проверки сигнатур, Yum откажется устанавливать любые пакеты, не подписанные корректным ключом для данного репозитория. Это означает, что можно доверять пакетам RPM, которые скачиваются и устанавливаются на машине в том случае, если они получены из доверенных источников, например, Red Hat, и они не были изменены в процессе передачи.

====================================================================

Yum также позволяет легко создавать собственные репозитории RPM-пакетов для скачивания и установки их на других машинах.

Изучение Yum - стоящее вложение, поскольку это часто наиболее быстрый способ выполнения задач по системному администрированию, и Yum обеспечивает возможности, превышающие таковые, предлагаемые графическими инструментами управления пакетами PackageKit.

1.1 Проверка обновлений и обновление пакетов

1.1.1 Проверка наличия обновлений

Вы можете использовать команду yum check-update для просмотра доступных обновлений для вашей системы.

=========================================================

Заметка

Yum и привилегии суперпользователя !!!

Необходимо иметь права суперпользователя, чтобы использовать yum для установки, обновления или удаления пакетов. Все примеры в этом разделе подразумевают, что права суперпользователя уже получены с помощью команд su либо sudo.

=========================================================

    # yum check-update
    Loaded plugins: presto, refresh-packagekit, security
    PackageKit.x86_64                  0.5.8-2.el6                rhel
    PackageKit-glib.x86_64             0.5.8-2.el6                rhel
    PackageKit-yum.x86_64              0.5.8-2.el6                rhel
    PackageKit-yum-plugin.x86_64       0.5.8-2.el6                rhel
    glibc.x86_64                       2.11.90-20.el6             rhel
    glibc-common.x86_64                2.10.90-22                 rhel
    kernel.x86_64                      2.6.31-14.el6              rhel
    kernel-firmware.noarch             2.6.31-14.el6              rhel
    rpm.x86_64                         4.7.1-5.el6                rhel
    rpm-libs.x86_64                    4.7.1-5.el6                rhel
    rpm-python.x86_64                  4.7.1-5.el6                rhel
    udev.x86_64                        147-2.15.el6               rhel
    yum.noarch                         3.2.24-4.el6               rhel

Все перечисленные пакеты имеют доступные обновления. Первый пакет в списке - PackageKit, графический менеджер пакетов. Первая строка вывода говорит вот о чем:

  • PackageKit - имя пакета
  • х86_64 - архитектура процессора, под которую пакет был собран
  • 0.5.8 - версия обновленного пакета, который будет установлен
  • rhel - репозиторий, в котором обновленный пакет расположен

В выводе также показано, что можно обновить ядро, сам Yum и RPM, а также как и их зависимости (kernel-firmware, rpm-libs и rpm-python), используя yum.

1.1.2 Обновление пакетов

Для обновления можно выбрать одиночный пакет, множество пакетов или же все пакеты сразу. Если какие-либо зависимости пакетов, выбранных для обновления, сами имеют более свежие версии, они также будут обновлены. Для обновления одного пакета введите команду yum update <имя_пакета>:

    # yum update udev
    Loaded plugins: presto, refresh-packagekit, rhnplugin, security
    Setting up Update Process
    Resolving Dependencies
    --> Running transaction check
    ---> Package udev.x86_64 0:147-2.15.el6 set to be updated
    --> Finished Dependency Resolution
    Dependencies Resolved
    ===========================================================================
    Package       Arch            Version                 Repository     Size
    ===========================================================================
    Updating:
    udev          x86_64          147-2.15.el6            rhel          337 k
    Transaction Summary
    ===========================================================================
    Install       0 Package(s)
    Upgrade       1 Package(s)
    Total download size: 337 k
    Is this ok [y/N]:

вывод содержит несколько интересных вещей:

  1. Loaded plugins: presto, refresh-packagekit, rhnplugin, security - yum всегда сообщает, какие дополнения установлены и включены. В данном случае, yum использует дополнения presto, refresh-packagekit и security.
  2. kernel.x86_64 - вы можете безопасно скачать и установить новые ядра.

===========================================================

Заметка

Обновление и установка ядра с помощью Yum

yum всегда УСТАНАВЛИВАЕТ новое ядро, подобно тому, как RPM устанавливает новое ялро с помощью команды rpm -i kernel. Другими словами, нет необходимости беспокоиться о разнице между установкой и обновлением пакета ядра при использовании yum: все будет сделано правильно независимо от того, используется ли команда yum update, или же yum install.

С другой стороны, при использовании RPM, важно использовать команду rpm -i kernel (которая установит новое ядро) вместо rpm -u kernel (которая заместит текущее ядро).

===========================================================

  1. yum показывает информацию об обновлени, а затем делает запрос о необходимости выполнить обновление; yum по умолчанию работает в интерактивном режиме. Если заранее известно, какие транзакции yum планирует выполнить, можно использовать опцию -y, которая автоматически отвечает yes на все вопросы, которые yum может задать (в этом случае он запускается не-интерактивно). Как бы то ни было, всегда можно проверить, какие изменения yum планирует произвести в системе, поэтому можно легко разрешить любую проблемы, которая может возникнуть. Если транзакция прошла неправильно, можно посмотреть лог транзакции с помощью команды cat /var/log/yum.log. Самые последние транзакции представлены в конце файла.

Обновление всех пакетов и их зависимостей

Для обновления всех пакетов и их зависимостей просто введите yum update (без аргументов):

    # yum update

1.1.3 Обновление пакетов, связанное с безопасностью

Выяснение, какие пакеты имеют обновления, связанные с безопасностью, и установка таких обновлений бытсро и легко - очень важно. Для этой цели Yum предлагает отдельное дополнение. Плагин security расширяет команду yum с помощью набора очень полезных команд, подкоманд и опции, ориентированных на безопасность.

1.1.4 Изменение сохраненных конфигурационных файлов

Установленные пакетами файлы конфигурации будут неизбежно изменены в процессе эксплуатации Red Hat Enterprise Linux. RPM, который Yum использует для выполнения изменений в системе, предоставляет механизм для гарантии своей сохранности.

1.2 Пакеты и группы пакетов

1.2.1 Поиск, перечисление и отображение информации о пакете

Можно искать пакеты по имени, подписи и описанию, используя команду yum search <выражение>. yum отобразит список соответствий для каждого выражения.

    # yum search meld kompare
    Loaded plugins: presto, refresh-packagekit, rhnplugin, security
    ============================ Matched: kompare =============================
    kdesdk.x86_64 : The KDE Software Development Kit (SDK)
    Warning: No matches found for: meld

yum search полезен для поиска пакетов, имя которых неизвестно, но известно к чему они относятся.

Перечень пакетов

yum list и связанные с ним команды предоставляет информацию о пакетах, группах пакетов и репозиториях.

=============================================================

 Полезно

Фильтрация результатов с помощью регулярных выражений

Все различные команды Yum позволяют фильтровать результаты путем добавления одного и нескольких регулярных выражений в качестве аргументов. Глобальные выражения - это обычная строка символов, которые содержат один или множество wildcard-символов * (кототый соответветствует нескольким любым символам) и ? (который соответствует одному любому символу). Необходимо использовать экранирование обеих символов для передачи их в качестве аргумента команде yum. Если это не сделать, bash будет интерпретировать глобальное выражение в качестве расширения имени пути, и потенциально передаст все файлы в текущей директории в качестве соответствия команде yum, но это не то, что требуется. Напротив, необходимо передать сами регулярные выражения yum, что можно сделать следующим образом:

  • экранируя сиволы
  • заключить выражение целиком в двойные или одинарные ковычки

В следующих примерах показаны оба способа:

    # yum list available gstreamer\*plugin\*
    Loaded plugins: presto, refresh-packagekit, rhnplugin, security
    Available Packages
    gstreamer-plugins-bad-free.i686               0.10.17-4.el6            rhel
    gstreamer-plugins-base.i686                   0.10.26-1.el6            rhel
    gstreamer-plugins-base-devel.i686             0.10.26-1.el6            rhel
    gstreamer-plugins-base-devel.x86_64           0.10.26-1.el6            rhel
    gstreamer-plugins-good.i686                   0.10.18-1.el6            rhel

    # yum list installed "krb?-*"
    Loaded plugins: presto, refresh-packagekit, rhnplugin, security
    Installed Packages
    krb5-libs.x86_64                         1.8.1-3.el6                  @rhel
    krb5-workstation.x86_64                  1.8.1-3.el6                  @rhel

===============================================================

- yum list <регулярное_выражение> - показывает информацию об установленных или доступных пакетах, соответствующих регулярному выражению.

    # yum list abrt-addon\* abrt-plugin\*
    Loaded plugins: presto, refresh-packagekit, rhnplugin, security
    Installed Packages
    abrt-addon-ccpp.x86_64                        1.0.7-5.el6             @rhel
    abrt-addon-kerneloops.x86_64                  1.0.7-5.el6             @rhel
    abrt-addon-python.x86_64                      1.0.7-5.el6             @rhel
    abrt-plugin-bugzilla.x86_64                   1.0.7-5.el6             @rhel
    abrt-plugin-logger.x86_64                     1.0.7-5.el6             @rhel
    abrt-plugin-sosreport.x86_64                  1.0.7-5.el6             @rhel
    abrt-plugin-ticketuploader.x86_64             1.0.7-5.el6             @rhel

- yum list all - список всех установленных И доступных пакетов - yum list installed - список всех пакетов, установленных в системе. Колонка с правой стороны показывает репозиторий, из которого пакет был получен. - yum list available - список всех доступных пакетов во всех включеных репозиториях - yum grouplist - список всех групп пакетов - yum repolist - список ID репозиториев, имя и количество пакетов, которые предоставлены для каждого включенного репозитория.

Отображение информации о пакете yum info <имя_пакета> отображает информацию об одном или множестве пакетов (регулярные выражения в данном случае также работают):

    # yum info abrt
    Loaded plugins: presto, refresh-packagekit, rhnplugin, security
    Installed Packages
    Name       : abrt
    Arch       : x86_64
    Version    : 1.0.7
    Release    : 5.el6
    Size       : 578 k
    Repo       : installed
    From repo  : rhel
    Summary    : Automatic bug detection and reporting tool
    URL        : https://fedorahosted.org/abrt/
    License    : GPLv2+
    Description: abrt is a tool to help users to detect defects in applications
    : and to create a bug report with all informations needed by
    : maintainer to fix it. It uses plugin system to extend its
    : functionality.

yum info <имя_пакета> аналогично команде rpm -q --info <имя_пакета>, но предоставляет в качестве дополнительной информации ID репозитория Yum, в котором пакет найден (взгляните на строку From repo: в выводе).

yumdb info <имя_пакета> может быть использован для запроса к базе данных Yum для получения альтернативной и полезной инормации о пакете, включая контрольную сумму пакета (и алгоритм, использующийся для ее создания, например, SHA-256), команды, набранной в командной строке, вызванной для установки пакета и причины, по которым пакет был установлен в системе (где user означает, что он был установлен пользователем, а dep - что был установлен в качестве зависимости:

    # yumdb info yum
    yum-3.2.27-4.el6.noarch
    checksum_data = 15c8eaf583fabad6974a35b9f6c6527e49362fe4e23baec1682ef51a598e4abb
    checksum_type = sha256
    command_line = update
    from_repo = rhel
    from_repo_revision = 1271991599
    from_repo_timestamp = 1271991721
    reason = user
    releasever = 6

Смотрите man yumdb для получения более подробной информации о команде yumdb.

И наконец, команда yum history, новая для Red Hat Enterprise Linux 6, может быть использована для показа временных отметок транзакций Yum, даты и времени, когда они произошли, количество неисправных пакетов, были ли транзакции успешными или были прерваны, и изменилась ли база данных RPM между транзакциями. Обратитесь к разделу history в man yum за подробностями.

1.2.2 Установка

Можно установить пакет и все его неустановленные зависимости введя:

    # yum install <имя_пакета>

Можно установить множество пакетов одновременно, добавив их имена как аргументы.

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

    # yum install sqlite2.i586

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

    # yum install audacious-plugins-\*

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

    # yum install /usr/sbin/named

yum, при поиске по списку пакетов, найдет пакет, который предоставляет /usr/sbin/named, если он есть, и спросит подтверждения установки.

Что делать, если необходимо установить пакет, который содержит бинарный файл named, но непонятно, в какой директории, /bin или /sbin, этот файл находится? В этой ситуации, можно передать yum provides глобальное выражение:

    # yum provides "*bin/named"
    Loaded plugins: presto, refresh-packagekit, rhnplugin, security
    32:bind-9.7.0-4.P1.el6.x86_64 : The Berkeley Internet Name Domain (BIND)
    : DNS (Domain Name System) server
    Repo        : rhel
    Matched from:
    Filename    : /usr/sbin/named
    ~]# yum install bind

===========================================================

 Заметка

yum provides подобен yum whatprovides

===========================================================

 Полезно

yum provides/whatprovides и глобальные выражения

yum provides "*/<имя_файла>" - общий и полезный хак для быстрого поиска пакета, содержащего указанное имя файла

===========================================================

Установка группы пакетов

Группа пакетов подобна пакету: она не используется сама по себе, но ее установка тащит группу зависимых пакетов, которые обеспечивают конечный результат. Группа пакетов имеет имя и ID группы. Команда yum grouplist -v показывает имена всех групп пакетов и, один за другим, ID группы в круглых скобках. ID группы это всегда термин в паре круглых скобок, например, как kde- desktop и kde-software-development в этом примере:

===========================================================

 Внимание

Не все пакеты, использующиеся в примерах, доступны в RHN.

Некоторые из пакетов - или групп пакетов - запрашиваемые и установленные с помощью Yum в этом разделе могут быть не доступны в Red Hat Network. Их использование в этих примерах - просто демонстрация работы Yum. Заметьте, что получение и установка программного обеспечения из пепроверенных или недоверенных источников, отличных от Red Hat Network, может привести к рискам и проблемам безопасности, стабильности и совместимости.

===========================================================

    # yum -v grouplist kde\*
    KDE (K Desktop Environment) (kde-desktop)
    KDE Software Development (kde-software-development)

Можно установить группу пакетов путем передачи ее полного имени (без ID группы) команде groupinstall:

    # yum groupinstall "KDE (K Desktop Environment)"

Также можно установить с помощью ID группы:

    # yum groupinstall kde-desktop

Точно также передается ID группы (или имя в ковычках) команде install, если предварить его символов "@" (который говорит yum, что необходимо выполнить groupinstall):

    # yum install @kde-desktop

1.2.3 Удаление

yum remove <имя_пакета> деинсталлирует пакет, также как и пакеты, которые от него зависят. Как можно устанавливать несколько пакетов за раз, так можно и удалять их так же:

    # yum remove foo bar baz

Подобно install, remove может принимать такие же аргументы:

  • имена пакетов
  • глобальные выражения
  • списки файлов
  • предоставленные пакеты

===========================================================

 Внимание

Удаление пакета в том случае, когда другие пакеты зависят от него

Yum не может удалить пакет, не удаляя при этом пакеты, крые зависят от него. Этот тип операции может быть выполнен с помощью RPM, но не рассматривается, и потенциально может привести систему в неработоспособное состояние или же послужить причиной странного поведения приложений или же их краха.

===========================================================

Удаление группы пакетов

Можно удалить группу пакетов, используя синтаксис, соответствующий синтаксису install.

# yum groupremove "KDE (K Desktop Environment)"
~]# yum groupremove kde-desktop
~]# yum remove @kde-desktop

===========================================================

 Важно

Умное удаление группы пакетов

Когда вы говорите yum удалить группу пакетов, он удалит каждый пакет в этой группе, даже если эти пакеты являются членами другой группы пакетов или зависимостями для других установленных пакетов. Как бы то ни было, yum можно указать удалять только те пакеты, которые не требуются каким-либо другим пакетам или группам, добавив директиву groupremove_leaf_only=1 в секцию [main] файла /etc/yum.conf.

===========================================================

1.3 Настройка Yum и репозиториев

В этом разделе показано, как:

  • установить глобальные опции Yum, отредактировав сецию [main] в файле конфигурации /etc/yum.conf
  • установить опции для отдельных репозиториев, отредактировав секции [repository] в /etc/yum.conf и файлы .repo в каталоге /etc/yum.repos.d/
  • использовать переменные Yum в /etc/yum.conf и файлы в /etc/yum.repos.d/ так, чтобы динамические значения версий и архитектуры обрабатывались корректно
  • настроить ваш собственный репозиторий Yum

Файл конфигурации /etc/yum.conf содержит одну обязательную секцию [main], в которой можно установить опции Yum. Значения, определенные в этой секции имеют глобальный эффект, и могут быть переопределены значениями, установленными в конкретной секции [repository]. Также можно добавлять секции [repository] в /etc/yum.conf, однако, гораздо лучше определять отдельные репозитории в новом или существующем файле .repo в каталоге /etc/yum.repos.d/.

1.3.1 Установка опций [main]

Файл /etc/yum.conf содержит ровно одну секцию [main]. Можно добавлять дополнительные опции в эту секцию в начале /etc/yum.conf. Некоторые из пар ключ-значение в этой секции влияют на то, как будет действовать yum; другие влияют на работу репозиториев. Лучшим источником информации по всем опциям Yum является разделы [main] OPTIONS и [repository] OPTIONS в man yum.conf.

Ниже показан пример файла конфигурации /etc/yum.conf:

    [main]
    cachedir=/var/cache/yum/$basearch/$releasever
    keepcache=0
    debuglevel=2
    logfile=/var/log/yum.log
    exactarch=1
    obsoletes=1
    gpgcheck=1
    plugins=1
    installonly_limit=3
    [comments abridged]
    # PUT YOUR REPOS HERE OR IN separate files named file.repo
    # in /etc/yum.repos.d

Далее приведен список наиболее часто использующихся опций в секции [main] и описание каждой их них:

assumeyes=<значение>

...где <значение> одно из:

0 - yum будет запрашивать подтверждение критических действий для выполнения. Установлено по умолчанию.

1 - Не запрашивать подтверждение для критически важных действий. Если установлеон это значение, yum ведет себя подобно тому, как если было бы использовалась опция -y.

cachedir=/var/cache/yum/$basearch/$releasever

Эта опция указывает каталог, в котором Yum будет хранить свой кэш и базу данных файлов. По умолчанию, каталог кэша /var/cache/yum/$basearch/$releasever.

debuglevel=значение

...где <значение> - это число между 1 и 10. Установка высокого значения приводит к отображению более детального вывода отладочной информации. debuglevel=0 отключает вывод отладки, тогда как debuglevel=2 - значение по умолчанию.

exactarch=<значение>

...где <значение> - одно из:

0 - не использовать точное значение архитектуры при обновлении пакетов

1 - принимать во внимание точную архитектуру при обновлении пакетов. При этой установке yum не сможет установить пакет i686 для обновления пакета i386, уже установленного в системе. Это занчение установлено по умолчанию.

exclude=<имяпакета> [несколькоимен_пакетов]

Эта опция позволяет исключить пакеты по ключевым словам из процесса установки/обновления. Список из нескольких пакетов для исключения может быть заключен в ковычки с пробелом в качестве разделителя списка. Позволено использование глобальных выражений оболочки (например, * и ?).

gpgcheck=<значение>

...где <значение> одно из:

0 - отключить проверку сигнатуры GPG для пакетов из всех репозиториев, включая локальную установку пакетов.

1 - Включить проверку сигнатуры GPG для всех пакетов во всех репозиториях, включая локальную установку пакетов. gpgcheck=1 установлено по умолчанию, таким образом, проверяются сигнатуры всех пакетов.

Если эта опция установлена в секции [main] в файле /etc/yum.conf, она устанавливает правило проверки для всех репозиториев. С другой стороны, можно также отпределить gpgcheck=<значение> для конкретного репозитория; т.е. можно включить проверку для одного репозитория, отключив при этом для другого. Установка gpgcheck=<значение> для отдельного репозитория с соответствующем файле .repo переопределяет занчение по умолчанию, представленное в /etc/yum.conf.

groupremove_leaf_only=<значение>

...где <значение> одно из:

0 - yum не должен проверять для каждого пакета, которые удаляется при удалении группы пакетов. С этим значением yum удаляет все пакеты в группе пакетов, не обращая внимания, требуются ли эти пакеты другим пакетам ли группам. groupremove_leaf_only=0 - это значение по умолчанию.

1 - yum будет проверять зависимости каждого пакета при удалении группы пакетов, и удалит только те пакеты, которые не требуются ли какому-либо еще пакету или группе.

installonlypkgs=<разделенный><пробелами><список><пакетов>

Здесь есть возможность предоставить разделенный пробелами список пакетов, которые yum может установить, но никогда не будет обновлять. Обратитесь к man yum.conf за списком всех пакетов, которые подпадают под это правило по умолчанию. Если добавить директиву installonlypkgs в /etc/yum.conf, необходимо убедиться, что перечислены все пакеты, которые будут только устанавливаться, включая любые из перечисленных в разделе installonlypkgs man yum.conf. В частности, пакеты ядра всегда должны быть перечислены в installonlypkgs (они там по умолчанию) и значение installonly_limit должно быть всегда больше 2, чтобы резервная копия ядра всегда была доступна, если умолчальное не сможет загрузиться.

installonly_limit=<значение>

...где <значение> - число, определяющее максимальное количество версий, которые могут быть установленны одновременно для любого единичного пакета, перечисленного в директиве installonlypkgs. Значение по умолчанию для директивы installonlypkgs включает несколько различных пакетов ядер, так что, убедитесь, что изменение значения installonly_limit также повлияет на максимальное количество установленных версий любого одного пакета ядра. Значение по умолчанию, указанное в /etc/yum.conf - installonly_limit=3, и не рекомендуется его уменьшать, особенно делать ниже 2.

keppcache=<значение>

...где <значение> одно из:

0 - не сохранять кэш заголовков и пакетов после успешной установки. Это значение по умолчанию.

1 - Сохранять кэш после успешной установки.

logfile=/var/log/yum.log

Эта опция указавает, куда yum будет отправлять вывод логов. По умолчанию, yum хранит информацию в /var/log/yum.log.

multilib_policy=<значение>

...где <значение> одно из:

best - установить наиболее подходящую архитектуру для этой системы. Например, установка этого значения на системе AMD64 приведет к тому, что yum установит 64-битную версии всех пакетов.

all - всегда устанавливать каждую возможную архитектуру для каждого пакета. Например, при установке этого значения на системе AMD64, yum установит как i586, так и AMD64 версии пакета, если они оба доступны.

obsoletes=<значение>

...где <значение> одно из:

0 - отключает устаревшую логику обработки при выполнении обвноления

1 - включает устаревшую логику обработки при выполнении обновления. Когда один пакет заявляет в своем spec-файле, что он устарел по отношению к другому пакету, более аоздний пакет будет замещен пакетом разработчика, если пакет разработчика установлен. Устаревание объявляется, например, когда пакет переименовывается. obsoletes=1 - значение по умолчанию.

plugins=<значение>

...где <значение> одно из:

0 - Отключает все дополнения Yum глобально.

===========================================================

 Важно

Отключение всех дополнений не благоразумно !!!

Отключение всех дополнений не благоразумно, поскольку некоторые дополнения обеспечивают важные для Yum сервисы. В частности, rhnplugin позволяет подключаться к Red Hat Network, а дополнение security позволяет системному администратору легко обновлять систему с помощью (иногда критических) обновлений безопасности. Глобальное отключение дополнений представлена в качестве удобной опции и, в основном, рекомендуется для определения потенциальных проблем с Yum.

===========================================================

1 - Включает все дополнения глобально. С этим значением все еще можно отключить конкретное дополнение, установив enabled=0 в конфигурационном файле этого дополнения.

reposdir=

Эта опция позволяет указать каталог, в котором будут расположены файлы .repo. Все эти файлы содержат информацию о репозиториях (подобно секции [repository] в файле /etc/yum.conf). yum собирает всю информацию о репозиториях из файлов .repo и секции [repository] файла /etc/yum.conf для создания главного списка репозиториев для использования при транзакциях. Если reposdir не установлено, yum использует стандартный каталог /etc/yum.repos.d/.

retries=<значение>

...где <значение> - число 0 или больше. Это значение определяет количество времени, которое yum будет пытаться полусить файл до того, как вернет ошибку. При установке значения в 0 yum будет пытаться постоянно. Значение по умолчанию - 10.

1.3.2 Настройка опций [repository]

Можно определить отдельный репозиторий, добавив секцию [repository] (где repository - уникальный ID репозитория, например, [my_personal_repo]) в /etc/yum.conf или в файл .repo в каталоге /etc/yum.repos.d/. Все файлы .repo в /etc/yum.repos.d/ читаются yum; лучше всего указывать свой репозиторий именно здесь, а не в /etc/yum.conf. Можно создать новые, отдельные файлы .repo в этом каталоге, добавить в них секцию [repository] и при следующем запуске команды yum вновь созданные репозитории будет добавлены.

Здесь показан (крайне минимальный) пример вида файла .repo:

    [repository_ID]
    name=A Repository Name
    baseurl=http://path/to/repo или ftp://path/to/repo или file://path/to/local/repo

Каждая секция [repository] должна содержать следующие минимальные части:

[repository_ID]

repository_ID - это уникальная строка из одного слова (без пробелов, но нижнее подчеркивание попускается) символов (заключенная в квадратные скобки), которая указывает идентификатор репозитория.

name=<Имя моего репозитория>

В этой строке содержится понятное для человека описание этого репозитория.

baseurl=http://path/to/repo, ftp://path/to/repo, file://path/to/local/repo

Это пусть до каталога, в котором расположен каталог repodata этого репозитория. Как правило, этот URL - ссылка на HTTP, например:

    baseurl=http://path/to/repo/releases/$releasever/server/$basearch/os/

Yum всегда разворачивает переменные $releasever, $arch и $basearch в URL.

  • если репозиторий доступен по FTP, используйте: ftp://path/to/repo
  • если репозиторий находитяс на локальной машине, используйте: file://path/to/local/repo
  • если указанный репозиторий требует базовую аутентификацию HTTP, можно указать имя пользователя и пароль в http://path/to/repo с помощью имя_пользователя:пароль@ссылка. Например, если репозиторий на http://www.example.com/repo/ требует имя пользователя в виде "user", а пароль - "password", то запись baseurl может быть следующей:

    baseurl=http://user:password@www.example.com/repo/
    

Далее показана еще одна полезная директива [repository]:

enabled=<значение>

...где <значение> одно из:

0 - не считать этот репозиторий в качестве источника пакетов при выполнении обновления и установке. Это простейший пусть быстро включить или выключить репозиторий, который полезен только при установке единственного пакета из репозитория, не требующегося для обновления или установки.

1 - позволяет использовать этот репозиторий в качестве источника пакетов.

Включение или отключение репозиториев также может быть сделано путем передачи опции либо --enablerepo=, либо --disablerepo= команде yum.

Существует гораздо больше опций [repository]. Обратитесь к разделу [repository] OPTIONS man yum.conf за более подробным списком и описанием для каждой.

1.3.3 Использование переменных Yum

Можно использовать и обращаться к следующим переменным в командах yum и во всех файлах конфигурации (/etc/yum.conf и все файлы .repo в /etc/yum.repos.d/)

$releasever

Можно использовать эту переменную для обращения к версии релиза Red Hat Enterprise Linux. Yum получает значение $releasever из строки distroverpkg=<значение> в файле /etc/yum.conf. Если такой строки не существует, yum получает корректное значение, вытаскивая номер версии из пакета redhat-release.

$arch

Можно использовать эту переменную обращаясь к архитектуре процессора путем получения значения функции Python os.uname(). Верные значения для $arch включают: i586, i686 и x86_64.

$basearch

Можно использовать $basearch для обращения к базовой архитектуре системы. Например, машины i686 и i586 обе имеют базовую архитектуру i386, а AMD64 и Intel64 - соответственно x86_64.

$YUM0-9

Эти десять переменных, каждая из которых замещается значением любого окружения оболочки shell с тем же самым именем. Если одна из этих переменных указана (например, в /etc/yum.conf) и переменная окружения оболочки с тем же именем не существует, тогда переменная файла конфигурации не будет замещена.

1.3.4 Создание репозитория Yum

Для создания репозитория, следуйте следующим указаниям:

  1. Установить пакет createrepo:

     # yum install createrepo
    
  2. Скопировать все пакеты в один каталог, например, /mnt/local_repo

  3. Запустить команду createrepo --database, указав этот каталог:

     # createrepo --database /mnt/local_repo
    

===========================================================

 Важно

Поскольку пакеты RPM для Red Hat Enterprise Linux 6 сжимаются с использованием формата сжатия данных без потерь XZ и могут быть подписаны также альтернативными (и более сильными) алгоритмами (например, SHA-256), запуск createrepo от RHEL 5 не сможет создать пакет метаданных для RHEL 6.

===========================================================

Это создаст необходимые метаданные для нового репозитория, так же, как и базу данных sqlite для ускорения операций yum.

1.4 Дополнения Yum

Yum предоставляет дополнения, которые расширяют и улучшают его операции. Определенные дополнения устанавливаются по умолчанию. Yum всегда информирует о том, какие дополнения загружены и активны каждый раз, как запускается команда yum:

    # yum info yum
    Loaded plugins: presto, refresh-packagekit, security
    [output truncated]

Заметьте, что имена дополнений, котоые следуют за Loaded plugins - это имена, которые могут быть указаны в опции --disableplugins=<имя_дополнения>.

1.4.1 Включение, настройка и отключение дополнений

Для включения дополнений необходимо убедиться, что строка, начинающаяся с plugins= представлена в секции [main] в /etc/yum.conf, и что ее значение установлено в 1:

    plugins=1

Можно отключить все дополнения, изменив 1 на 0.

===========================================================

 Информация

Отключение дополнений не благоразумно

Отключение всех дополнений не благоразумно, поскольку определенные дополнения обеспечивают важные сервисы Yum. В частности, rhnplugin позволяет подключение к Red Hat Network, а security - позволяет системному администратору легко обновлять систему с помощью обвнолений безопасности. Отключение дополнений глобально - полезная опция, и, в основном, используется для диагностики потенциальных проблем с Yum.

===========================================================

Каждое установленное дополнение имеет свой собственный файл конфигурации в каталоге /etc/yum/pluginconf.d/. В этих файлах можно указать специфичные для конкретного дополнения опции. Например, конфигурационный файл security.conf для дополнения security:

    [main]
    enabled=1

Файл конфигурации дополнения всегда содержит секцию [main], в которой есть (или ее туда можно пометить при отсутствии) опция enabled=, которая контролирует будет ли включено дополнение при запуске команды yum.

Если выключить все дополнения, установив enabled=0 в /etc/yum.conf, все дополнения будут отключены, не взирая на то, что они могут быть включены в своих файлах конфигурации.

Если требуется единоразово отключить все дополнения для единственной команды yum, используйте опцию --noplugins.

Если же просто требуется отключить один или несколько дополнений, протсо добавьте опцию --disableplugin=<имя_дополнения>:

    # yum update --disableplugin=presto

Имена дополнений, указанные в опции --disableplugin= - те же самые, что перечисляются после строки Loaded plugins: в выводе любой команды yum. Можно отключить несколько дополнений, разделив их имена с помощью запятой. Кроме того, можно сопоставить множество похожих имен дополнений или просто укоротить длинные имена, используя глобальные выражения: --disableplugin=presto,refresh-pack*.

1.4.2 Установка дополнений

Дополнения обычно именуются согласно соглашению об именовании пакетов путем "склеивания" yum-plugin-<имя_дополнения>, но не всегда: пакет, который предоставляет дополнение presto называется yum-presto, например. Дополнение можно установить тем же путем, что и другие пакеты:

    # yum install yum-plugin-security

1.4.3 Описания дополнений

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

presto (yum-presto)

Дополнение presto добавляет поддержку для скачивания пакетов delta RPM, в процессе обновления, из репозиториев, у которых включена поддержка метаданных presto. Delta RPMs содержат только изменения между версиями пакета, установленного у клиента, запрашивающего пакет, и обновленной версии в репозитории. Процесс получения delta RPM более быстрый, чем скачивание целиком обновленного пакета, и может значительно ускорить процесс обновления. Как только delta RPM скачан, он должен быть пересобран (с учетом различий, примененных к утсановленному в данное время пакету для создания полностью обновленного пакета) на устанавливающей машине, что требует времени ЦП. Использование delta RPM, однако, это компромис между временем на получение пакета, которое зависит от сетевого соединения, и временем на пересборку, которое зависит от возможностей ЦП. Использование дополнения presto рекомендуется на быстрых машинах и системах с медленным сетевым подключением, тогда как медленные машины с быстрым подключением могут получить преимущества в процессе получения пакета, выключив presto. Дополнение presto включено по умолчанию.

protect-packages (yum-plugin-protect-packages)

Дополнение protect-packages защищает пакет yum и все пакеты, от которых он зависит, от преднамерянного или случайного удаления. Эта простая схема защищает многие важные пакеты, необходимые для работы системы, от удаления. Кроме того, можно перечислить дополнительные пакеты, один на строку, в файле /etc/sysconfig/protected-packages (который необходимо создать при его отсутствие), и protect-packages распространит свою защиту от удаления и на эти пакеты также. Для временной перезаписи защиты пакетов используйте опцию --override-protection при применении команды yum.

rhnplugin (yum-rhn-plugin)

rhnplugin обеспечивает поддержку для подключения к Red Hat Network (RHN). Системы, зарегистрированные с помощью RHN, могут обновлять и устанавливать пакеты из Red Hat Network.

За подробной информацией обращайтесь к man rhnplugin.

refresh-packagekit (PackageKit-yum-plugin)

Это дополнение обновляет метаданные для PackageKit во время работы yum. Дополнение refresh-packagekit установлено по умолчанию.

security (yum-plugin-security)

Получение информации о наличии обвнолений безопасности и применение этих обновлений как можно проще - очень важно для всех системных администраторов. По этим причинам Yum предоставляет дополнение security, которое расширяет yum с помощью набора команд, подкомманд и опций, крайне полезных с точки зрения безопасности.

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

    # yum check-update --security
    Loaded plugins: presto, refresh-packagekit, security
    Limiting package lists to security relevant ones
    Needed 3 of 7 packages, for security
    elinks.x86_64                   0.12-0.13.el6               rhel
    kernel.x86_64                   2.6.30.8-64.el6             rhel
    kernel-headers.x86_64           2.6.30.8-64.el6             rhel

Затем можно использовать или yum update --security, или yum update-minimal --security для обновления тех пакетов, которые подпадают под предупреждения о проблемах безопасности. Обе эти команды обновляют все пакеты в системе, для которых были получены предупреждения. yum update-minimal --security обновляет их до последних версий пакетов, которые были выпущены как часть предупреждений безопасности, тогда как yum update --security обновит все пакеты с выданными предупреждениями до последней существующей версии этих пакетов.

Другими словами, если:

  • пакет kernel-2.6.30.8-16 установлен в системе;
  • пакет kernel-2.6.30.8-32 был выпущен в качестве обновления безопасности;
  • пакет kernel-2.6.30.8-64 был выпущен как пакет исправлений,

то yum update-minimal --security обновит систему до kernel-2.6.30.8-32, а yum update --security - до kernel-2.6.30.8-64. Консервативные системные администраторы могут захотеть использовать update-minimal для уменьшения риска, принесенного обновлением пакетов до максимально возможных.

Обращайтесь к man yum-security для подробностями и дальнейшего изучения возможностей дополнения security.

Дополнительные ресурсы:

Comments