On Wed, Jul 16, 2008 at 04:35:09PM +0100, Rui Santos wrote:
When I booted into the system again I tried fixing the mentioned database but, I'm experiencing a lot of errors. I'll enumerate the attempts and errors:
1) rpmdb --rebuilddb Error: error: rpmdbNextIterator: skipping h# 881 blob size(21356): BAD, 8 + 16 * il(0) + dl(0) error: rpmdbNextIterator: skipping h# 913 blob size(13820): BAD, 8 + 16 * il(0) + dl(0) error: rpmdbNextIterator: skipping h# 945 blob size(67712): BAD, 8 + 16 * il(0) + dl(0) ... error: rpmdbNextIterator: skipping h# 5086 blob size(16084): BAD, 8 + 16 * il(0) + dl(0) error: rpmdbNextIterator: skipping h# 5118 blob size(28752): BAD, 8 + 16 * il(0) + dl(0) error: rpmdbNextIterator: skipping h# 5135 blob size(4740): BAD, 8 + 16 * il(0) + dl(0) Segmentation fault
2) db_verify fails on the files /var/lib/rpm/{Basenames,Filemd5s,Packages}
There's only one critical Database, it's "Packages". All other databases are just indices and get regenerated by 'rpm --rebuildb'. If Packages is corrupt (like in your case), you're in big trouble. The only way to recover is to use db_dump/db_load to salvage all undamaged parts of the old database. Then do 'rpm --rebuilddb'. The result will be that some packages are missing from the database, i.e. rpm no longer knows that the package is installed. There's no way to get the old data back, but you can run "zypper verify" to reinstall missing packages. Cheers, Michael. -- Michael Schroeder mls@suse.de SUSE LINUX Products GmbH, GF Markus Rex, HRB 16746 AG Nuernberg main(_){while(_=~getchar())putchar(~_-1/(~(_|32)/13*2-11)*13);} -- To unsubscribe, e-mail: opensuse+unsubscribe@opensuse.org For additional commands, e-mail: opensuse+help@opensuse.org