Bug 6915

Summary: rpm needs tools to repair damaged databases
Product: [Retired] Red Hat Linux Reporter: Chris Siebenmann <cks-rhbugzilla>
Component: rpmAssignee: Jeff Johnson <jbj>
Severity: medium Docs Contact:
Priority: high    
Version: 6.1   
Target Milestone: ---   
Target Release: ---   
Hardware: All   
OS: Linux   
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 1999-11-16 16:00:30 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:

Description Chris Siebenmann 1999-11-11 04:31:30 UTC
As a result of an intaller problem (see bug #6914), we
wound up with a Redhat 6.1 system where the RPM database
thought that a number of RPMs were installed twice (and
when I say 'installed twice', I don't mean with seperate
version numbers; I mean with identical version numbers
and everything).

 It was remarkably hard and tedious to deal with the
situation, because:
- rpm --rebuilddb did nothing to clean up the duplicates
- you cannot 'rpm -e' them; rpm reports that your attempt
  to remove them matches more than one thing.
- rpm -Uvh --replacepkgs on such a duplicated RPM does not
  stamp out the duplication (although at least it doesn't
  make it worse)
- there are no other good tools for dealing with this in
  the rpm arsenal that are obvious.

 To deal with this, we had to go through the tedious
step of forcefully downgrading each RPM to the 6.0 version
(which purged both entries, since they were from 6.1), and
then upgrading it to the 6.1 version again. All just to
play with the database.

 Rpm databases do become damaged from time to time. I think
that rpm badly needs a better set of tools to deal with
this than 'rpm --rebuilddb' (especially when it only deals
with some things, and does nothing about others).

Comment 1 Jeff Johnson 1999-11-16 16:00:59 UTC
Rpm already has such tools:

1) Removing all occurences of a package (e.g. foo) in the database (no files
	rpm -e --allmatches --justdb foo

2) Adding just the header for a package to the database (no files added):
	rpm -i --justdb foo*.rpm

In practice, using the tools is often more complicated than reinstalling