Created attachment 946120 [details] Result of running dnf with the --debugsolver flag. Description of problem: I'm experimenting with individual F21 packages on an F20 system. (Mentioned previously in e.g. bug 1147247.) In addition to regular channels, I have configured "test" channels that point to the F21 repositories. When I tried to install sonic-visualiser-freeworld from RPM Fusion, dnf tries to pull in version 5.3.2-1.fc20 of qt5-qtbase and d:o -gui. But there is an 5.3.2-1.fc21 available in the "test" channel, which is a higher release number. I would have expected dnf to pick that one. Version-Release number of selected component (if applicable): dnf-0.6.1-1.fc21.noarch How reproducible: Every time. Steps to Reproduce: dnf --debugsolver --disablerepo=\* --enablerepo=test --enablerepo=updates --enablerepo=test-rpmfusion-free-updates install sonic-visualiser-freeworld Actual results: ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: liblo x86_64 0.27-5.fc21 test 68 k qt5-qtbase x86_64 5.3.2-1.fc20 updates 3.0 M qt5-qtbase-gui x86_64 5.3.2-1.fc20 updates 4.9 M rubberband x86_64 1.8.1-5.fc21 test 199 k serd x86_64 0.20.0-1.fc21 test 56 k sonic-visualiser-freeworld x86_64 2.1-2.fc21 test-rpmfusion-free-updates 1.9 M sord x86_64 0.12.2-1.fc21 test 37 k xcb-util-image x86_64 0.3.9-5.fc21 test 17 k xcb-util-renderutil x86_64 0.3.9-2.fc21 test 15 k xcb-util-wm x86_64 0.4.1-4.fc21 test 28 k Expected results: ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: liblo x86_64 0.27-5.fc21 test 68 k qt5-qtbase x86_64 5.3.2-1.fc21 test 3.0 M qt5-qtbase-gui x86_64 5.3.2-1.fc21 test 4.9 M rubberband x86_64 1.8.1-5.fc21 test 199 k serd x86_64 0.20.0-1.fc21 test 56 k sonic-visualiser-freeworld x86_64 2.1-2.fc21 test-rpmfusion-free-updates 1.9 M sord x86_64 0.12.2-1.fc21 test 37 k xcb-util-image x86_64 0.3.9-5.fc21 test 17 k xcb-util-renderutil x86_64 0.3.9-2.fc21 test 15 k xcb-util-wm x86_64 0.4.1-4.fc21 test 28 k Additional info: If I try to explicitly install qt5-qtbase-gui, dnf does pick the fc21 version as I would have expected. Together with a few additional dependencies. (So I have an obvious workaround.) mimmi$ sudo env LANG=en_US.utf8 dnf --debugsolver --disablerepo=\* --enablerepo=test --enablerepo=updates --enablerepo=test-rpmfusion-free-updates install qt5-qtbase-gui Dependencies resolved. ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: libxkbcommon-x11 x86_64 0.4.3-2.fc21 test 22 k qt5-qtbase x86_64 5.3.2-1.fc21 test 3.0 M qt5-qtbase-gui x86_64 5.3.2-1.fc21 test 4.9 M xcb-util-image x86_64 0.3.9-5.fc21 test 17 k xcb-util-renderutil x86_64 0.3.9-2.fc21 test 15 k xcb-util-wm x86_64 0.4.1-4.fc21 test 28 k Upgrading: libxcb i686 1.10-3.fc21 test 183 k libxcb x86_64 1.10-3.fc21 test 172 k libxcb-devel x86_64 1.10-3.fc21 test 1.1 M libxkbcommon i686 0.4.3-2.fc21 test 107 k libxkbcommon x86_64 0.4.3-2.fc21 test 105 k libxkbcommon-devel x86_64 0.4.3-2.fc21 test 54 k
Provides preference again, sonic-visualiser-freeworld requires libs from qt5-qtbase package not the package itself.
Does anyone have some kind of pointer to some document elaborating on the "provides preference" concept? sonic-visualiser-freeworld requires libQt5Core.so.5()(64bit). Among the available packages both qt5-qtbase-5.3.2-1.fc20 and qt5-qtbase-5.3.2-1.fc21 provides that. The latter has a "higher" number, so I would expect that to be chosen. Similarily for the other libQt5* requirements. I understand something is missing in my reasoning, but I would like to know what. Does anyone have a pointer to some appropriate documentation?
When looking for libQt5Core.so.5()(64bit), the first provider is choosen, no need to look at versions of the provides as it already has a match. if sonic-visualiser-freeworld had required qt5-qtbase, the newest version would have beed choosen.
> When looking for libQt5Core.so.5()(64bit), the first provider is choosen no > need to look at versions Really? Could that happen between the "fedora" and "updates" repositories too? I mean, assuming a completely standard installation. Assume I install a package apa that requires a library libbepa.so.1()(64bit). Assume this is provided by libbepa, which exists in one version in "fedora", and one slightly later in "updates". Could dnf pick the libbepa from "fedora" in this situation? THAT I would have thought is a bug. The environment I'm testing on is certainly non-standard. I do expect some breakage. But in the above standard scenario, I would certainly expect the newest version of libbepa to be chosen.
qt5-qtbase-5.3.2-1.fc20 and qt5-qtbase-5.3.2-1.fc21 is the same package just build in a f20 & f21 buildroot from the same source and spec file. you will not find the same package in fedora & updates, packages in updates will have a higher version the one in fedora.
Are you now saying that dnf can detect that the two packages are built from the same sources? And because of that it is picking one randomly rather than selecting the highest e-v-r? I didn't think it was visible from the metadata that the sources were the same. And why would that reasoning not apply if sonic-visualiser-freeworld had required qt5-qtbase? In comment 3 you said it would have chosen the lates version in that case. But this reason would have been just as valid in that case, wouldn't it? Sorry if I'm being dense, but I'm feeling increasingly confused.