• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst] rpm-datenbank kaputt - rpm --rebuilddb stürzt ab!

derBernd

Newbie
Hallo,
ich bin absolut am verzweifeln. :cry:
Ich habe mein OpenSuse 10.1 mit tar gespiegelt, die Partition nach vorne hin vergrößert und OpenSuse wieder aufgespielt.
Hatte vorher eine Reiserfs-Partition und nun ext3.
Swap und Partition wird ordentlich gebootet. Alle Programme laufen ordentlich, also genauso wie vorher.

Dann wollte ich mit YaST2 ein paar rpms nachinstallieren: Allerdings ist nach yast kein einziges Paket installiert.
Habe dann rpm --rebuiddb ausprobiert. Da kommt folgendes:

Code:
linux:/var/adm/backup/rpmdb # rpm --rebuilddb
*** glibc detected *** rpm: munmap_chunk(): invalid pointer: 0xb7eb43b2 ***
======= Backtrace: =========
/lib/libc.so.6[0xb7b92911]
/usr/lib/librpm-4.4.so(rpmtsAcquireLock+0x29a)[0xb7eac57a]
/usr/lib/librpm-4.4.so(rpmtsRebuildDB+0x2a)[0xb7e9f0ba]
rpm[0x804c076]
/lib/libc.so.6(__libc_start_main+0xdc)[0xb7b4487c]
rpm[0x804a8b1]
======= Memory map: ========
08048000-0805b000 r-xp 00000000 03:06 227606     /bin/rpm
0805b000-0805d000 rw-p 00012000 03:06 227606     /bin/rpm
0805d000-08088000 rw-p 0805d000 00:00 0          [heap]
b7ad7000-b7ae1000 r-xp 00000000 03:06 211486     /lib/libgcc_s.so.1
b7ae1000-b7ae2000 rw-p 00009000 03:06 211486     /lib/libgcc_s.so.1

Der gleiche Absturz bei rpm --initdb ...
/var/adm/backup/rpmdb/packages.rpm existiert nicht.

In meiner Datensicherung ist nur noch folgendes:

Code:
linux:/media/usbdisk/oldlinuxtar/var/adm/backup/rpmdb # ls -lisa
insgesamt 768
89942   0 drwxr-xr-x 2 root root    360 2007-05-31 10:46 .
89941   0 drwx------ 4 root root    184 2006-12-12 14:53 ..
89949   4 -rw-r--r-- 1 root root     36 2007-05-30 15:15 rpmdb_recent_md5
89947 152 -rw-r--r-- 1 root root 153346 2007-01-23 11:00 sysconfig-20070123.tar.gz
89948 152 -rw-r--r-- 1 root root 153478 2007-03-01 10:00 sysconfig-20070301.tar.gz
89945 152 -rw-r--r-- 1 root root 153472 2007-03-11 17:47 sysconfig-20070311.tar.gz
89946 152 -rw-r--r-- 1 root root 153642 2007-05-23 18:00 sysconfig-20070523.tar.gz
89944 152 -rw-r--r-- 1 root root 153641 2007-05-24 21:05 sysconfig-20070524.tar.gz
89943   4 -rw-r--r-- 1 root root     36 2007-05-24 21:05 sysconfig_recent_md5

Evtl. habe ich sogar wg. Platzmangel die rpm-database gelöscht.
Die Reparaturkonsole (Installierte Software prüfen) stürzt ab.

Gibt es trotzdem eine Möglichkeit, die rpm-database wiederherzustellen zu lassen. Bin für jede Hilfe sehr dankbar.
 
Unter /var/adm/backup/rpmdb liegen nur die Backups der RPM-Datenbank.
Poste doch mal die Ausgabe von:
Code:
ls -las /var/lib/rpm/
Allerdings scheint rpm selbst auch etwas abbekommen zu haben.
Ich würde an deiner Stelle erstmal rpm neu installieren und anschließend versuchen die RPM-Datenbank zu rekonstruieren.

Von der SUSE-DVD in das Rettungssystem booten und rpm neu von der CD installieren:
Code:
rpm --nodeps --root /pfad/zum/suse-mp /mnt/dvd/[...]/rpm-[...].rpm
(evtl. noch mit der Option --force)
Vorher natürlich noch die root-Partition schreibbar mounten.


Um die RPM-Datenbank neu aufzubauen:
Für jedes RPM auf der DVD mit rpm -ql die enthaltenen Dateien auflisten, mit den Dateien im Dateisystem vergleichen und dann mit rpm --justdb wieder in die Datenbank eintragen (das ganze mit einem kleinem Shell-Script).
 
OP
D

derBernd

Newbie
Hallo,
OK! Hier meine Daten:
Code:
linux:/home/bernd # ls -las /var/lib/rpm/
insgesamt 50544
    4 drwxr-xr-x  3 root root     4096 2007-06-01 18:42 .
    4 drwxr-xr-x 57 root root     4096 2007-06-01 19:13 ..
    4 drwxr-xr-x  2 root root     4096 2007-06-01 19:06 alternatives
 5788 -rw-r--r--  1 root root  9707520 2007-06-01 19:48 Basenames
   12 -rw-r--r--  1 root root    12288 2007-06-01 19:48 Conflictname
 1460 -rw-r--r--  1 root root  1490944 2007-06-01 19:48 Dirnames
 7712 -rw-r--r--  1 root root 10162176 2007-06-01 19:48 Filemd5s
   24 -rw-r--r--  1 root root    24576 2007-06-01 19:48 Group
   44 -rw-r--r--  1 root root    45056 2007-06-01 19:48 Installtid
   40 -rw-r--r--  1 root root    45056 2007-06-01 19:48 Name
34236 -rw-r--r--  1 root root 35016704 2007-06-01 19:48 Packages
  476 -rw-r--r--  1 root root   638976 2007-06-01 19:48 Providename
  136 -rw-r--r--  1 root root   135168 2007-06-01 19:48 Provideversion
   12 -rw-r--r--  1 root root    12288 2006-11-01 15:14 Pubkeys
  248 -rw-r--r--  1 root root   253952 2007-06-01 19:48 Requirename
  184 -rw-r--r--  1 root root   184320 2007-06-01 19:48 Requireversion
   84 -rw-r--r--  1 root root    90112 2007-06-01 19:48 Sha1header
   64 -rw-r--r--  1 root root    81920 2007-06-01 19:48 Sigmd5
   12 -rw-r--r--  1 root root    12288 2007-06-01 19:09 Triggername

Das mit dem Rettungssystem hört sich gut an. Probiere gleich aus!
:)
 
OP
D

derBernd

Newbie
Hallo,
Erstmal vielen Dank für die schnelle Hilfe.
Irgendwie installiert rpm das rpm-Paket nicht. Habe auch alle abhängigen Pakete nachinstalliert. Bei dem rpm-4...rpm Paket wird auch mit --force Option immer abgebrochen. rpm-devel liess sich problemlos intallieren.
Evtl. hat auch die glibc etwas abbekommen.
Habe mir gestern Abend die SuSE 10.2 gesaugt. Versuche es mit einem Update.
 
:roll:
derBernd schrieb:
Irgendwie installiert rpm das rpm-Paket nicht. Habe auch alle abhängigen Pakete nachinstalliert. Bei dem rpm-4...rpm Paket wird auch mit --force Option immer abgebrochen. rpm-devel liess sich problemlos intallieren.
Und "irgendwie" kann ich dir bei der "Fehlerbeschreibung" auch nicht weiterhelfen.

Die Originalfehlermeldungen wären da interessant gewesen.
Abhängigkeiten solltest und brauchtest du überhaupt nicht installieren (Option --nodeps) und das *-devel-Paket ist völlig überflüssig.

derBernd schrieb:
Evtl. hat auch die glibc etwas abbekommen.
Eher nicht.
Dann würde bestimmt mehr "kaputt" sein und AFAIK deutet der Fehler glibc detected auf ein Problem mit dem benutzten Programm (also: rpm) hin.

derBernd schrieb:
Habe mir gestern Abend die SuSE 10.2 gesaugt. Versuche es mit einem Update.
Wenn du meinst ... probier es aus.
Ich würde das nicht machen.
zumindest solltest du ein umfangreiches Backup anlegen ... bringt Extraleben!
 
OP
D

derBernd

Newbie
Sorry, habe aber am Wochenende (ohne Internetzugang) das Update gefahren.
Das rpm-4...rpm Paket konnte nicht installiert werden.

Hier kam die Fehlermeldung:
Code:
error: unpacking of archive failed on file 
/usr/lib/rpm/find-provides
cpio: rename failed - is a directory
rpm-4.4.2-76.i586.rpm install failed

Eine komplette Sicherung des alten Systems mit allen Links bzw. Dateirechten ist vorhanden.
Es ist nach wie vor kein einziges rpm-Paket im YaST eingetragen.

Der rpm-Befehl kann nicht ausgeführt werden. Habe folgendermaßen angegeben:
Code:
mount /dev/hda6 /mnt
mount -r /dev/sr0 /mnt/DVD

rpm --nodeps --root /mnt /mnt/DVD/suse/i586/rpm-4.4.2-76.i586.rpm
 
OP
D

derBernd

Newbie
Übrigens:
/usr/lib/rpm/find-provides ist in meiner 10.1 Sicherung tatsächlich ein Shell-Script
Code:
#!/bin/bash

# This script reads filenames from STDIN and outputs any relevant provides
# information that needs to be included in the package.
IFS=$'\n'
filelist=($(cat))
...
und in der 10.2 ein Verzeichnis.
Code:
linux:/usr/lib/rpm/find-provides # ls
Commons.Xml.Relaxng.dll
cscompmgd.dll
gmcs.exe
gmcs.exe.config
I18N.dll
I18N.West.dll
ICSharpCode.SharpZipLib.dll
Microsoft.VisualC.dll
Mono.C5.dll
Mono.Cairo.dll
Mono.CompilerServices.SymbolWriter.dll
Mono.Data.dll
Mono.Data.SqliteClient.dll
Mono.Data.TdsClient.dll
Mono.Data.Tds.dll
Mono.GetOptions.dll
Mono.Http.dll
Mono.Posix.dll
Mono.Security.dll
mscorlib.dll
Novell.Directory.Ldap.dll
System.Configuration.dll
System.Data.dll
System.DirectoryServices.dll
System.dll
System.Drawing.dll
System.EnterpriseServices.dll
System.Runtime.Remoting.dll
System.Runtime.Serialization.Formatters.Soap.dll
System.Security.dll
System.Web.dll
System.Web.Services.dll
System.Xml.dll
wsdl.exe
 
Hervorragend ... :roll:

Wie ist denn jetzt genau der Stand?
10.1 oder 10.2?

Sollte mich aber wundern, wenn das Update funktioniert hätte.
Woher soll YaST schließlich wissen welche Pakete es aktualisieren soll ... ohne RPM-Db - daher auch meine Empfehlung kein Update zu versuchen, da du damit u.U. noch mehr durcheinander bringst.
(aber hier hört ja niemand auf mich *seufz*)

Versuch bitte mal:
Code:
mv /mnt/usr/lib/rpm/find-provides /mnt/usr/lib/rpm/find-provides.bckp
(Voraussetzung: Gleicher Moutpoint, wie beim ersten Versuch)

Anschließend das rpm erneut installieren:
Code:
rpm -Uhv --nodeps --root /mnt /mnt/DVD/suse/i586/rpm-4.4.2-76.i586.rpm
 
OP
D

derBernd

Newbie
Hallo b3ll3roph0n,
Super, das hat geklappt!
Der rpm-Katalog hat sich sogar automatisch beim booten wiederaufgebaut. Alle installierten Pakete sind da!
Schicke Dir eine Message.

...und ich habe noch eine kleine Überraschung für Dich:
Schau doch mal unter www.rotation31.eu unter Shop Renate Wandel.
Dort kannst Du Dir eine kostenlose Kaltnadelradierung Deiner Wahl aussuchen.
 
Oben