I recently tried to update some packages on my (fedora 27, x64) machine, which
dnf complains is in conflict. However, I cannot figure out how to get
dnf to tell me the cause of the conflict.This related question says that I should use
--best to solve the problem, but this still doesn't tell me why a seemingly non-conflicting situation is considered a conflict.
The TL;DR of this question is: how do I get
dnf to tell me which packages are conflicting and what the associated dependents are?
The following is the conflict:
$dnf update Last metadata expiration check: 1:49:45 ago on Tue 27 Nov 2018 03:16:34 PM CET. Dependencies resolved. Problem: problem with installed package i3status-2.12-1.fc27.x86_64 - package i3status-2.12-1.fc27.x86_64 requires libconfuse.so.1()(64bit), but none of the providers can be installed - cannot install both libconfuse-3.2.2-1.fc27.x86_64 and libconfuse-3.2-3.fc27.x86_64 - cannot install both libconfuse-3.2-3.fc27.x86_64 and libconfuse-3.2.2-1.fc27.x86_64 - cannot install the best update candidate for package libconfuse-3.2-3.fc27.x86_64
I figured out (with
dnf --deplist info) that
i3status-2.12-1.fc27.x86_64 depends on
dependency: libconfuse.so.1()(64bit) provider: libconfuse-3.2-3.fc27.x86_64
However, I cannot for the life of me figure out what thing depends on the older
libconfuse-3.2.2-1.fc27.x86_64 package. I assumed reverse dependencies of installed packages would be easy to search, but the solution suggested here states that
dnf repoquery --available --alldeps --source --whatrequires libconfuse-3.2.2-1.fc27.x86_64 should do the trick; however the output is:
Last metadata expiration check: 1:59:58 ago on Tue 27 Nov 2018 03:16:34 PM CET. libconfuse-3.2.2-1.fc27.src.rpm
And of that rpm, there are no dependencies at all. In other words, the only package that requires this is the package itself, but this doesn't happen all the time, so I'm guessing this list is somehow incomplete. Digging into
dnf repoquery a bit, I found that
dnf repoquery --all --installed --whatrequires libconfuse should give me the desired output. This says:
Which is the package that was originally listed as the package I want to update, yet as already pointed out above, this depends on
libconfuse.so.1()(64bit) provided by
libconfuse-3.2-3.fc27.x86_64. In other words, there should be no conflict, according to this output. What am I missing here?