Bug 1412910 - rpmdeplint complains about conflicts between packages which can never be installed together, due to Requires relationships
Summary: rpmdeplint complains about conflicts between packages which can never be inst...
Keywords:
Status: CLOSED CURRENTRELEASE
Alias: None
Product: rpmdeplint
Classification: Community
Component: general
Version: unreleased
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: 1.3
Assignee: Tyrone Abdy
QA Contact: tools-bugs
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2017-01-13 06:03 UTC by Tyrone Abdy
Modified: 2017-04-28 05:31 UTC (History)
5 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed: 2017-04-28 05:31:09 UTC
Embargoed:


Attachments (Terms of Use)

Description Tyrone Abdy 2017-01-13 06:03:11 UTC
Description of problem:

When running rpmdeplint against packages that have a declared indirect conflict with other packages the indirect case isn't being correctly determined.

So as an example of that.
We have a new rpm of "glib2-doc-2.28.8-8.el6.noarch" to be installed in optional.
This conflicts with 
"glib2-devel-2.26.1-3.el6.i686" on many files because in the change
from 2.26 to 2.28 the documentation has been apparently split into a new package.

But dnf/yum wouldn't install that as glib2-devel-2.26 requires glib2-2.26 which then has a declared conflict of glib2-doc-2.28 which requires glib2.28 which would adequately resolve that conflict from happening.

When this is run within rpmdeplint the problem listed is 
"package glib2-devel-2.26.1-3.el6.i686 requires glib2 = 2.26.1-3.el6, but none of the providers can be installed"

which might be sufficient to determine that these packages won't conflict. But more investigation should be done.

Comment 2 Dan Callaghan 2017-01-13 08:53:01 UTC
(In reply to Tyrone Abdy from comment #0)
> But dnf/yum wouldn't install that as glib2-devel-2.26 requires glib2-2.26
> which then has a declared conflict of glib2-doc-2.28 which requires glib2.28
> which would adequately resolve that conflict from happening.

It's not that there is a Conflicts declared (there isn't, otherwise rpmdeplint would have probably worked correctly since that is what the conditional is checking for in the error message). Instead the requirements are such that yum/dnf would never try to install glib2-devel-2.26 and glib2-doc-2.28 at the same time.

Each subpackage has a versioned requirement onto its base package, which is conventional. The requirements are:

glib2-devel-2.26 -> glib2-2.26
glib2-devel-2.28 -> glib2-2.28
glib2-doc-2.28 -> glib2-2.28

That means if someone tried to install the new glib2-doc package on a system which has glib2-devel-2.26, yum/dnf would know it has to also upgrade glib2 to 2.28, which would trigger glib2-devel to also be upgraded to 2.28, and so there is no conflict. Trying to have glib2-devel-2.26 and glib2-doc-2.28 installed at the same time violates the Requires, which is what libsolv is telling us here:

> When this is run within rpmdeplint the problem listed is 
> "package glib2-devel-2.26.1-3.el6.i686 requires glib2 = 2.26.1-3.el6, but
> none of the providers can be installed"

Comment 3 Tyrone Abdy 2017-01-16 05:50:42 UTC
https://gerrit.beaker-project.org/#/c/5586/

Comment 4 Dan Callaghan 2017-04-28 05:31:09 UTC
rpmdeplint 1.3 has been released.


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