Введение / Зачем это нужно
DNF (Package Dandified with Yum) — это современный менеджер пакетов для дистрибутивов Linux на базе RPM, таких как Fedora, RHEL, CentOS и их производные. Он заменяет устаревший YUM и предлагает улучшенное разрешение зависимостей, скорость и надежность. В этом гайде вы освоите базовые операции: обновление метаданных, поиск, установку, удаление пакетов, обновление системы и очистку кэша. После выполнения этих шагов вы сможете уверенно управлять программным обеспечением в своей системе.
Требования / Подготовка
Перед началом убедитесь, что:
- У вас есть доступ к терминалу с правами суперпользователя (sudo).
- Система подключена к интернету для загрузки пакетов и метаданных.
- Вы используете дистрибутив, поддерживающий DNF (Fedora, RHEL 8+, CentOS 8+, AlmaLinux, RockyLinux и др.).
⚠️ Важно: Все команды, изменяющие систему (установка, удаление, обновление), требуют прав суперпользователя. Всегда используйте
sudoили переключайтесь на root.
Шаг 1: Обновление метаданных репозиториев
Перед установкой или обновлением пакетов необходимо обновить локальный кэш метаданных репозиториев. Это гарантирует, что DNF знает о последних версиях пакетов и их зависимостях.
sudo dnf makecache
Команда загружает актуальную информацию о пакетах из всех включенных репозиториев и сохраняет её в кэш. Обычно это быстро, но при первом запуске или после долгого перерыва может занять несколько минут.
Шаг 2: Поиск пакета
Чтобы найти пакет по имени или описанию, используйте dnf search:
dnf search <ключевое_слово>
Например, для поиска пакетов, связанных с обработкой JSON:
dnf search json
Результат покажет список пакетов, в имени или описании которых встречается "json". Для более точного поиска можно использовать подстроку или регулярные выражения. Если вы знаете точное имя пакета, можно использовать dnf list available | grep <имя>.
Шаг 3: Установка пакета
После нахождения нужного пакета установите его с помощью dnf install:
sudo dnf install <имя_пакета>
Например, для установки утилиты jq (обработка JSON):
sudo dnf install jq
DNF автоматически разрешит зависимости и предложит список пакетов для установки. Подтвердите операцию, нажав y (или используйте флаг -y для автоматического подтверждения: sudo dnf install -y jq).
💡 Совет: Чтобы установить несколько пакетов одновременно, перечислите их через пробел:
sudo dnf install пакет1 пакет2 пакет3.
Шаг 4: Удаление пакета
Для удаления пакета используйте dnf remove:
sudo dnf remove <имя_пакета>
Например:
sudo dnf remove jq
DNF также удалит зависимости, которые больше не нужны никаким установленным пакетам (если они были установлены автоматически). Чтобы удалить и orphaned dependencies, можно использовать dnf autoremove (рассматривается в разделе "Возможные проблемы").
Шаг 5: Обновление системы
Для обновления всех установленных пакетов до последних версий из репозиториев выполните:
sudo dnf update
Или с флагом -y для автоматического подтверждения:
sudo dnf update -y
Это обновит все пакеты, кроме тех, которые исключены в конфигурации. После обновления может потребоваться перезагрузка, если обновлены ядро или критичные библиотеки.
⚠️ Важно: Регулярное обновление системы критически важно для безопасности. Настройте автоматические обновления или выполняйте
sudo dnf updateхотя бы раз в неделю.
Шаг 6: Очистка кэша DNF
Со временем кэш DNF (скачанные пакеты и метаданные) может занимать много места. Для очистки используйте:
sudo dnf clean all
Эта команда удалит все кэшированные данные, включая заголовки пакетов и скачанные RPM-файлы. Это безопасно, но при следующей операции DNF придется заново загружать метаданные. Для более точечной очистки можно использовать sudo dnf clean packages (только скачанные RPM) или sudo dnf clean metadata (только метаданные).
Проверка результата
- После установки пакета: проверьте его наличие командой
dnf list installed | grep <имя_пакета>или запустите бинарный файл пакета (если есть). - После удаления: убедитесь, что пакет больше не в списке установленных (
dnf list installed | grep <имя_пакета>должен ничего не выводить). - После обновления: проверьте версии ключевых пакетов или выполните
dnf check-update, чтобы убедиться, что обновлений больше нет. - После очистки кэша: проверьте, что каталог
/var/cache/dnfпуст или содержит только временные файлы.
Возможные проблемы
- Ошибка разрешения зависимостей: DNF не может найти совместимые версии пакетов.
Решение: попробуйтеsudo dnf distro-syncдля синхронизации с репозиториями или отключите конфликтующие репозитории. Также может помочьsudo dnf autoremoveдля удаления ненужных пакетов. - Отсутствие репозитория: Пакет не найден.
Решение: убедитесь, что репозиторий, содержащий пакет, включен. Проверьте конфигурацию в/etc/yum.repos.d/и выполнитеsudo dnf repolist all. При необходимости добавьте репозиторий вручную. - Ошибка доступа: Запуск без sudo.
Решение: все операции изменения системы требуют прав суперпользователя. Используйтеsudoс командами или переключитесь на root (su -). - Недостаток места на диске: Особенно при обновлении системы.
Решение: очистите кэш (sudo dnf clean all) или удалите ненужные пакеты (sudo dnf autoremove). Проверьте свободное место командойdf -h.