Note: This is a public test instance of Red Hat Bugzilla. The data contained within is a snapshot of the live data so any changes you make will not be reflected in the production Bugzilla. Email is disabled so feel free to test any aspect of the site that you want. File any problems you find or give feedback at bugzilla.redhat.com.
Bug 1084129 - [vote] dnf handling of broken dependencies leaves user in a dark
Summary: [vote] dnf handling of broken dependencies leaves user in a dark
Keywords:
Status: CLOSED NOTABUG
Alias: None
Product: Fedora
Classification: Fedora
Component: dnf
Version: rawhide
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-04-03 16:50 UTC by Michal Jaegermann
Modified: 2015-09-16 14:11 UTC (History)
12 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2014-04-06 11:46:47 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Bugzilla 1148627 0 high CLOSED dnf doesn't provide enough info to understand the package dependencies 2022-05-16 11:32:56 UTC

Internal Links: 1148627

Description Michal Jaegermann 2014-04-03 16:50:58 UTC
Description of problem:

dnf automatically skips packages with broken dependencies.  That is good but, unfortunately, when dealing with such package one gets only "Nothing to do" without any clues what happened and why.  There is not even a clear way to obtain such information on demand.

In "real life" installations, which usually include packages from different sources and/or self-compiled (and not even mentioning that detail that even "single repository" mirrors are getting broken from time to time) the above is a really bad deficiency.  When yum informs me that something got skipped because of broken dependencies and allows me to see what conflicts and where I can do one of the following:
  - decide to wait until dependencies are resolved
  - remove, temporary or permanently, some packages which are causing conflict
  - replace something with non-conflict versions which I recompiled myself or retrieved elsewhere (say koji)
  - force an installation of something while recognizing that some programs will be (hopefuly temporary) be broken but I do not care for the moment

None of this is viable if I am just told "Nothing to do".

Historically an information that I have to perform one of corrective actions was absolutely crucial on various occasions of distro upgrades.  Besides bare "Nothing to do" is clearly detrimental when dealing with rawhide installations

Version-Release number of selected component (if applicable):
dnf-0.4.19-1.fc21

Expected results:
At least an option, or better a configuration flag too, allowing to see that a conflict happened and what disagrees with what.

Comment 1 Ales Kozumplik 2014-04-04 12:19:38 UTC
Hello, thank you for the report. The issue has been already reported and resolved, please see bug 988778.

*** This bug has been marked as a duplicate of bug 988778 ***

Comment 2 Michal Jaegermann 2014-04-04 16:35:25 UTC
(In reply to Ales Kozumplik from comment #1)
> Hello, thank you for the report. The issue has been already reported and
> resolved, please see bug 988778.

You cannot be really serious, are you?  A quick experiment with a package Macaulay2, which has broken dependencies in the current rawhide, reveals that
'yum install --skip-broken Macaulay2' results in:

Packages skipped because of dependency problems:
    4ti2-1.6.2-3.fc21.x86_64 from rawhide
    4ti2-libs-1.6.2-3.fc21.x86_64 from rawhide
    Macaulay2-1.5-5.fc21.x86_64 from rawhide
    cddlib-094g-9.fc20.x86_64 from rawhide
    factory-gftables-3.1.5-13.fc21.noarch from rawhide
    flint-2.4.2-2.fc21.x86_64 from rawhide
    gf2x-1.1-3.fc20.x86_64 from rawhide
    gfan-0.5-8.fc21.x86_64 from rawhide
    glpk-4.53-1.fc21.x86_64 from rawhide
    libnormaliz-2.10.1-2.fc21.x86_64 from rawhide
    normaliz-2.10.1-2.fc21.x86_64 from rawhide
    ntl-6.1.0-1.fc21.x86_64 from rawhide
    pari-2.5.5-1.fc21.x86_64 from rawhide

plus a detailed chain of dependencies showing what is happening here and why the failure. This chain happens here to be quite long so try it yourself.

With 'dnf install --best Macaulay2' the whole output looks like this:

Resolving dependencies
--> Starting dependency resolution
--> Finished dependency resolution
Error: nothing provides libntl.so.2()(64bit) needed by Macaulay2-1.5-5.fc21.x86_64

leaving me scratching my head.  Even if on occasion that may be enough to start guessing in many cases this is grossly inadequate.

Besides see also bug 1084553.

Comment 3 Ales Kozumplik 2014-04-06 11:46:47 UTC
Michael, please stop interfering with our triaging process. This has been internally discussed and settled many times before. DNF is aimed at regular users, who do not and should not know even what dependencies are.

Closing again per comment 1.

*** This bug has been marked as a duplicate of bug 988778 ***

Comment 4 Miroslav Suchý 2014-04-07 07:24:15 UTC
Ales, I tend to agree with Michal.

I tried it (although Macaulay2 seems to be fixed now) and in my case yum say:

yum install --releasever=rawhide python3-libs
...
Error: Package: libpeas-1.10.0-1.fc21.x86_64 (fedora)
           Requires: libpython3.3m.so.1.0()(64bit)
           Removing: python3-libs-3.3.2-11.fc20.x86_64 (installed)
               libpython3.3m.so.1.0()(64bit)
           Updated By: python3-libs-3.4.0-6.fc21.x86_64 (bkabrda-python-3.4)

While dnf say:
dnf upgrade --best --releasever=rawhide python3-libs
Error: package python3-hawkey-0.4.12-1.fc20.x86_64 requires libpython3.3m.so.1.0()(64bit), but none of the providers can be installed

I agree that for most users is current DNF output sufficient. But it does not help with reporting errors.
Because DNF say what happened and even why, but does not reveal root of the cause, which is buried in transitive dependencies.
Therefore if I want to report broken deps (which I do pretty often before GA). I would have to manually search why (in my case) python3-hawkey require libpython3.3m.so.1.0. And find that some of its deps require it and would have to go one package by one package and manually find it.

If you can introduce --reveal-real-cause-of-broken-deps or even another tool or simple HOWTO,  then it would really help people doing QA of Fedora.

Comment 5 Ales Kozumplik 2014-04-07 07:39:36 UTC
I do see your and Michal's point of view. The thing is that DNF is not a QA tool, neither a rel-eng tool. People who take on such tasks should use their own tools, perhaps in the form of plugins to DNF. For the time being there is no intention and no plan from our team to work on an extension like that, thus no open bugzilla. If you can supply the patch, that would be fine. Otherwise the only thing the community users can do to change our mind would be if enough (20 or so) of them is CCed on the original bug.

Another thing I'd like to mention (again): if there's a chain of dependencies that end up unresolvable, an automatic tool can not in many (most?) cases point out which exact piece of the chain is broken. Such tool has to take the right, heuristic steps not to spew hundreds of lines of undecipherable dependency information as Yum sometimes does.

Comment 6 Panu Matilainen 2014-04-07 08:09:00 UTC
At one end there are the end users who might not know what a package is, but at the other end there are people like packagers who need to be able to figure out why something is not working. I can understand not wanting to spit out mile-long dependency debug dumps by default, but there should be a way to get that information in a form that can be deciphered by packagers, rel-eng, QA, or simply just experienced users who might be helping an end-user sort out a problem on a mailing list. You certainly dont want everybody with a depsolving problem to file a bug :)

Comment 7 Miroslav Suchý 2014-04-07 08:16:37 UTC
To follow up #5 and to be precise. The original (aka voting BZ is bug 988778)

Comment 8 Kamil Páral 2014-04-07 08:37:00 UTC
I think the ideal approach here would be:

1. If user asks for something to be installed and we can't install it, inform him in a simple way. I think this is great:

> Error: nothing provides libntl.so.2()(64bit) needed by Macaulay2-1.5-5.fc21.x86_64

2. If the user runs dnf with --debuglevel 10 (or similar), show more detailed information helpful for more experienced users. Fedora has chosen not to target the general audience (like Ubuntu), but a bit more experienced users or users likely to contribute (e.g. in a form of bug reports), so it would be appropriate to have an easy way of getting a bit more advanced functionality from our tools. It doesn't have to be the default behavior (the yum output is often too technical), but it would be nice to have it simply available, at least from my QA point of view. If I need to install additional diagnostics software to every VM or everytime I boot a Live image just to see proper broken dep info, I won't be very happy.

Of course, it would be sufficient to print those extra information to dnf.log and not on the screen. It's not important whether people need to use --debug or inspect a log file, as long as it is available somewhere.

Comment 9 Ales Kozumplik 2014-04-07 08:46:46 UTC
not a dup of that other bug, hard to believe there's none other like this I can find. Let's keep the discussion running here.

Comment 10 Michael Schröder 2014-04-07 09:04:01 UTC
Regarding comment #4:
Unfortunately there's no "root cause", a problem always consists of a number of dependencies and jobs that keep a package from being used.

libsolv uses some heuristic to select one of the deps to present it as "cause" to the user, there's also the possibility to display all of the involved deps. But while this is really useful to find out what's going on it will confuse every "normal" user, so I do not suggest to make this the default. But maybe you might add an option to select this?

I can also tweak the heuristic to prefer "no provider of a dep" errors, if this is what happens in Rawhide all the time. Dunno if that would help you.

I can also add a function that returns where the "best" package could not be installed, if you want something like yum's "skipped because of dependency problems".

Comment 11 Ankur Sinha (FranciscoD) 2014-04-07 09:59:27 UTC
We sort of discussed the same thing here Ales: https://bugzilla.redhat.com/show_bug.cgi?id=1060522

Comment 12 Bruno Wolff III 2014-04-07 13:24:02 UTC
When I have package dependency problems in Fedora, most commonly I remove the packages that are blocking updates. (Though sometimes I can't do that and still have something I need.) The way that normally works is to use "yum update -y -v | grep -i fail". However sometimes you don't really need to remove all of the listed packages to be able to update everything. Also occasionally something is blocking updates and doesn't show up will a failed update. This list can be significantly shorter than the full list of packages with updates that can't currently be done with the currently installed packages.

Comment 13 Ales Kozumplik 2014-04-07 14:07:32 UTC
(In reply to Michael Schröder from comment #10)
> Regarding comment #4:
> Unfortunately there's no "root cause", a problem always consists of a number
> of dependencies and jobs that keep a package from being used.
> 
> libsolv uses some heuristic to select one of the deps to present it as
> "cause" to the user, there's also the possibility to display all of the
> involved deps. But while this is really useful to find out what's going on
> it will confuse every "normal" user, so I do not suggest to make this the
> default. But maybe you might add an option to select this?

I think we talked about this before---can you please remind me how to trigger it in libsolv?

> 
> I can also tweak the heuristic to prefer "no provider of a dep" errors, if
> this is what happens in Rawhide all the time. Dunno if that would help you.

I doubt this is what will stop complementary group of users to open an analogical bug.
 
> I can also add a function that returns where the "best" package could not be
> installed, if you want something like yum's "skipped because of dependency
> problems".

While it would be nice I am not sure we'd want to use it in DNF by default: having things silent doesn't prevent the QA from finding out dependency bugs and OTOH prevents avalanche of dupes from avid users.

Comment 14 Michael Schröder 2014-04-07 14:26:58 UTC
If you want all deps listed you need to use solver_findallproblemrules() instead of solver_findproblemrule() in hawkey's hy_goal_describe_problem() function.


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