Воспроизведение: # apt-get install cups-filters # apt-get install cups-filters --reinstall На вопрос ответить "y". Результат: # apt-get install cups-filters --reinstall Чтение списков пакетов... Завершено Построение дерева зависимостей... Завершено 0 будет обновлено, 0 новых установлено, 1 пакетов будет переустановлено, 0 пакетов будет удалено и 0 не будет обновлено. Необходимо получить 0B/724kB архивов. После распаковки потребуется дополнительно 0B дискового пространства. Продолжить? [Y/n] y ghostscript-cups конфликтует с cups-filters-1.22.2-alt1.x86_64 foomatic-filters конфликтует с cups-filters-1.22.2-alt1.x86_64 ghostscript-cups конфликтует с (установлен) cups-filters-1.22.2-alt1.x86_64 foomatic-filters конфликтует с (установлен) cups-filters-1.22.2-alt1.x86_64 E: Проверка группы транзакций не удалась Ожидаемый результат: Успешная переустановка пакета. Поведение не консистентно. С одной стороны, такой пакет apt-get позволяет установить, с другой стороны, переустановка не возможна. С обновлением пакета проблем пока не замечал. $ rpm -q --provides cups-filters ghostscript-cups foomatic-filters cups-filters = 1.22.2-alt1:sisyphus+225163.100.1.1 $ rpm -q --conflicts cups-filters cups < 1.6.1-alt1 ghostscript-cups foomatic-filters Происходит это, похоже, из-за совпадения записей provides и conflicts. Аналогичные проблемы возникают при попытке переустановить следующие пакеты: javapackages-tools libzvbi python-module-mysqlclient qmmp1 systemd-sysvinit firefox-esr selinux-policy-alt Вот более полный список их ошибок: ghostscript-cups конфликтует с cups-filters-1.22.2-alt1.x86_64 foomatic-filters конфликтует с cups-filters-1.22.2-alt1.x86_64 ghostscript-cups конфликтует с (установлен) cups-filters-1.22.2-alt1.x86_64 foomatic-filters конфликтует с (установлен) cups-filters-1.22.2-alt1.x86_64 jpackage-utils < 0:5.0.1 конфликтует с javapackages-tools-1:5.0.0-alt1_12jpp8.noarch jpackage-utils < 0:5.0.1 конфликтует с (установлен) javapackages-tools-1:5.0.0-alt1_12jpp8.noarch libzvbi is obsoleted by libzvbi-0.2.35-alt1.x86_64 libzvbi is obsoleted by (установлен) libzvbi-0.2.35-alt1.x86_64 python-module-MySQLdb конфликтует с python-module-mysqlclient-1.4.2.post1-alt1.x86_64 python-module-MySQLdb конфликтует с (установлен) python-module-mysqlclient-1.4.2.post1-alt1.x86_64 qmmp < 1:0.12.0-alt0.M80P.svn8288.1 конфликтует с qmmp1-1.2.6-alt1.x86_64 qmmp < 1:0.12.0-alt0.M80P.svn8288.1 конфликтует с (установлен) qmmp1-1.2.6-alt1.x86_64 SysVinit конфликтует с systemd-sysvinit-1:241-alt3.noarch SysVinit конфликтует с (установлен) systemd-sysvinit-1:241-alt3.noarch firefox конфликтует с firefox-esr-60.6.1-alt1.x86_64 firefox конфликтует с (установлен) firefox-esr-60.6.1-alt1.x86_64 selinux-policy-altlinux конфликтует с selinux-policy-alt-0.0.43-alt1.noarch selinux-policy-altlinux конфликтует с (установлен) selinux-policy-alt-0.0.43-alt1.noarch
У меня есть ощущение, что раньше такой проблемы не было. По крайней мере я иногда пользовался reinstall и не сталкивался с таким поведением. Поправить cups-filters не сложно, но всё-таки для начала хотелось бы понять корректность поведения apt'а.
Изменений нет. # apt-get install --reinstall cups-filters Чтение списков пакетов... Завершено Построение дерева зависимостей... Завершено 0 будет обновлено, 0 новых установлено, 1 пакетов будет переустановлено, 0 пакетов будет удалено и 0 не будет обновлено. Необходимо получить 0B/724kB архивов. После распаковки потребуется дополнительно 0B дискового пространства. Продолжить? [Y/n] ghostscript-cups конфликтует с cups-filters-1.22.5-alt1.x86_64 foomatic-filters конфликтует с cups-filters-1.22.5-alt1.x86_64 ghostscript-cups конфликтует с (установлен) cups-filters-1.22.5-alt1.x86_64 foomatic-filters конфликтует с (установлен) cups-filters-1.22.5-alt1.x86_64 E: Проверка группы транзакций не удалась
Актуализация: баг воспроизводится по-прежнему, на apt-0.5.15lorg2-alt103 (Sisyphus, октябрь 2026). Проверено на минимальном синтетическом пакете: Name: demo2 Version: 1.0 Release: alt1 BuildArch: noarch Provides: virtual-demo = %EVR Conflicts: virtual-demo # apt-get install --reinstall demo2 virtual-demo конфликтует с demo2-1.0-alt1.noarch virtual-demo конфликтует с (установлен) demo2-1.0-alt1.noarch E: Проверка группы транзакций не удалась (rc=100) Дополнительные факты, которые проясняют природу проблемы: 1. Это не специфика apt: чистый rpm ведёт себя так же. # rpm -Uvh demo2-1.0-alt1.noarch.rpm # тот же NEVR, уже установлен ошибка: Неудовлетворенные зависимости: virtual-demo конфликтует с demo2-1.0-alt1.noarch virtual-demo конфликтует с (установлен) demo2-1.0-alt1.noarch То есть librpm при обновлении транзакцией того же NEVR проверяет Conflicts пакета против его же собственной установленной копии (которая одновременно поставляет virtual-demo). 2. Обновление на НОВУЮ версию того же пакета (1.0 -> 1.1 с той же парой Provides/Conflicts) проходит штатно и в apt, и в rpm. Проблема затрагивает только переустановку / обновление на тот же NEVR. 3. Симуляция apt при этом проходит чисто: # apt-get install --reinstall -s demo2 Inst demo2 [1.0-alt1] (1.0-alt1) Conf demo2 (1.0-alt1) (rc=0) т.е. pkgSimulate этот конфликт не моделирует — реальный прогон расходится с симуляцией (в том числе поэтому ошибка всплывает только на этапе выполнения транзакции). 4. В исходниках apt ошибка поднимается из librpm: apt-pkg/rpm/rpmpm.cc, функция pkgRPMLibPM::Run() — после AddToTransaction() вызывается rpmtsCheck(), сообщения «конфликтует с» печатает rpmpsPrint() librpm, затем apt отдаёт "E: Проверка группы транзакций не удалась" (_("Transaction set check failed")). apt при ReInstall выставляет probFilter RPMPROB_FILTER_REPLACEPKG / REPLACEOLDFILES / REPLACENEWFILES для rpmtsRun(), но rpmtsCheck() фильтры проблем не принимает — поэтому обойти проверку со стороны apt текущим механизмом нельзя. Вывод: либо это особенность/баг librpm (конфликт пакета с самим собой при переустановке того же NEVR), либо apt должен обрабатывать reinstall таких пакетов иначе (например, удаление + установка вместо обновления транзакцией). Обход для пользователей: apt-get remove <pkg> && apt-get install <pkg>.