Yum
YUM (Yellowdog Updater, Modified) — открытый консольный менеджер пакетов для дистрибутивов Linux, основанных на пакетах формата RPM (RedHat, CentOS, Fedora, Oracle Linux)[2]. Позволяет облегчить работу с обновлениями дистрибутивов, отслеживая взаимозависимости между пакетами. Распространяется под лицензией GNU GPL-2.0-or-later. Первоначально проект был разработан программистом Seth Vidal и группой волонтёров. Для работы с YUM используется интерфейс командной строки, однако существуют надстройки, предоставляющие графический интерфейс для функциональности YUM.
YUM позволяет системным администраторам и пользователям настроить автоматизированные обновление ПО и разрешение зависимостей[3]. Для этого используется ряд инструментов, таких как yum-updatesd, yum-updateonboot, yum-cron, PackageKit. Как и Advanced Package Tool (система APT) из дистрибутивов класса Debian, менеджер YUM работает с репозиториями (наборами) пакетов от производителя дистрибутива или от сторонних авторов. Возможно создание локальных или офлайновых копий репозиториев[4], либо доступ к ним через сетевое Интернет-соединение.
В своем внутреннем устройстве YUM зависит от приложения RPM и использует формат RPM-пакетов. Пакеты обычно имеют криптографические подписи (MD5-хеш и «digisig»)[5] для подтверждения того, что данный файл был подготовлен определенным автором (однако метаданные не подписывались до начала 2010-х годов)[6]. Приложение YUM реализовано как набор библиотек на языке программирования Python и несколько приложений командной строки. Среди графических интерфейсов к YUM — YUM Extender (yumex)[7].
В Fedora 18-й версии началось внедрение более быстрого форка yum под названием «DNF»[8], с 20 версии он мог использоваться вместо yum, а в 22 версии весной 2014 года произошел переход от YUM в пользу dnf[9][10][11][12]. DNF был создан для улучшения YUM в части производительности, качества разрешения конфликтов зависимостей и для упрощения интеграции с другими приложениями[13]. В то же время, в версию YUM 4 2017 года были перенесены многие возможности DNF, в том числе, ускоренное разрешение зависимостей[14][15].
Общие сведения
| Yellowdog updater, Modified | |
|---|---|
| Тип | Пакетный менеджер |
| Разработчик | Seth Vidal |
| Написана на | Python[1] |
| Операционная система | Linux |
| Последняя версия | 3.4.3 (28 июня 2011) |
| Репозиторий | yum.baseurl.org/gitweb/ |
| Лицензия | GNU GPL 2 или выше |
| Сайт | yum.baseurl.org |
Возможности
YUM представляет собой оболочку для RPM, обеспечивающую работу с репозиториями. Был создан для решения следующих задач[16]:
История
В 1999—2001 году был разработан менеджер Yellowdog UPdater (YUP) в компании Terra Soft Solutions в качестве основы для графического инсталлятора дистрибутива Yellow Dog Linux[2].
Позже, в целях управления системами Red Hat Linux в университете Дьюка, сотрудники физического факультета Seth Vidal и Michael Stenner полностью переписали YUP, создав Yellowdog Updater, Modified, сокращенно "YUM". Seth Vidal продолжил работу над программой до 2013 года.[18][19][20][21]
В 2003 году Robert G. Brown (университет Дьюка) опубликовал документацию по YUM[22]. В дальнейшем ряд дистрибутивов[22] начали использовать YUM, в том числе Fedora, CentOS и другие, построенные на основе RPM. На YUM также перешел Yellow Dog Linux. Оригинальная утилита YUP в последний раз обновлялась в 2001 году[23]. К 2005 году менеджер YUM использовался примерно на половине рынка Linux-дистрибутивов[1], и в 2007 году 2007 YUM признавался наиболее популярным менеджером для RPM дистрибутивов[24].
Приложение YUM устраняло ряд видимых недостатков старого менеджера APT-RPM[25], и ограничения оригинального менеджера пакетов up2date из состава Red Hat. В вышедшей в 2007 году версии Red Hat Enterprise Linux 5 менеджер up2date был заменен на YUM[26][27]. Некоторые авторы называют пакет «Yellowdog Update Manager» или предлагают расшифровку «Your Update Manager»[28][29].
Знание команд YUM часто является требованием для получения сертификатов по администрированию Linux[3].
Пакет YUM распространяется под условиями GNU General Public License, что позволяет свободно распространять приложение и его модификации[2].
Расширения
Метаданные
Информация о пакетах (в отличие от самих файлов пакетов) в терминологии YUM называется метаданными. В состав метаданных входят списки зависимостей, то есть список других пакетов и их версий, которые необходимы для данного. Корректное заполнение метаданных позволяет избегать «ада зависимостей». Коллекции пакетов и их метаданных организуются в репозитории, основные из них поддерживаются производителем дистрибутива. При помощи отдельной утилиты createrepo возможно создание частных YUM-репозиториев, в которых метаданные указанного набора пакетов собраны в единый XML файл (или в базу метаданных в формате SQLite[32][33]. Дополнительная утилита mrepo (ранее называлась «Yam») упрощает создание и поддержку репозиториев[34].
XML-репозитории YUM быстро приобрели популярность для публикации наборов пакетов для дистрибутивов на базе RPM-пакетов[33]. Кроме традиционных RPM дистрибутивов от RedHat (RHEL, Fedora), их клонов (CentOS) и многочисленных менее известных вариаций, репозитории YUM могут использоваться в SUSE Linux 10.1[35] (менеджер пакетов YaST). Система репозиториев Open Build Service также использует формат YUM XML[33].
Программа YUM автоматически синхронизирует метаданные через сеть[36][37].
Механизмы безопасности, применяемые к метаданным в YUM неоднократно критиковались[38][39][40][6]. В 2015 годах CentOS внедрил подписывание метаданных для основных репозиториев CentOS 6 и CentOS 7[41], а в 2018 — для всех репозиториев[42]. RedHat традиционно решал проблему при помощи безопасного транспорта[43][44].
Графические оболочки
Примечания
Ссылки
- 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
