DNF — это менеджер пакетов для Rocky Linux, который управляет установкой программного обеспечения, обновлениями и разрешением зависимостей. Хотя DNF надёжно работает «из коробки», его стандартная конфигурация prioritises совместимость, а не скорость. Изменив несколько настроек, вы можете значительно сократить время загрузки пакетов при установке программ или выполнении обновлений системы.
💡 Если вы устали ждать, пока DNF скачивает пакеты по одному — настройка параллельных загрузок и автоматического выбора самого быстрого зеркала ускорит работу в несколько раз.
В этом руководстве мы рассмотрим ключевые настройки производительности в файле /etc/dnf/dnf.conf, включая параллельные загрузки и выбор самого быстрого зеркала. Вы узнаете:
- Какие настройки DNF влияют на скорость
- Как увеличить количество параллельных загрузок
- Как включить автоматический выбор самого быстрого зеркала
- Как проверить, что настройки применены
Для кого: сисадмины (ускорение работы на серверах), разработчики (ускорение сборки окружений), новички (чтобы понять, как работает DNF).
1. Понимание стандартных настроек DNF
Перед изменением конфигурации полезно понять, какие настройки используются по умолчанию и почему они важны. Rocky Linux поставляется с консервативными настройками, которые работают на любом оборудовании и сетевом соединении, но более быстрые системы могут выиграть от более агрессивных значений.
| Настройка | Значение по умолчанию | Оптимальное значение | Что делает |
|---|---|---|---|
max_parallel_downloads | 3 | 10 | Количество пакетов, загружаемых одновременно |
fastestmirror | False (0) | True (1) | Автоматически выбирает зеркало с наименьшей задержкой |
gpgcheck | 1 (True) | 1 (True) | Проверяет подписи пакетов (оставьте включённым) |
installonly_limit | 3 | 3 | Количество версий ядра, оставляемых в системе |
clean_requirements_on_remove | True | True | Автоматически удаляет ненужные зависимости |
💡 Вывод для новичка: Две настройки с наибольшим влиянием на скорость загрузки — max_parallel_downloads и fastestmirror. Увеличение параллельных загрузок с 3 до 10 позволяет DNF скачивать несколько пакетов одновременно, а fastestmirror гарантирует, что загрузки идут с ближайшего доступного сервера.
2. Проверка текущих настроек DNF
2.1 Установка dnf-plugins-core (если ещё не установлен)
Плагин dnf-plugins-core предоставляет команду config-manager, которая нужна для просмотра настроек. На десктопных установках он включён по умолчанию, но на минимальных серверных образах может отсутствовать.
sudo dnf install -y dnf-plugins-core
Что делает: Устанавливает набор плагинов для DNF, включая команду config-manager.
Зачем: Без этого плагина вы не сможете выполнить команду dnf config-manager --dump для просмотра текущих настроек.
2.2 Просмотр текущей конфигурации
dnf config-manager --dump | grep -E 'max_parallel|fastest|gpgcheck|installonly|best|skip_if|clean_req'
Что делает: Выводит текущие значения ключевых настроек DNF.
✅ Ожидаемый вывод на свежей системе (любая версия Rocky Linux):
best = 1
clean_requirements_on_remove = 1
fastestmirror = 0
gpgcheck = 1
installonly_limit = 3
max_parallel_downloads = 3
skip_if_unavailable = 0
Зачем: Увидеть, какие настройки сейчас активны. Обратите внимание на fastestmirror = 0 (отключён) и max_parallel_downloads = 3. Именно их мы будем оптимизировать.
3. Открытие файла конфигурации DNF
Все настройки DNF хранятся в файле /etc/dnf/dnf.conf. Откройте его с правами суперпользователя:
sudo nano /etc/dnf/dnf.conf
Что делает: Открывает системный конфигурационный файл DNF в редакторе nano. sudo обязателен, так как файл принадлежит пользователю root.
Вы увидите файл, начинающийся с [main], за которым следуют несколько параметров. Все оптимизации добавляются в секцию [main].
4. Настройка параллельных загрузок
По умолчанию DNF скачивает только 3 пакета одновременно. Увеличение этого числа позволяет DNF загружать несколько пакетов параллельно, что значительно ускоряет большие обновления при достаточно быстром интернет-соединении.
Добавьте следующую строку в файл dnf.conf (в секцию [main]):
max_parallel_downloads=10
Что делает: Указывает DNF скачивать до 10 пакетов одновременно.
Зачем: Вместо последовательной загрузки (пакет за пакетом) DNF загружает несколько пакетов параллельно, что особенно заметно при обновлении системы, когда нужно скачать десятки или сотни пакетов.
💡 Совет: Официальная документация DNF указывает максимальное значение 20. Для большинства соединений 10 — хороший баланс между скоростью и нагрузкой на систему. Если у вас очень быстрое соединение (гигабит или выше), можно попробовать значения 15 или 20. Но на медленном соединении слишком высокое значение может ухудшить производительность, так как система будет тратить больше времени на управление соединениями, чем на загрузку данных. Начните с 10 и при необходимости скорректируйте.
5. Включение выбора самого быстрого зеркала
Опция fastestmirror заставляет DNF автоматически выбирать зеркало с наименьшей задержкой для каждого репозитория. Это особенно полезно, потому что зеркала Rocky Linux распределены по разным географическим регионам, и ваше зеркало по умолчанию может быть не самым близким.
Добавьте эту строку в файл dnf.conf (в секцию [main]):
fastestmirror=True
Что делает: Включает автоматическое измерение задержки до зеркал и выбор самого быстрого.
Зачем: DNF измеряет задержку TCP-сокетов и выбирает ближайшее доступное зеркало. Первое dnf update после включения этой опции может занять немного больше времени (пока DNF тестирует скорость зеркал), но все последующие операции выиграют от оптимизированного выбора.
6. Сохранение и проверка конфигурации
6.1 Сохранение файла
После добавления настроек сохраните файл. В nano:
- Нажмите
Ctrl+Oдля сохранения - Нажмите
Enterдля подтверждения имени файла - Нажмите
Ctrl+Xдля выхода
Ваш полный файл dnf.conf теперь должен выглядеть примерно так:
[main]
gpgcheck=1
installonly_limit=3
clean_requirements_on_remove=True
best=True
skip_if_unavailable=False
max_parallel_downloads=10
fastestmirror=True
6.2 Проверка, что настройки применились
dnf config-manager --dump | grep -E 'max_parallel|fastest'
✅ Ожидаемый вывод:
fastestmirror = 1
max_parallel_downloads = 10
Зачем: Убедиться, что изменения вступили в силу.
6.3 Тестирование оптимизированной конфигурации
Выполните обновление с флагом --refresh, который заставляет DNF скачать свежие метаданные:
sudo dnf update --refresh
Что вы увидите: Во время загрузки вы должны заметить, что несколько пакетов скачиваются одновременно, а не один за другим.
7. Дополнительные настройки DNF (для справки)
Помимо параллельных загрузок и выбора зеркал, есть и другие настройки, влияющие на поведение DNF. Значения по умолчанию подходят для большинства пользователей, но понимание их поможет вам принимать осознанные решения.
Проверка подписей пакетов (gpgcheck)
gpgcheck=1
Что делает: Эта опция включена по умолчанию и должна оставаться включённой. Она гарантирует, что DNF проверяет GPG-подписи всех пакетов перед установкой, защищая систему от поддельных или вредоносных пакетов.
⚠️ Никогда не отключайте это без крайней необходимости и только если вы понимаете последствия для безопасности.
Количество сохраняемых версий ядра (installonly_limit)
installonly_limit=3
Что делает: Определяет, сколько версий ядра DNF оставляет в системе. Значение по умолчанию (3) оптимально: текущее ядро плюс две предыдущие версии для отката. Это позволяет загрузить старое ядро из GRUB, если обновление вызвало проблемы, и при этом не захламлять диск устаревшими ядрами.
Автоматическая очистка зависимостей (clean_requirements_on_remove)
clean_requirements_on_remove=True
Что делает: При удалении пакета DNF автоматически удаляет пакеты, которые были установлены как зависимости, но больше не нужны ни одному установленному пакету. Это держит систему в чистоте и предотвращает накопление «осиротевших» пакетов.
Поведение при недоступности пакетов (skip_if_unavailable)
skip_if_unavailable=False
Что делает: Определяет, продолжает ли DNF операцию, если некоторые пакеты не могут быть загружены. Значение False (по умолчанию) приводит к отмене всего обновления, если хотя бы один пакет недоступен — это самое безопасное поведение, так как предотвращает частичные обновления. Некоторые администраторы устанавливают True на системах, где обновления должны продолжаться несмотря на временные проблемы с зеркалами, но это может привести к пропуску обновлений безопасности.
Политика выбора версии (best)
best=True
Что делает: При best=True (по умолчанию) DNF всегда пытается установить последнюю доступную версию пакета. Если конфликты зависимостей мешают этому, операция завершается ошибкой с пояснением. Установка best=False позволяет DNF откатиться к более старой версии, что может помочь разрешить проблемы с зависимостями, но означает, что вы можете не получить самые новые пакеты. Большинству пользователей следует оставить значение по умолчанию.
8. Полная оптимизированная конфигурация
Вот полный файл dnf.conf со всеми рекомендуемыми настройками. Вы можете скопировать его в /etc/dnf/dnf.conf, чтобы применить все оптимизации сразу:
[main]
gpgcheck=1
installonly_limit=3
clean_requirements_on_remove=True
best=True
skip_if_unavailable=False
max_parallel_downloads=10
fastestmirror=True
После сохранения файла выполните проверку:
dnf config-manager --dump | grep -E 'max_parallel|fastest'
Значения должны показывать max_parallel_downloads = 10 и fastestmirror = 1.
Чек-лист: всё готово к работе
# 1. Проверка, что dnf-plugins-core установлен
rpm -q dnf-plugins-core
# 2. Проверка текущих настроек (до изменений)
dnf config-manager --dump | grep -E 'max_parallel|fastest'
# 3. Проверка, что настройки применились (после изменений)
dnf config-manager --dump | grep -E 'max_parallel|fastest'
# 4. Тест производительности (замер времени обновления)
time sudo dnf update --refresh
# 5. Просмотр полного файла конфигурации
cat /etc/dnf/dnf.conf
Заключение
Вы настроили DNF для более быстрой загрузки пакетов на Rocky Linux.
Что теперь есть в системе:
- ✅ Параллельная загрузка до 10 пакетов одновременно (вместо 3)
- ✅ Автоматический выбор самого быстрого зеркала
- ✅ Более быстрое выполнение
dnf updateиdnf install - ✅ Сохранены все проверки безопасности (GPG)
Что дальше:
- Если вы ещё не подключили EPEL и RPM Fusion — самое время сделать это, теперь они будут работать быстрее
- Периодически проверяйте настройки:
dnf config-manager --dump | grep -E 'max_parallel|fastest' - Если у вас очень быстрое соединение, попробуйте увеличить
max_parallel_downloadsдо 15 или 20 - Для автоматизации добавьте эти настройки в Ansible-роль или скрипт инициализации сервера