@ Карта сайта News Автора!

Bog BOS: yum - автоматическая установка, обновление и удаление пакетов rpm

Последние изменения:
2015.11.18: hard: обновлена статья про ИБП и их мониторинг

Последнее изменение файла: 2015.03.27
Скопировано с www.bog.pp.ru: 2016.08.25

Bog BOS: yum - автоматическая установка, обновление и удаление пакетов rpm

yum (Yellowdog Updater, Modified; версия 2.4.3 в CentOS 4.5; версия 3.0.5 в RHEL5; версия 3.2.2 в FC6; версия 3.2.8 в Fedora 8) - инструмент автоматической установки, обновления и удаления пакетов для дистрибутивов Linux, основанных на RPM с использованием специально подготовленного репозитария пакетов. Основным преимуществом перед "ручной" работой с пакетами является автоматическое разрешение зависимостей устанавливаемых или обновляемых пакетов с добавлением дополнительно требуемых пакетов в список. Аналогично, при удалении пакета в список для предстоящего удаления добавляются все зависимые от него пакеты.

Для дистрибутивов, основанных на пакетах в формате deb, в аналогичных целях используется apt.

Обзор архитектуры

Для работы yum требуется специальным образом подготовленный репозитарий (хранилище) пакетов, обслуживающий этот репозитарий сервер и клиентская программа yum. Перед каждой операцией клиент yum извлекает с сервера описание репозитария, затем с сервера извлекаются заголовки затребованных пакетов и зависимых от них, после чего клиент определяет какие дополнительные пакеты необходимо установить (обновить, удалить), извлекает их заголовки и т.д. пока все зависимости не будут разрешены. При обновлении пакета может потребоваться добавление или замена пакета. Некоторые пакеты (например, ядро) можно только добавлять, но нельзя заменять, чтобы не оказаться в ситуации, когда невозможно будет загрузиться. Репозитарий может содержать несколько версий пакета, в этом случае по умолчанию выбирается самая свежая. Клиент может одновременно использовать сразу несколько локальных или удалённых репозитариев. При использовании несовместимых репозитариев может оказаться, что обновление невозможно (пакеты из разных репозитариев требуют несовместимых версий одной и той же библиотеки).

Для экономии сетевого трафика описание репозитария, заголовки и сами пакеты могут кешироваться в файловой системе клиента.

В качестве сервера репозитария можно использовать обычный FTP или HTTP сервер. Также файлы могут быть расположены в локальной файловой системе, сетевой файловой системе (NFS, CIFS) или сменном носителе (CD-ROM, DVD-ROM). Для сетевой установки также можно воспользоваться локальным репозитарием базовой системы и загрузчиком PXE, что позволяет обойтись без установочных дисков.

Современные дистрибутивы (начиная с Fedora Core 3, CentOS 3) поставляются с yum, уже настроенным на репозитарий (репозитарии) изготовителя. В частности, установочный DVD-ROM дистрибутива содержит один из таких репозитариев (base). Зачастую требуется также подключение к дополнительным репозитариям, содержащим пакеты, которые коммерческий поставщик дистрибутива не может включить в свой репозитарий (защищённые патентами кодеки, драйверы в двоичном виде и др.). Начиная с Fedora Core 6 установщик anaconda позволяет подключать дополнительные репозитарии ещё до начала установки. Список репозитариев изготовителя и дополнительных репозитариев отличается от версии к версии и описан в соответствующих разделах.

В крайнем случае можно самостоятельно установить клиента yum из rpm-пакета с сайта разработчиков. Осторожно: версии различаются в зависимости от текущей версии RPM и python!

В нормальном репозитарии все пакеты защищены цифровой подписью производителя, которую yum может проверять перед установкой (задаётся настройками клиента).

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

Таким образом, общая процедура настройки репозитария и клиентов для каждой версии дистрибутива состоит из следующих шагов:

  1. настройка локального репозитария:
    1. настройка FTP/HTTP сервера для доступа клиентов (метод, адрес, URL)
    2. получение списка необходимых репозитариев (поставщика и дополнительных)
    3. решение о том, для каких репозитариев необходимо делать локальные копии
    4. выбор способа начального наполнения локальной копии и наполнение
    5. выбор способа синхронизации обновляемых репозитариев (как, откуда, как часто, когда) и запуск процедуры синхронизации
  2. настройка клиентов:

Настройка локального репозитария

В большой организации целесообразно создать локальные копии всех используемых репозитариев, причём организовать единый сервер для их обслуживания. Я поднимаю для этих целей сервер FTP на vsftpd, настроенный на обслуживание исключительно анонимных клиентов. Имя сервера для настройки клиентов - ftp.company.ru. Локальные копии репозитариев для каждой версии дистрибутива размещаются в отдельном подкаталоге внутри каталога /pub/mirror, например, "/pub/mirror/CentOS4.6". Причём каждый репозитарий размещается в соответствующем подкаталоге, например: "/pub/mirror/CentOS4.6/base_i386" или "/pub/mirror/CentOS4.6/updates/x86_64".

Список репозитариев определяется версией дистрибутива и описан для каждого случая в отдельных главах (White Box Linux 3.0, Red Hat 9, CentOS 3.4, Fedora Core 3, Fedora Core 4, CentOS 4, Fedora Core 6, CentOS 5).

Неизменяемые базовые репозитарии можно либо скопировать с сайта изготовителя, либо создать из ISO-образов установочных дисков, т.к. их всё равно придётся копировать. В последнем случае, в соответствующий каталог полностью копируется содержимое всех установочных дисков для данной архитектуры. Начиная с Fedora Core 5 (?) репозитарий на установочных дисках стал иметь в описании "лишние" строки вида "xml:base=\"media", которые необходимо верезать: (подсмотрено здесь):

Если метаинформация репозитария утеряна или неприменима, то можно создать её заново с помощью yum-arch (yum версии 1) или createrepo (yum версии 2).

Регулярно обновляемые репозитарии необходимо синхронизовать с первоисточником. В качестве средства синхронизации я использую mirror (но можно использовать любой другой инструмент), который запускается ежедневно по ночам для обновления всех репозитариев, антивирусных баз и т.д.. Описание пакета для mirror на примере CentOS5.1 для архитектур i386 и x86_64:

# Centos5.1 updates i386
package=linux-CentOS5.1-updates-i386
        local_dir+CentOS5.1/updates/i386
        site=mirror.yandex.ru
        remote_dir=/centos/5.1/updates/i386
        recurse_hard=true
        compress_excl=.*
        exclude_patt=alpha|alphaev6|sparc|ia64|s390|ls-lR|HEADER\.html|HEADER\.images|openoffice.org-core-2.0.4-5.4.17.1
        max_delete_files=90%
        max_delete_dirs=90%
        exclude_patt+|\.nfs

# Centos5.1 updates x86_64
package=linux-CentOS5.1-updates-x86_64
        local_dir+CentOS5.1/updates/x86_64
        site=mirror.yandex.ru
        remote_dir=/centos/5.1/updates/x86_64
        recurse_hard=true
        compress_excl=.*
        exclude_patt=alpha|alphaev6|sparc|ia64|s390|ls-lR|HEADER\.html|HEADER\.images|openoffice.org-core-2.0.4-5.4.17.1
        max_delete_files=90%
        max_delete_dirs=90%
        exclude_patt+|\.nfs

# Centos5.1 extras
package=linux-CentOS5.1-extras
        local_dir+CentOS5.1/extras
        site=mirror.yandex.ru
        remote_dir=/centos/5.1/extras
        recurse_hard=true
        compress_excl=.*
        exclude_patt=alpha|alphaev6|sparc|ia64|s390|ls-lR|HEADER\.html|HEADER\.images
        max_delete_files=90%
        max_delete_dirs=90%
        exclude_patt+|\.nfs

# Centos5.1 addons (packages used/produced in the build but not released)
package=linux-CentOS5.1-addons
        local_dir+CentOS5.1/addons
        site=mirror.yandex.ru
        remote_dir=/centos/5.1/addons
        recurse_hard=true
        compress_excl=.*
        exclude_patt=alpha|alphaev6|sparc|ia64|s390|ls-lR|HEADER\.
        max_delete_files=90%
        max_delete_dirs=90%
        exclude_patt+|\.nfs

Создание своего репозитария для yum версии 1

В репозитарии yum версии 1 заголовок каждого пакета лежит в отдельном файле в подкаталоге с именем headers в каталоге, содержащем пакеты для определённой архитектуры. Имя файла образуется из имени пакета, заменой строки ".rpm" на ".hdr". Содержимое представляет собой двоичный файл, сжатый gzip. Также создаётся файл headers/header.info, который содержит по одной строке на каждый пакет.

Утилита yum-arch (скрипт на python) осуществляет рекурсивный обход указанного в качестве параметра каталога, вырезает заголовки всех пакетов и складывает их в подкаталог headers (создавая его, если это необходимо). Ключи (указывать отдельно):

Создание своего репозитария для yum версии 2.1

В версии yum 2.1 вместо подкаталога "headers" с заголовками для каждого пакета в двоичном формате (может присутствовать для совместимости) используется каталог repodata, который содержит файлы в XML формате, общем (предположительно) для yum и apt, и sqlite (в версии yum 3):

Создание директории repodata производится утилитой createrepo (пакет createrepo-0.4.10-1.fc6), которой необходимо указать имя каталога с пакетами и ключи:

Настройка клиента

Клиентская часть yum настраивается с помощью файла /etc/yum.conf. В новых версиях yum данный файл содержит только общие параметры, параметры отдельных репозитариев располагаются в /etc/yum.repos.d/*.repo (задаётся параметром reposdir).

Файл делится на секции, каждая секция начинается с идентификатора репозитария в квадратных скобках. Пустые строки игнорируются. Допускаются включения (в т.ч. вложенные) в виде: include=URL. Каждый параметр определяется на отдельной строке в формате

имя=значение

Общие параметры описываются в секции "[main]" (при описании указывается значение по молчанию и номер версии, в которой опция появилась):

Параметры отдельных репозитариев:

Внутри значений параметров name, baseurl и commands можно использовать значения переменных:

Использование клиента

Использование yum (для заполнения кэша требуются права root):

yum [ключи] команда [список-имён-пакетов-через-пробел-или-опция]

Команды yum (шаблоны имён пакетов в стиле glob; можно указывать архитектуру (после точки), версию и релиз - name-epoch:ver-rel.arch):

Ключи yum (в скобках - имена параметров yum.conf):

yum может использовать прокси, определённый переменной окружения http_proxy (URL!). Рекомендуется следить за сообщениями при установке, особенно о заменах конфигурационных файлов.

Дополнительные возможности

Для yum написано большое количество дополнительных модулей (plugins), рекомендую yum-changelog, [yum-fedorakmod, yum-kernel-module,] yum-list-data, yum-priorities, yum-security, yum-verify:

Пакет yum-utils:

yum-updatesd - сервис (демон), сообщающий об обновлениях по e-mail или syslog, позволяет автоматическую загрузку или установку обновлений (/etc/yum/yum-updatesd.conf).

yum-metadata-parser - обработчик метаданных на C (быстр, но требует очень много памяти).

yumex - графическая оболочка для yum.

yum-cron - предшественник yum-updatesd (убран из yum во времена FC6).

yum-updateonboot - при загрузке запускается автоматический "yum update".

Популярные репозитарии для Fedora и RHEL

Пример создания репозитария White Box Linux 3.0

Для примера создадим репозитарий White Box Linux 3.0 со всеми его изменениями:

Пример создания репозитария Red Hat 9

Для обновления Red Hat 9 требуется специальная процедура.

Создадим репозитарий Red Hat 9 со всеми изменениями:

Пример создания репозитария CentOS 3.4

Создадим репозитарий CentOS 3.4 со всеми изменениями:

Пример создания репозитария Fedore Core 3

Создадим репозитарий Fedora Core 3 (новый yum) со всеми изменениями и дополнительными (внешними) репозитариями:

Ссылки

@ Карта сайта News Автора!

Bog BOS: yum - автоматическая установка, обновление и удаление пакетов rpm

Последние изменения:
2015.11.18: hard: обновлена статья про ИБП и их мониторинг

TopList

Copyright © 1996-2015 Sergey E. Bogomolov; www.bog.pp.ru (КГБ знает все, даже то что у Вас на диске ;)