Opened 10 years ago

Last modified 5 years ago

#117 new defect

Rpmdb checksum is invalid: dCDPT(pkg checksums)

Reported by: guzzi Owned by:
Priority: minor Milestone:
Component: rpm Version:
Severity: low Keywords:
Cc:

Description

After installing clamav I got error

Warning: RPMDB altered outside of yum.
Rpmdb checksum is invalid: dCDPT(pkg checksums)

Yum still functions and I can install other packages, but the error now comes back with every install. rpm --rebuilddb does not fix it.

Change History (21)

comment:1 by guzzi, 10 years ago

Priority: majorminor

comment:2 by David McKenna, 10 years ago

'yum clean rpmdb' got rid of this error for me.

comment:3 by guzzi, 10 years ago

It didn't for me.

comment:4 by Yuri Dario, 10 years ago

It seems related to some kind of rpm database corruption or duplicate entries. Try

rpm -qa "*clam*"

and see if you have duplicate entries.
Maybe also 'rpm --rebuilddb' could help.

comment:5 by guzzi, 10 years ago

No duplicates. rpm --rebuilddb doesn'fix it.

comment:6 by Lewis Rosenthal, 10 years ago

I am seeing this as well, in two different VMs, since upgrading rpm to 4.8.1-22. 4.8.1-20 does not seem to exhibit this behavior (unzipping 4.8.1-20 over an installed 4.8.1-22 results in clean installs without the error). Unfortunately, I can't find a good way of rolling back via yum from 4.8.1-22, as yum downgrade fails with a number of dependencies (including gcc-4.9.2.1-3).

comment:7 by Lewis Rosenthal, 9 years ago

Severity: low

This has bubbled up to the surface for me again, as we're readying YUMIE for release.

Interestingly, from @unixroot/var/lib/rpm, I ran:

ren Packages Packages.bak
db_dump Packages.bak | db_load Packages
rpm --rebuilddb

The resulting rebuilt Packages db is considerably slimmer than the previous one:

11-19-15  18:40       3,162,112    124  Packages
 9-26-15   8:55       3,440,640    124  Packages.bak

I'm still seeing the error message during an update operation, but not during install or remove (multiple packages, via yum).

comment:8 by Silvan Scherrer, 8 years ago

Summary: installing clamav gives Rpmdb checksum is invalid: dCDPT(pkg checksums)Rpmdb checksum is invalid: dCDPT(pkg checksums)

I changed the Summary, as this is a general issue and has nothing to do with clamav. Clamav just triggered it for the reporter the first time.

comment:9 by Silvan Scherrer, 8 years ago

http://trac.netlabs.org/rpm/browser/yum/trunk/yum/rpmsack.py line 706 rises this error. Do we have some debug flags activated?

comment:10 by Silvan Scherrer, 8 years ago

in https://github.com/rpm-software-management/yum/commit/bf106ce30a198f32f43d14041d808b60f9e6719e#diff-54c87c0b8b359850b7c3cfec40445626 the fix is present. I added it locally and see no more issues. Dmik also has my rpmsack.py and does some additional testings

comment:11 by Yuri Dario, 8 years ago

yum: fix (from upstream) epoch handling in package match. Fixes ticket#117.
Committed revision r1018.

comment:12 by dmik, 8 years ago

Note that I still get this:

Rpmdb checksum is invalid: dCDPT(pkg checksums): coreutils-common.i686 0:8.26-2 - u

sometimes. So this fix doesn't actually remove this message it makes it more verbose. Perhaps it's also related to the fact that the Rpmdb was touched outside yum (i.e. by rpm directly). The question is how to get rid of such messages. Sometimes yum clean all helps but not always it seems.

comment:13 by Silvan Scherrer, 8 years ago

this is all a yum issue. and yum got several hundreds fixes, but no new release. when time permits, we might update to latest yum git head.

comment:14 by Silvan Scherrer, 5 years ago

this can be worked around by setting the debuglevel to 0 in /etc/yum/yum.conf

comment:15 by Lewis Rosenthal, 5 years ago

Set debuglevel to 0 in /etc/yum/yum.conf.

[n:\] yum update os2-rpm

worked as expected (after confirming update, returned to prompt with no further output). Then:

[n:\] yum update sed

produced:

Rpmdb checksum is invalid: dCDPT (pkg checksums): sed.i686 0:4.7-1.oc00 - u

so it looks like debuglevel=0 is not a comprehensive workaround.

Version 0, edited 5 years ago by Lewis Rosenthal (next)

comment:16 by Silvan Scherrer, 5 years ago

I hate it when documentation is wrong. as this message is only spit when debug value is set. So it must be set anyway somehow. So we have to live with it further. As I have no time to debug when this value is set and why.

comment:17 by Silvan Scherrer, 5 years ago

I added some debug locally, but until now i'm not able to trigger it.

comment:18 by Silvan Scherrer, 5 years ago

ok I found something eventually. please test it

in /usr/lib/python2.7/site-packages/yum/rpmsack.py search for

#YD already root based
self._cachedir = cachedir + "/installed/"

and change that to

#YD already root based
#self._cachedir = cachedir + "/installed/"
self._cachedir = cachedir

This installed part is not used since yum 3.4.1 when I read the code right. And I could downgrade and update several packages in a row w/o issues. Before this did not work.

comment:19 by Lewis Rosenthal, 5 years ago

Sorry, not working here.

I made the change as described, and then attempted to update whois from the root directory. The error message presented itself.

Same error when downgrading.

Also, the installed directory is indeed used. It is emptied at the conclusion of a transaction, but with DELDIR enabled, it is possible to list the files which were removed from the installed directory (%UNIXROOT%\var\lib\yum\rpmdb-indexes\installed).

Perhaps looking down closer to line 688 (def _deal_with_bad_rpmdbcache) might produce some clues as to what is triggering this (or line 369).

I haven't spent enough time with the script to fully understand all that is happening in it, but maybe you'll catch something.

Last edited 5 years ago by Lewis Rosenthal (previous) (diff)

comment:20 by Silvan Scherrer, 5 years ago

The installed dir is not used at all if you changed all right. And i cant trigger it anymore with the changes.

comment:21 by Silvan Scherrer, 5 years ago

ok today I got it as well again. I give up on this for now, as I have really no time. I might look at it again but for sure not before the end of August.

Note: See TracTickets for help on using tickets.