Bug 1151851 - Dnf doesn't take newest version of dependent package
Summary: Dnf doesn't take newest version of dependent package
Keywords:
Status: CLOSED NOTABUG
Alias: None
Product: Fedora
Classification: Fedora
Component: dnf
Version: 21
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Packaging Maintenance Team
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2014-10-12 15:39 UTC by Göran Uddeborg
Modified: 2014-10-15 18:45 UTC (History)
7 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed: 2014-10-13 15:57:14 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)
Result of running dnf with the --debugsolver flag. (11.21 MB, application/x-tar)
2014-10-12 15:39 UTC, Göran Uddeborg
no flags Details

Description Göran Uddeborg 2014-10-12 15:39:44 UTC
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

Comment 1 Honza Silhan 2014-10-13 15:57:14 UTC
Provides preference again, sonic-visualiser-freeworld requires libs from qt5-qtbase package not the package itself.

Comment 2 Göran Uddeborg 2014-10-13 17:06:10 UTC
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?

Comment 3 Tim Lauridsen 2014-10-14 05:47:08 UTC
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.

Comment 4 Göran Uddeborg 2014-10-14 19:26:50 UTC
> 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.

Comment 5 Tim Lauridsen 2014-10-15 14:15:17 UTC
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.

Comment 6 Göran Uddeborg 2014-10-15 18:45:21 UTC
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.


Note You need to log in before you can comment on or make changes to this bug.