Ускорение DNF на Rocky Linux: оптимизация загрузки пакетов

DNF — это менеджер пакетов для Rocky Linux, который управляет установкой программного обеспечения, обновлениями и разрешением зависимостей. Хотя DNF надёжно работает «из коробки», его стандартная конфигурация prioritises совместимость, а не скорость. Изменив несколько настроек, вы можете значительно сократить время загрузки пакетов при установке программ или выполнении обновлений системы.

💡 Если вы устали ждать, пока DNF скачивает пакеты по одному — настройка параллельных загрузок и автоматического выбора самого быстрого зеркала ускорит работу в несколько раз.

В этом руководстве мы рассмотрим ключевые настройки производительности в файле /etc/dnf/dnf.conf, включая параллельные загрузки и выбор самого быстрого зеркала. Вы узнаете:

  • Какие настройки DNF влияют на скорость
  • Как увеличить количество параллельных загрузок
  • Как включить автоматический выбор самого быстрого зеркала
  • Как проверить, что настройки применены

Для кого: сисадмины (ускорение работы на серверах), разработчики (ускорение сборки окружений), новички (чтобы понять, как работает DNF).


1. Понимание стандартных настроек DNF

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

НастройкаЗначение по умолчаниюОптимальное значениеЧто делает
max_parallel_downloads310Количество пакетов, загружаемых одновременно
fastestmirrorFalse (0)True (1)Автоматически выбирает зеркало с наименьшей задержкой
gpgcheck1 (True)1 (True)Проверяет подписи пакетов (оставьте включённым)
installonly_limit33Количество версий ядра, оставляемых в системе
clean_requirements_on_removeTrueTrueАвтоматически удаляет ненужные зависимости

💡 Вывод для новичка: Две настройки с наибольшим влиянием на скорость загрузки — 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-роль или скрипт инициализации сервера

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *