Hallo Rocco,
On Thu, Aug 15, 2002 at 05:07:57PM +0200, Rocco Rutte wrote:
Hi,
- Torsten Werner [02-08-13 15:43:57 +0200] wrote:
Am Dienstag, dem 13. August 2002 um 13:06:32, schrieb Rocco Rutte:
Ich habe halt einfach mal den Cache und die Liste installierter Pakete geloescht, um zu testen, ob und wenn ja wie er damit klarkommt.
Wie Du jetzt hoffentlich gemerkt hast, kommt er nicht damit zurecht, dass die Statusdatenbank (/var/lib/dpkg/status) nicht mehr da ist. Der Cache (/var/cache/*) war wahrscheinlich unkritisch (das heisst Cache, weil die Information eben wiederbeschaffbar ist).
Ich h?tte an deiner Stelle den Test mit dem / Verzeichnis gemacht, dann h?ttest du die Antwort auch selbst herausgefunden. ;-)
Anderes Beispiel:
dd if=/dev/zero of=/dev/hda bs=512 count=1
und Du erwartest, dass er noch booten kann und die Partitionen wiederfindet? (Mal angenommen, eine IDE-Festplatte ist das Bootmedium) Ja, man kann die Partitionstabelle rekonstruieren (habe ich schon mal gemacht); ja, man kann maschinelle Unterstuetzung nutzen; nein, die Erkennung von Partitionsgrenzen anhand typischer Strukturen in den Filesystemen ist nicht 100%ig sicher und deshalb muss ein Mensch noch ein paar Informationen aus dem Gedaechtnis einfliessen lassen - oder ein _Backup_ des Bootsektors.
Backup, ich weiss. Von einem brauchbaren Paket-Management erwarte ich aber, dass es mit solchen Situationen klarkommt. Ausserdem beisst sich in dieser Situation die Katze irgendwie in den Schwanz, was man IMHO fixen sollte. Das
Tut sie nicht. In /var/lib/dpkg hat niemand etwas zu suchen, der nicht weiss was er tut. Wer dort Dateien aendert, muss eben damit rechnen, dass die Paketverwaltung aus dem Tritt kommt und bestenfalls manuell wieder halbwegs auf den richtigen Weg gebracht werden kann.
Problem ist, dass er bei wichtigen Sachen (also libc, dpkg & co.) nur auf den Cache installierter Pakete schielt und nicht im geringsten prueft, was alles da ist (z.B. gibt es ein debconf-Binary, er meckert aber, dass debconf nicht installiert ist). Dieses Verhalten mag zwar Vorteile haben, aber auf den Cache _und_ installierte Binaries zu gucken, halte ich fuer intelligenter.
Woher nimmst Du die Sicherheit, dass ein Binary namens foo im Paket 'foo' enthalten ist oder das Paket 'bar' ein Binary namens /usr/bin/bar mitbringt?
In der Paketdatenbank stehen uebrigens noch mehr Informationen als welche Pakete installiert sind. Die Abhaengigkeiten zwischen einzelnen Paketen sind fast nie aus den Binaries erkennbar, Shared Libraries sind da eine Ausnahme.
Uebrigens, falls Du noch /var/lib/dpkg/info hast, stehen dort noch Dateien rum, die ziemlich sicher ueber den Namen den Paketen zuzuordnen sind. Ob allerdings diese Dateien bei 'dpkg --remove' mit geloescht werden, kann ich nicht sagen.
Also, wenn ein System wirklich wichtig ist, machst Du _vor_ Aktionen mit unklaren Folgen ein Backup, OK?
Petri Heil
Holger