Yum Package Manager был заменен DNF Package Manager так как в Yum было множество нерешенных проблем. Это проблемы быстродействия, чрезмерного потребления ОЗУ, медленного разрешения зависимостей.
Перечислим основные отличия
DNF использует библиотеку “libsolv” для разрешения зависимостей, разработанную и поддерживаемую SUSE для улучшения производительности. Он был написан в основном на python, и у него есть свой собственный способ справиться с разрешением зависимостей. Его API полностью документирован, а его система расширений позволяет использовать не только модули Python.
YUM – это фронтенд для RPM, который управляет зависимостями и репозиториями, а затем использует RPM для установки, загрузки и удаления пакетов. Почему создали новый инструмент DNF вместо того, чтобы исправлять в YUM существующие проблемы?
Алесь Козамблак (Ales Kozamblak) объяснил, что исправление не было технически осуществимо и что команда YUM не была готова принять изменения немедленно. Кроме того, большая проблема заключается в том, что существует 56 тысяч строк кода в YUM, и только 29 тысяч строк в DNF. Так что нет никакого способа избежать этого, кроме форка.
№ | DNF (Dandified YUM) | YUM (Yellowdog Updater, Modified) |
---|---|---|
1 | DNF использует библиотеку “libsolv” для разрешения зависимостей, разработанную и поддерживаемую SUSE | YUM использует публичный API для разрешения зависимостей |
2 | API полностью документирован | API не полностью документирован |
3 | Написан на C, C++, Python | Написан только на Python |
4 | DNF уже используется в Fedora, Red Hat Enterprise Linux 8 (RHEL), CentOS 8, OEL 8 и Mageia 6/7. | YUM сейчас используется в Red Hat Enterprise Linux 6/7 (RHEL), CentOS 6/7, OEL 6/7. |
5 | DNF поддерживает различные расширения | YUM поддерживает только Python расширения |
6 | Можно легко делать дополнительные функции через API | Очень сложно добавить новые функции, так как API плохо документирован |
7 | DNF использует меньше ОЗУ | YUM использует больше ОЗУ |
8 | Использует эффективные алгоритмы для разрешения зависимостей | Медленное разрешение зависимостей, через API |
9 | Производительность хороша с точки зрения использования памяти и разрешения зависимостей метаданных репозитория | В целом производительность оставляет желать лучшего с точки зрения многих факторов |
10 | Если пакет содержит нерелевантные зависимости во время процесса обновления DNF, пакет не будет обновлен | YUM попытается обновить пакет, не проверяя нужно это или нет |
11 | Если подключенный репозиторий не отвечает, DNF пропустит его и продолжит транзакцию с доступными репозиториями | Если репозиторий недоступен, YUM немедленно остановит процесс |
12 | dnf update и dnf upgrade – это одно и то же | В YUM это разные вещи |
13 | Зависимости при установке пакета не обновляются | YUM предложил вариант такого поведения |
14 | При удалении пакета DNF автоматически удаляет все пакеты зависимостей, явно не установленные пользователем. | YUM этого не делает |
15 | Расписание обновления кэша репозиториев. По-умолчанию, через десять минут после загрузки системы, после обновления настроенных репозиториев проверяются ежечасно. | YUM тоже так делает |
16 | Пакеты ядра не защищены в DNF. В отличие от YUM, вы можете удалить все пакеты ядра, включая тот, который работает. | YUM этого не допустить сделать |
17 | libsolv: для разрешения пакетов и чтения репозиториев
hawkey: библиотека, предоставляющая упрощенный C и Python API для libsolv. librepo: библиотека, предоставляющая API C и Python (libcURL like) для загрузки метаданных и пакетов репозитория Linux. libcomps: альтернатива для yum.comps, она написана на чистом языке С, как библиотека и есть зависимости для python2 и python3 |
YUM не использует отдельные библиотеки для выполнения этих функции |
18 | DNF содержит 29.000 строк кода | YUM содержит 56.000 строк кода |
19 | DNF разработал Алесь Козамблак (Ales Kozumplik) | YUM разработали Зденек Павлас, Ян Силхан (Zdenek Pavlas, Jan Silhan) и члены команды |
YUM этого не допустить – неверно.
YUM этого не допустит – верно.
Спасибо, подправил