Error: Transaction test error: file /usr/lib/file from install of package-1.0 conflicts with file from package other-0.9
#Что говорит ошибка
Перед установкой dnf запускает тест транзакции. Строка file ... conflicts with file from package ... значит, что новая версия пакета хочет записать файл, который принадлежит другому пакету. Это бывает при смешивании репозиториев (Fedora + RPM Fusion + Copr + сторонние), при незавершённом обновлении, при переименовании пакетов и при установке пакетов на другую версию Fedora.
#Типичные причины
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Сторонний репозиторий подменяет пакетыRPM Fusion, Copr, vendor. | Конфликт при обновлении. | Отключите лишний репозиторий (dnf config-manager --set-disabled имя) и выполните distro-sync. |
| Обновление между версиями прерваноНеполная установка. | Дубликаты пакетов. | dnf remove --duplicates, затем dnf distro-sync. |
| Пакет переименованСтарый и новый поставляют один файл. | Оба названы в ошибке. | Удалите старый. |
| Мультиархитектурный конфликтi686 и x86_64 версии. | Различие версий. | Обновите обе до одной версии. |
Файл создан вручнуюКопирование в /usr. | Нет владельца. | Переименуйте. |
| Повреждена база RPMПрерывание питания. | Странные ошибки при любой операции. | rpm --rebuilddb. |
#Что делать
- Прочитайте названия пакетов в ошибкеВ терминале Fedora повторите
sudo dnf upgrade --assumenoи найдите строкиconflicts with file from packageилиTransaction test error. Запишите имена конфликтующих пакетов и путь к файлу, затем проверьте их происхождение черезdnf info ИМЯ_ПАКЕТА. Не вводитеrpm --forceи не удаляйте файл по одному названию: он может принадлежать установленному пакету. - Обновите метаданныеВ Fedora, AlmaLinux или Rocky Linux откройте «Терминал» и выполните
sudo dnf clean metadata, затемsudo dnf makecache --refresh. Первая команда очищает только локальные метаданные DNF, вторая загружает их вновь. Если появляется ошибка репозитория, перепишите его имя и адрес; не выключайте проверку GPG-подписей. - Повторите обновлениеОткройте «Терминал» Fedora, выполните
sudo dnf upgrade --refreshи прочитайте предлагаемый список установок и удалений до подтверждения. Если снова появляетсяTransaction check error, выпишите названия конфликтующих пакетов и их версии: повторение команды без устранения конфликта ничего не изменит. Не подтверждайте операцию, если она предлагает удалить графическую среду, ядро или нужные службы; сначала разберите источник конфликтующей версии. - Синхронизируйте версии
sudo dnf distro-syncможет не только обновлять, но и понижать версии пакетов. Используйте его только после определения конкретного стороннего репозитория или смешанных версий и после резервной копии настроек. Сначала проверьте план командойsudo dnf distro-sync --assumeno: прочитайте строкиDowngrading,RemovingиInstalling. Если среди затронутых есть ядро, рабочий стол или серверные приложения — не продолжайте без администратора. Безопаснее сначала исправить выбранные источники пакетов. - Проверьте дубликатыДля подозрительного пакета выполните
rpm -q ИМЯ_ПАКЕТАиsudo dnf repoquery --duplicates, если доступна соответствующая функция в вашей версии dnf. Сравните дубли по архитектуре, версии и репозиторию; не удаляйте пакеты ядра или библиотеки только потому, что установлено несколько версий. После проверки покажите план обновленияsudo dnf upgrade --assumeno. - Удалите конфликтующий пакетУдаление конфликтующего пакета допускается только после проверки его назначения и зависимостей. Сначала выполните
sudo dnf remove ИМЯ_ПАКЕТА --assumeno, подставив фактическое название, и прочитайте, какие ещё пакеты будут удалены. Если там рабочий стол, серверное приложение или важные библиотеки, отмените операцию и ищите совместимую версию в нужном репозитории. На рабочей системе создайте резервную копию до удаления. - Не используйте
rpm --forceНе добавляйте--force,--nodepsили отключение GPG-проверки к командам RPM: принудительная установка при конфликте файлов может сделать пакеты несовместимыми. Сохраните полный вывод DNF и определите, кому принадлежит конфликтующий файл (rpm -qfдля существующего файла, указав его точный путь из ошибки). Если происхождение файла неизвестно, остановитесь и обратитесь к администратору; не удаляйте его наугад. - Команды для отдельных ситуацийВыберите только подходящий вариант. Это не одна последовательность: часть команд диагностирует проблему, а часть меняет настройки или данные.
После исправления проверьте результат: sudo dnf check и dnf list --installed | wc -l не должны выдавать ошибок. Перед большими обновлениями полезно сделать снимок (Btrfs-снимок по умолчанию доступен в Fedora Workstation) или копию важных данных.