Yum

Yellowdog updater, Modified
Логотип программы Yellowdog updater, Modified
Скриншот программы Yellowdog updater, Modified
Yum обновляет Fedora 16.
Тип Пакетный менеджер
Разработчик Seth Vidal
Написана на Python[1]
Операционная система Linux
Последняя версия 3.4.3 (28 июня 2011)
Репозиторий yum.baseurl.org/gitweb/
github.com/rpm-software-…
Лицензия GNU GPL 2 или выше
Сайт yum.baseurl.org
Логотип Викисклада Медиафайлы на Викискладе

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].

Возможности

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

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

История

В 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 Extender (yumex) — графической оболочки для YUM.

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

Метаданные

Информация о пакетах (в отличие от самих файлов пакетов) в терминологии 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 неоднократно критиковались[6][38][39][40]. В 2015 годах CentOS внедрил подписывание метаданных для основных репозиториев CentOS 6 и CentOS 7[41], а в 2018 — для всех репозиториев[42]. RedHat традиционно решал проблему при помощи безопасного транспорта[43][44].

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

PackageKit — основной графический интерфейс к менеджеру пакетов в ОС Fedora.

См. также

Примечания

  1. 1 2 Jang, Michael H. Chapter 7 – Setting Up a YUM Repository // Linux Patch Management: Keeping Linux Systems Up to Date (англ.). — Prentice Hall Professional, 2005. Архивировано 24 октября 2020 года.
  2. 1 2 3 Brown, Robert G. YUM (Yellowdog Updater, Modified) HOWTO - Introduction. Duke Physics. Дата обращения: 12 июля 2013. Архивировано 2 августа 2013 года.
  3. 1 2 Shields, Ian RPM and YUM package management. Learn Linux, 101. IBM (11 мая 2010). Дата обращения: 12 июля 2013. Архивировано 2 октября 2016 года.
  4. Creating a Local YUM Repository Using an ISO Image. Oracle. Дата обращения: 12 июля 2013. Архивировано 19 августа 2013 года.
  5. Ian Shields, RPM and YUM package management Архивная копия от 21 октября 2018 на Wayback Machine / IBM, 2010
  6. 1 2 Koen Vervloesem, Attacks on package managers Архивная копия от 21 октября 2018 на Wayback Machine / LWN, April 8, 2009
  7. Yum Extender. Yumex Homepage. Дата обращения: 13 июля 2013. Архивировано 12 ноября 2020 года.
  8. Bruce Byfield. Will DNF Replace Yum? Behind the Scenes at Fedora’s Future Package Manager (англ.). Linux Magazine (2014). Дата обращения: 21 октября 2018. Архивировано 26 сентября 2015 года.
  9. Miller, Matthew Board Meeting, Rawhide Rebuilt, Firewall Debate, ARM 64, and DNF as Yum Replacement (5tFTW 2014-06-10). Fedora Magazine (11 июня 2014). Дата обращения: 4 мая 2016. Архивировано 11 апреля 2016 года.
  10. OpenNews: В Fedora 22 ожидается замена пакетного менеджера Yum на DNF. Дата обращения: 13 мая 2015. Архивировано 4 марта 2016 года.
  11. В Fedora 22 ожидается замена пакетного менеджера Yum на DNF / linuxforum. Дата обращения: 13 мая 2015. Архивировано из оригинала 17 ноября 2015 года.
  12. Технический комитет Fedora подтвердил планы по замене Yum на DNF в Fedora 22 — Новости (nixp.ru). Дата обращения: 13 мая 2015. Архивировано 18 мая 2015 года.
  13. Edge, Jake DNF and Yum in Fedora. LWN.net (15 января 2014). Дата обращения: 16 октября 2018. Архивировано 30 сентября 2015 года.
  14. YUM 4 is available for testing – Blog.CentOS.org. Дата обращения: 21 октября 2018. Архивировано 21 октября 2018 года.
  15. OpenNews: Началось тестирование пакетного менеджера YUM 4. Дата обращения: 21 октября 2018. Архивировано 21 октября 2018 года.
  16. Jang, Michael H. Linux Patch Management: Keeping Linux Systems Up to Date (англ.). — Prentice Hall Professional. — P. 199. — (Bruce Perens' Open Source series). — ISBN 9780132366755.
  17. Fedora Documentation — Downgrade to a Previous Version. Дата обращения: 11 июня 2012. Архивировано 11 января 2012 года.
  18. Seth Vidal, creator of "yum" open source software, killed in bike accident off Hillandale Rd. Durham io: The Daily Durham (9 июля 2013). Дата обращения: 13 июля 2013. Архивировано 12 июля 2013 года.
  19. Thank you, Seth Vidal. Red Hat (10 июля 2013). Дата обращения: 13 июля 2013. Архивировано 14 июля 2013 года.
  20. Bort, Julie 36-Year-Old Open Source Guru Seth Vidal Has Been Tragically Killed. Business Insider (9 июля 2013). Дата обращения: 13 июля 2013. Архивировано 12 июля 2013 года.
  21. "Погиб один из ведущих разработчиков Fedora Linux". CNews. 2013-07-10. Архивировано 21 октября 2018. Дата обращения: 21 октября 2018.
  22. 1 2 Brown, Robert G. YUM: Yellowdog Updater, Modified (17 декабря 2003). Дата обращения: 13 июля 2013. Архивировано 2 октября 2013 года.
  23. Yellow Dog Update Program. SourceForge repository. Дата обращения: 18 июля 2013. Архивировано 4 октября 2013 года.
  24. Fusco, John. The Linux Programmer's Toolbox (неопр.). — Pearson Education[англ.]. — ISBN 9780132703048.
  25. Murphy, David How to run your own yum repository. Linux Foundation (23 июля 2004). Дата обращения: 12 июля 2013. Архивировано из оригинала 21 июля 2013 года.
  26. What are the yum equivalents of up2date and rpm common tasks on Red Hat Enterprise Linux? Red Hat. Дата обращения: 21 октября 2018. Архивировано 8 января 2014 года.
  27. Red Hat Enterprise linux 5. Feature, function, and benefit summary (англ.). RedHat (2007). Дата обращения: 21 октября 2018. Архивировано 21 октября 2018 года.
  28. Sweeney, Michael. Network Security Using Linux (неопр.). — 2005. — С. 84. — ISBN 9781411621770.
  29. Negus, Christopher; Bresnahan, Christine. Linux Bible (неопр.). — John Wiley & Sons, 2012. — С. 598. — ISBN 9781118286906.
  30. Yum Plug-ins. Red Hat. Дата обращения: 12 июля 2013. Архивировано 2 октября 2013 года.
  31. Maintaining yum. CentOS. Дата обращения: 12 июля 2013. Архивировано из оригинала 18 ноября 2018 года.
  32. createrepo(8). Linux manual page. Дата обращения: 12 июля 2013. Архивировано 3 июля 2013 года.
  33. 1 2 3 Standards Rpm Metadata. openSUSE. Дата обращения: 12 июля 2013. Архивировано 17 мая 2013 года.
  34. mrepo. Freecode. Дата обращения: 12 июля 2013. Архивировано 21 июня 2014 года.
  35. SUSE Linux 10.1 Alpha 2 is ready. Дата обращения: 12 июля 2013. Архивировано 8 февраля 2006 года.
  36. Schmitz, Dietrich T. YUM vs. APT: Which is Best? Дата обращения: 21 октября 2018. Архивировано 21 октября 2018 года.
  37. ‘Linux Advocates’ Throws in the Towel. FOSS Force (январь 2015). Дата обращения: 21 октября 2018. Архивировано 21 октября 2018 года.
  38. Attacks on Package Managers Архивная копия от 20 декабря 2018 на Wayback Machine, Отчет о проблемах безопасности при работе менеджеров пакетов в Linux Архивная копия от 21 октября 2018 на Wayback Machine 15.07.2008
  39. Justin Cappos, et al. Package Management Security Архивная копия от 21 октября 2018 на Wayback Machine 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.
  40. Justin Cappos, Justin Samuel, Package managers still vulnerable: how to protect your systems Архивная копия от 21 октября 2018 на Wayback Machine / USENIX, 2009
  41. Signed Repository Metadata is now Available for CentOS 6 and 7 for the Updates Repo – Blog.CentOS.org. Дата обращения: 21 октября 2018. Архивировано 21 октября 2018 года.
  42. Improving CentOS package delivery security with signed repository metadata – Blog.CentOS.org (англ.). blog.centos.org. Дата обращения: 25 октября 2018. Архивировано 21 октября 2018 года.
  43. Secure distribution of RPM packages - Red Hat Customer Portal (англ.). access.redhat.com. Дата обращения: 25 октября 2018. Архивировано 21 октября 2018 года.
  44. cdn.redhat.com X.509 certificate - Red Hat Customer Portal (англ.). access.redhat.com. Дата обращения: 25 октября 2018. Архивировано 21 октября 2018 года.
  45. PackageKit - Main Page. Дата обращения: 14 октября 2018. Архивировано 21 сентября 2018 года.

Ссылки