dnf: Error: Transaction test error / конфликт пакетов

  • Обновлено
  • Чтение ≈ 3 минуты
  • Нужны права администратора

Краткий ответ

Конфликт возникает, когда два пакета содержат один и тот же файл либо зависимости несовместимы. Ниже — причины и порядок действий от простого к сложному.

В этой статье
  1. Что означает ошибка
  2. Причины и решения
  3. Пошаговое решение
  4. Диагностика
  5. Решение
  6. Если не получается

#Что означает ошибка

Сообщение
Error: Transaction test error: file ... conflicts between attempted installs

Ошибка dnf package X conflicts with Y provided by Z или Problem: ... conflicting requests означает, что устанавливаемый или обновляемый пакет несовместим с уже установленным: они поставляют один и тот же файл или явно объявлены конфликтующими. Типично для смены версий PHP/Python/MariaDB и подключённых модулей.

Прочитайте, какие именно пакеты конфликтуют, и решите, какой оставить.

Принудительная установка небезопасна.

Конфликт возникает, когда два пакета содержат один и тот же файл либо зависимости несовместимы. Часто помогают очистка кэша и синхронизация с dnf distro-sync.

#Причины и решения

Возможная причинаКак узнатьЧто делать
Смешанные репозиторииРазные версии.Отключите лишние.
Остатки старых версийУстаревшие пакеты.Удалите.
Повреждён кэшМетаданные.Очистите.
Конфликт сторонних пакетовДругие репозитории.Используйте один.

#Пошаговое решение

  1. Прочитайте пары конфликтующих пакетовВнимательно прочитайте весь вывод sudo dnf update и выпишите названия двух конфликтующих пакетов, их версии и репозитории. Часто один пакет принадлежит внешнему репозиторию или другой ветке дистрибутива. Выполните dnf info ИМЯ_ПАКЕТА для каждого из реальных имён и сравните «From repo»/«Repository». До выяснения не используйте --allowerasing и rpm --force: они могут удалить нужный пакет или переписать чужой файл.
  2. Просмотрите план без выполненияДля просмотра возможных изменений без выполнения воспользуйтесь sudo dnf upgrade --assumeno: команда показывает план и отвечает отказом на подтверждение; на поддерживаемых выпусках также можно проверить --downloadonly лишь после сверки параметров версии. Если план содержит удаление критических библиотек, ядра или панели управления сервером, отмените операцию. Сохраните имена пакетов и названия репозиториев, чтобы исправить источник конфликта.
  3. Найдите владельца файлаСкопируйте путь конфликтующего файла из сообщения DNF. В терминале Fedora/RHEL-совместимой системы выполните rpm -qf "/реальный/путь", подставив настоящий путь и сохранив кавычки. Если файл отсутствует и DNF сообщает о конфликте пакетов, выполните dnf repoquery --whatprovides "/имя/файла" (при наличии соответствующего средства) и изучите список. Не удаляйте файл, пока не установлены его владелец, необходимость и резервная копия конфигурации.
  4. Замените пакет или сбросьте модульСначала выполните пробный запуск sudo dnf install ИМЯ_ПАКЕТА --assumeno с настоящим названием из ошибки. Если DNF предлагает заменить библиотеку или удалить другое приложение, оцените последствия; dnf swap и dnf module reset не равнозначны и требуют знания имени модуля. Применяйте только после проверки совместимости репозитория и сохранения резервной копии.
  5. Выполните distro-syncdistro-sync выравнивает версии установленных пакетов с выбранными репозиториями и иногда понижает версии, поэтому не запускайте его без просмотра плана. Сначала выполните sudo dnf distro-sync --assumeno и изучите список изменений. На рабочем сервере создайте снимок/копию и запланируйте окно обслуживания. Применяйте sudo dnf distro-sync только если источники пакетов проверены и план безопасен; после операции проверьте работу критических служб.
  6. Очистка кэша dnf
    Linux · Терминал (Bash)КомандаНужен sudo
    Очистка кэша dnf.
    sudo dnf clean all

#Диагностика

Выполните команду с подробностями: sudo dnf install пакет --allowerasing --assumeno (покажет, что будет удалено, без выполнения). Выясните, кто поставляет файл: dnf provides /путь/к/файлу. Посмотрите установленное: rpm -qa | grep имя. Проверьте репозитории и модули: dnf repolist, dnf module list. Конфликты часто возникают из-за смешивания EPEL/Remi/AppStream.

#Решение

Замените конфликтующий пакет: sudo dnf swap старый новый или sudo dnf install новый --allowerasing (после проверки списка удаляемых). Переключите поток модуля: sudo dnf module reset php && sudo dnf module enable php:remi-8.3. Обновите весь набор: sudo dnf distro-sync. Удалите дубликаты версий: sudo dnf remove $(dnf repoquery --duplicates --latest-limit=-1 -q) (проверьте список). Исправьте приоритеты репозиториев: priority= в .repo.

#Если не получается

Попробуйте sudo dnf update --best --allowerasing. Очистите кэш: sudo dnf clean all && sudo dnf makecache. Проверьте консистентность: sudo dnf check и sudo rpm -Va --nofiles. Для проблемных сторонних репозиториев временно отключите: --disablerepo=имя. Не используйте rpm --force --nodeps: можно сломать систему. В продакшене сначала проверьте изменения на копии или в снимке виртуальной машины.

Linux · Терминал (Bash)С осторожностьюНужен sudo
Просмотр плана с конфликтами и синхронизация версий пакетов (подставьте имя пакета).
sudo dnf install пакет --allowerasing --assumeno
dnf provides /usr/bin/файл
sudo dnf module list
sudo dnf distro-sync

Команда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.