YUM (Yellowdog Updater, Modified) — открытый консольный менеджер пакетов для дистрибутивов Linux, основанных на пакетах формата RPM (RedHat, CentOS, Fedora, Oracle Linux). Позволяет облегчить работу с обновлениями дистрибутивов, отслеживая взаимозависимости между пакетами. Распространяется под лицензией GNU GPL-2.0-or-later. Первоначально проект был разработан программистом Seth Vidal и группой волонтёров. Для работы с YUM используется интерфейс командной строки, однако существуют надстройки, предоставляющие графический интерфейс для функциональности YUM.

YUM позволяет системным администраторам и пользователям настроить автоматизированные обновление ПО и разрешение зависимостей. Для этого используется ряд инструментов, таких как yum-updatesd, yum-updateonboot, yum-cron, PackageKit. Как и Advanced Package Tool (система APT) из дистрибутивов класса Debian, менеджер YUM работает с репозиториями (наборами) пакетов от производителя дистрибутива или от сторонних авторов. Возможно создание локальных или офлайновых копий репозиториев, либо доступ к ним через сетевое Интернет-соединение.

В своём внутреннем устройстве YUM зависит от приложения RPM и использует формат RPM-пакетов. Пакеты обычно имеют криптографические подписи (MD5-хеш и «digisig»)Ian Shields, RPM and YUM package management / IBM, 2010 для подтверждения того, что данный файл был подготовлен определенным автором (однако метаданные не подписывались до начала 2010-х годов). Приложение YUM реализовано как набор библиотек на языке программирования Python и несколько приложений командной строки Subsequent adopters included. Среди графических интерфейсов к YUM — YUM Extender (yumex).

В Fedora 18-й версии началось внедрение более быстрого форка yum под названием «DNF», с 20 версии он мог использоваться вместо yum, а в 22 версии весной 2014 года произошел переход от YUM в пользу dnf. DNF был создан для улучшения YUM в части производительности, качества разрешения конфликтов зависимостей и для упрощения интеграции с другими приложениями. В то же время, в версию YUM 4 2017 года были перенесены многие возможности DNF, в том числе, ускоренное разрешение зависимостей.

Возможности YUM представляет собой оболочку для RPM, обеспечивающую работу с репозиториями. Был создан для решения следующих задач:

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

История В 1999—2001 году был разработан менеджер Yellowdog UPdater (YUP) в компании Terra Soft Solutions в качестве основы для графического инсталлятора дистрибутива Yellow Dog Linux.

Позже, в целях управления системами Red Hat Linux в университете Дьюка, сотрудники физического факультета Seth Vidal и Michael Stenner полностью переписали YUP, создав Yellowdog Updater, Modified, сокращенно "YUM". Seth Vidal продолжил работу над программой до 2013 года.

В 2003 году Robert G. Brown (университет Дьюка) опубликовал документацию по YUM. В дальнейшем ряд дистрибутивов начали использовать YUM, в том числе Fedora, CentOS и другие, построенные на основе RPM. На YUM также перешел Yellow Dog Linux. Оригинальная утилита YUP в последний раз обновлялась в 2001 году. К 2005 году менеджер YUM использовался примерно на половине рынка Linux-дистрибутивов, и в 2007 году 2007 YUM признавался наиболее популярным менеджером для RPM дистрибутивов.

Приложение YUM устраняло ряд видимых недостатков старого менеджера APT-RPM, и ограничения оригинального менеджера пакетов из состава Red Hat. В вышедшей в 2007 году версии Red Hat Enterprise Linux 5 менеджер up2date был заменен на YUM. Некоторые авторы называют пакет «Yellowdog Update Manager» или предлагают расшифровку «Your Update Manager».

Знание команд YUM часто является требованием для получения сертификатов по администрированию Linux.

Пакет YUM распространяется под условиями GNU General Public License, что позволяет свободно распространять приложение и его модификации.

Расширения

В версии 2.x YUM был добавлен интерфейс для написания расширений на языке Python. Такие расширения позволяют изменять поведение YUM, ряд плагинов устанавливается по умолчанию. Например, обычно устанавливается пакет yum-utils который содержит команды для работы с YUM API и ряд плагинов.

Метаданные Информация о пакетах (в отличие от самих файлов пакетов) в терминологии YUM называется метаданными. В состав метаданных входят списки зависимостей, то есть список других пакетов и их версий, которые необходимы для данного. Корректное заполнение метаданных позволяет избегать «ада зависимостей». Коллекции пакетов и их метаданных организуются в репозитории, основные из них поддерживаются производителем дистрибутива. При помощи отдельной утилиты createrepo возможно создание частных YUM-репозиториев, в которых метаданные указанного набора пакетов собраны в единый XML файл (или в базу метаданных в формате SQLite. Дополнительная утилита mrepo (ранее называлась «Yam») упрощает создание и поддержку репозиториев.

XML-репозитории YUM быстро приобрели популярность для публикации наборов пакетов для дистрибутивов на базе RPM-пакетов. Кроме традиционных RPM дистрибутивов от RedHat (RHEL, Fedora), их клонов (CentOS) и многочисленных менее известных вариаций, репозитории YUM могут использоваться в SUSE Linux 10.1 (менеджер пакетов YaST). Система репозиториев Open Build Service также использует формат YUM XML.

Программа YUM автоматически синхронизирует метаданные через сеть.

Механизмы безопасности, применяемые к метаданным в YUM неоднократно критиковалисьKoen Vervloesem, Attacks on package managers / LWN, April 8, 2009Attacks on Package Managers , Отчет о проблемах безопасности при работе менеджеров пакетов в Linux 15.07.2008Justin Cappos, et al. Package Management Security University of Arizona Technical Report (2008): 08-02; «A look in the mirror: Attacks on package managers» / Proceedings of the 15th ACM conference on Computer and communications security. ACM, 2008.Justin Cappos, Justin Samuel, Package managers still vulnerable: how to protect your systems / USENIX, 2009. В 2015 годах CentOS внедрил подписывание метаданных для основных репозиториев CentOS 6 и CentOS 7, а в 2018 — для всех репозиториев. RedHat традиционно решал проблему при помощи безопасного транспорта.

Графические оболочки

PackageKit: Apper, GnomePackageKit Yum Extender

См. также Zypper Aptitude

Примечания

Ссылки Yum website Русское руководство Exploring the yum package manager — Linux Magazine issue 103, June 2009 Roderick W. Smith, Linux Software Management with yum / Linux Magazine, 2007-02-16 Linux in a Nutshell, 6th Edition ISBN — O’Reilly, 2009, ISBN 9780596806088 — 5. Package Management, «Yum: Yellowdog Updater Modified» Ian Shields, RPM and YUM package management / IBM, 2010 Q. Ethan McCallum, Managing RPM-Based Systems with Kickstart and Yum, ISBN 9780596513825 Алексей Федорчук, LXF125:Yum, Декабрь 2009 LXF138:Управление пакетами. Yum и APT, Декабрь 2010 Package Management Basics apt, yum, dnf, zypper, and pkg

Категория:Свободные системы управления пакетами Категория:Свободное программное обеспечение, написанное на Python Категория:RPM