Чего microdnf не может сделать по сравнению с dnf?

Вопрос или проблема

В README для Microdnf говорится, что это “Минимальный dnf для (в основном) Docker-контейнеров, который использует libdnf и, следовательно, не требует Python.”

Не перечислены функции microdnf и не объясняется, в каком смысле он “минимален” по сравнению с dnf.

В анонсе Red Hat об Atomic Base Image говорится, что “Microdnf не является полным заменителем yum”, но также не уточняется, что именно отсутствует.

Существует страница руководства в интернете — я не уверен, насколько она официальна — но и там также не уточняется, какова разница по сравнению с dnf.

Вопрос в следующем: в чем разница между microdnf и dnf? Что можно сделать только с dnf и нельзя с microdnf? Существует ли ресурс, который это перечисляет?

Не перечислены функции microdnf и не объясняется, в каком смысле он “минимален” по сравнению с dnf.

Минимальность как заявлено: ни Python, ни зависимости от модулей Python. А это довольно много пакетов, если задуматься.

rpm -q --requires dnf
python3-dnf = 4.2.23-4.el8
rpm -q --requires python3-dnf
python3-gpg
python3-hawkey >= 0.48.0-3
python3-libcomps >= 0.1.8
python3-libdnf
python3-libdnf >= 0.48.0-3
python3-rpm >= 4.14.2-35

Фактическое дерево зависимостей значительно расширится, если проверить зависимость каждого модуля Python.

в чем разница между microdnf и dnf

Я предполагаю, что фактическая разница также будет заключаться в отказе от использования Python:

  • Нет интерфейса Python, и, следовательно, вы не можете вызвать microdnf из Python-кода, используя согласованный API. Вам придется использовать модуль subprocess Python
  • Фактический dnf может быть расширен многими дополнительными командами, предоставляемыми dnf-plugins-core и другими пакетами плагинов. Вы не можете ожидать никаких из этих функций в microdnf. Они вряд ли когда-либо появятся в microdnf.

Я обнаружил, что microdnf не может устанавливать группы пакетов. Мне нужно установить полный yum или dnf, если я хочу это сделать.

microdnf install dnf dnf-plugins-core

.

Ответ или решение

Вопрос о различиях между microdnf и dnf достаточно важен, особенно для тех, кто работает с контейнерными технологиями и минималистичными системами. Microdnf, как указано в его README, предназначен для использования в контейнерах и не требует Python, что делает его более легким и быстродействующим по сравнению с полной версией dnf. Однако, такая минимизация неизбежно приводит к ограничениям функциональности. Давайте рассмотрим, что именно microdnf не может сделать и как это выражается на практике.

Теоретическая база

Microdnf представляет собой упрощенный инструмент для управления пакетами в системах на базе RPM, таких как Red Hat Enterprise Linux и CentOS. Это облегчённая утилита по сравнению с dnf, которая используется для тех же целей, но обладает более обширными возможностями и удобством. Основное различие между ними заключается в том, что dnf построен на Python и поддерживает обширную систему плагинов, тогда как microdnf использует libdnf и исключает зависимости на Python и его модули.

Преимущества и недостатки

Преимущества microdnf:

  1. Минимизация ресурсов: Microdnf менее обязателен к системным ресурсам, так как не требует Python и его зависимостей.
  2. Производительность: Быстрее чем dnf благодаря меньшему числу загружаемых библиотек.

Недостатки microdnf:

  1. Ограниченная функциональность: Не поддерживает расширения и плагины как dnf-plugins-core.
  2. Нет поддержки API на Python: Это ограничивает возможность командных вызовов из Python-кода без использования оболочек или модулей subprocess.

Пример функциональных ограничений

Примером ограничения является невозможность установки групп пакетов. В dnf можно использовать команды для установки групп, что особенно полезно для настройки рабочих сред с определенными предустановленными наборами приложений. Microdnf не поддерживает эту функцию и требует полного установления dnf для таких задач.

microdnf install dnf dnf-plugins-core

Эта команда показывает, что для работы с группами пакетов и плагинами необходимо установить полный набор инструментов dnf.

Применение и практические последствия

В практическом применении выбор между microdnf и dnf часто обусловлен целями и требованиями проекта. В контейнерных средах, где важно минимизировать размер образов и ускорить их загрузку и развертывание, microdnf имеет смысл как рациональное решение. Это обусловлено тем, что он позволяет выполнять базовые операции управления пакетами без накладных расходов, связанных с Python и многочисленными зависимостями.

Однако, для более сложных задач, таких как управление расширенными конфигурациями ПО, использованием плагинов, интеграцией систем управления конфигурацией или автоматизацией, microdnf будет недостаточным. В этих случаях целесообразно рассмотреть установку полного dnf или даже релевантный переход на другие инструменты управления пакетами, соответствующие потребностям инфраструктуры.

Запрос ресурсов, которые бы точно перечислили все возможные пробелы между этими утилитами, зачастую приводит к необходимости обратиться к различным неофициальным источникам и мануалам. В официальной документации часто отсутствуют подробные сравнения, что требует от пользователя либо экспериментального подхода, либо перехода к полноценной версии dnf для соответственного тестирования возможностей и ограничений.

Подводя итог, microdnf — это эффективный инструмент для специфических задач, но с рядом существенных ограничений, которые стоит учитывать при выборе между ним и dnf. Важно осознавать компромиссы между производительностью и функциональностью, и выбирать инструмент, наиболее подходящий для ваших конкретных сценариев использования.

Оцените материал
Добавить комментарий

Капча загружается...