Bug 1332990

Summary: rpm failing to detect a conflict
Product: Red Hat Enterprise Linux 7 Reporter: Peter Rajnoha <prajnoha>
Component: rpmAssignee: Florian Festi <ffesti>
Status: CLOSED NOTABUG QA Contact: BaseOS QE Security Team <qe-baseos-security>
Severity: medium Docs Contact:
Priority: medium    
Version: 7.3CC: agk, lkardos
Target Milestone: rc   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2016-05-04 13:55:04 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1325394    

Description Peter Rajnoha 2016-05-04 13:24:02 UTC
I need to add conflict for certain version of lvm2-libs package in device-mapper-event package, so I have this in lvm2.spec file (device-mapper-event is subpackage of lvm2):

%package -n device-mapper-event
Conflicts: lvm2-libs < 2.02.111

Now, when I tried this, the conflict was not detected properly by rpm. I had lvm2-libs-2.02.105-14.el7.x86_64 installed, which is less that 2.02.111 and so it's surely conflicting version:

[1] rhel7-a/~ # rpm -q lvm2-libs
lvm2-libs-2.02.105-14.el7.x86_64

[1] rhel7-a/~ # rpm -q device-mapper-event
device-mapper-event-1.02.84-14.el7.x86_64

[1] rhel7-a/~ # rpm -vv -F device-mapper-1.02.124-1.el7.x86_64.rpm device-mapper-libs-1.02.124-1.el7.x86_64.rpm device-mapper-event-1.02.124-1.el7.x86_64.rpm device-mapper-event-libs-1.02.124-1.el7.x86_64.rpm &> log

# grep "Conflicts: lvm2-libs" log 
D: Conflicts: lvm2-libs < 2.02.111                          NO  

--> so it's "NO" for no conflict, despite the version of lvm2-libs installed is lvm2-libs-2.02.105-14.el7.x86_64 (so lower version than 2.02.111).

====

Now, if I try Conflict but without specifying the version, the conflict is detected:

# rpm -q lvm2-libs
lvm2-libs-2.02.105-14.el7.x86_64

# rpm -q device-mapper-event
device-mapper-event-1.02.84-14.el7.x86_64

# rpm -vv -F device-mapper-1.02.124-1.el7.x86_64.rpm device-mapper-libs-1.02.124-1.el7.x86_64.rpm device-mapper-event-1.02.124-1.el7.x86_64.rpm device-mapper-event-libs-1.02.124-1.el7.x86_64.rpm &> log

# grep "Conflicts: lvm2-libs" log 
D: Conflicts: lvm2-libs                                     YES (db provides)

===

So it looks like rpm has an issue with version checking for the Conflicts line.

Comment 2 Alasdair Kergon 2016-05-04 13:49:38 UTC
What about the epoch?

Comment 3 Peter Rajnoha 2016-05-04 13:55:04 UTC
Yeah, it was the epoch indeed - I realized that later on... I got mislead by the name of the package itself which doesn't have epoch there.