Re: apt hängt beim installieren und deinstallieren. (Kann keine Pakete mehr entpacken?)
Klaus Bitto
klaus.bitto at gmail.com
Fre Aug 17 04:21:46 BST 2007
Hallo, nocheinmal!
Bitte entschuldigt die Menge an Mails an die Liste, aber ich bin auf
wichtiges gestoßen - und vielleicht ist dies ja irgendwann auch für jemand
anderen hilfreich.
Erstmal habe ich mir den Quellcode von dpkg runtergeladen, mich gewundert,
wie denn die ganzen executables kompiliert werden, für die gar kein C-Code
vorhanden zu sein schien, und dann gemerkt, dass die alle in perl
geschrieben sind. (d'oh.) Zum Glück ist perl nicht so schwer zu verstehen.
Also bin ich durch dpkg-preconfigure (dpkg-REconfigure ging übrigens auch
nicht) und die dort eingebundenen perl packages gegangen, jeweils Marken
einfügend, um zu sehen, bis zu welcher Zeile der Code läuft, bevor er hängt:
klaus at hans-desktop:~/Desktop$ sudo dpkg-preconfigure-altered
(1)
(2)
(3)
(4)
Debconf::Db::load (1)
Debconf::Db::load (2)
Debconf::Config::load (1)
Debconf::Config::load (2)
Debconf::Config::load (3)
Debconf::Config::load (4)
Debconf::Config::load (5)
Debconf::Config::load (5.1): while(<DEBCONF_CONFIG>)
Debconf::Config::load (5.2): while(<DEBCONF_CONFIG>)
Debconf::Db::makedriver (1)
Debconf::Db::makedriver (2)
Debconf::Db::makedriver (3)
Debconf::Db::makedriver (4)
Attempting type: File
Debconf::DbDriver::File::init (1)
Debconf::DbDriver::File::init (2)
Debconf::DbDriver::File::init (3)
Debconf::DbDriver::File::init (4)
this->filename: */var/cache/debconf/config.dat*
Hängengeblieben ist das Script also hier:
/usr/share/perl5/Debconf/DbDriver/File.pm:
print "this->filename: *", $this->{filename},"*\n";
if (! open ($this->{_fh}, $this->{filename})) {
print "Debconf::DbDriver::File::init (4.1)\n";
Und /var/cahce/debconf sieht wahrlich grauenhaft aus:
klaus at hans-desktop:/var/cache/debconf$ ls -l
insgesamt 1558706893
p----wSrwT 23125 1465326361 1415074386 555884574 1998-04-07 15:20 config.dat
-rw-r--r-- 1 root root 54107 2007-08-10 22:41
config.dat-old
p--S-wsr-T 29549 993858586 1010523468 709314086 1999-05-11 16:01
passwords.dat
pr---w--wt 10554 556278811 404249464 555819299 1987-01-29 10:17
templates.dat
p----wSr-t 16439 1566513175 1482634813 538778394 2010-07-15 00:42
templates.dat-old
config.dat, passwords.dat, templates.dat und templates.dat-old (also alle
Einträge, außer config.dat-old) sind in brauner Farbe, nicht fett gedruckt,
und schwarz hinterlegt. Das scheint genau dasselbe zu sein, wie bei meiner
statoverride Datei.
Nun werde ich aus der config.dat-old wahrscheinlich eine weitestgehend
funktionierende config.dat wiederherstellen können. Aber was mache ich mit
den templates und passwords? Zerschieße ich mir das System, wenn ich die
nicht irgendwie ersetze? Kann ich darauf hoffen, dass die Dateien von jemand
anderem auch für mich funktionieren würden? Wofür sind die Dateien überhaupt
da?
Und besonders wichtig für mich: Wie kann ich noch weitere derartig
(irreparabel) beschädigte Dateien in meinem System aufspüren?
Es kann kaum ein Zufall sein, dass nun schon 5 Dateien, alle das
Paketmanagement betreffend, auf niedriger Ebene (also nicht nur die Datei,
sondern auch seine Metadaten wie Rechte, Größe, Datum usw.) zerstört sind.
Wie ich bereits am Anfang gesagt habe, hat sich mein System ständig
aufgehängt, seitdem ich nvidia-glx installiert hatte (mit Geforce 4 MX 460),
indem es nicht mehr reagierte und die 3 Tastaturleds blinkten, was nicht
mehr passiert ist, seitdem ich nvidia-glx wieder deinstalliert habe. Bei
einem dieser Abstürze muss das wohl passiert sein. Leider kam das oft genug
vor, dass ich mich nicht mehr an einen speziellen Fall erinnern kann, an dem
ich gerade irgendetwas installiert hätte, als das System stehen blieb.
Ausschließen kann ich es aber nicht.
Postscript: Neues debconf-Verzeichnis angelegt und die einzige heile
Backup-Datei (config.dat-old) aus dem alten debconf rüberkopiert.
Auch wenn die Fragen oben (über die Langzeitfolgen der fehlenden .dat
Dateien) noch immer ausstehen, hat immerhin apt-get schonmal wieder
funktioniert!
Und das sieht jetzt so aus (vielleicht sollte ich die perl-Dateien wieder in
ihren Urzustand zurückversetzen...):
klaus at hans-desktop:~/Desktop$ sudo apt-get install lynx
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut
Reading state information... Fertig
lynx ist schon die neueste Version.
0 aktualisiert, 0 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.
klaus at hans-desktop:~/Desktop$ sudo apt-get remove lynx
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut
Reading state information... Fertig
Die folgenden Pakete werden ENTFERNT:
lynx
0 aktualisiert, 0 neu installiert, 1 zu entfernen und 0 nicht aktualisiert.
Es müssen 0B Archive geholt werden.
Nach dem Auspacken werden 4694kB Plattenplatz freigegeben worden sein.
Möchten Sie fortfahren [J/n]?
Debconf::Db::load (1)
Debconf::Db::load (2)
Debconf::Config::load (1)
Debconf::Config::load (2)
Debconf::Config::load (3)
Debconf::Config::load (4)
Debconf::Config::load (5)
Debconf::Config::load (5.1): while(<DEBCONF_CONFIG>)
Debconf::Config::load (5.2): while(<DEBCONF_CONFIG>)
Debconf::Db::makedriver (1)
Debconf::Db::makedriver (2)
Debconf::Db::makedriver (3)
Debconf::Db::makedriver (4)
Attempting type: File
Debconf::DbDriver::File::init (1)
Debconf::DbDriver::File::init (2)
Debconf::DbDriver::File::init (3)
Debconf::DbDriver::File::init (4)
this->filename: */var/cache/debconf/config.dat*
Debconf::DbDriver::File::init (5)
Debconf::Db::makedriver (5)
Debconf::Config::load (5.3): while(<DEBCONF_CONFIG>)
Debconf::Config::load (5.1): while(<DEBCONF_CONFIG>)
Debconf::Config::load (5.2): while(<DEBCONF_CONFIG>)
Debconf::Db::makedriver (1)
Debconf::Db::makedriver (2)
Debconf::Db::makedriver (3)
Debconf::Db::makedriver (4)
Attempting type: File
Debconf::DbDriver::File::init (1)
Debconf::DbDriver::File::init (2)
Debconf::DbDriver::File::init (3)
Debconf::DbDriver::File::init (4)
this->filename: */var/cache/debconf/passwords.dat*
Debconf::DbDriver::File::init (5)
Debconf::Db::makedriver (5)
Debconf::Config::load (5.3): while(<DEBCONF_CONFIG>)
Debconf::Config::load (5.1): while(<DEBCONF_CONFIG>)
Debconf::Config::load (5.2): while(<DEBCONF_CONFIG>)
Debconf::Db::makedriver (1)
Debconf::Db::makedriver (2)
Debconf::Db::makedriver (3)
Debconf::Db::makedriver (4)
Attempting type: Stack
Debconf::Db::makedriver (5)
Debconf::Config::load (5.3): while(<DEBCONF_CONFIG>)
Debconf::Config::load (5.1): while(<DEBCONF_CONFIG>)
Debconf::Config::load (5.2): while(<DEBCONF_CONFIG>)
Debconf::Db::makedriver (1)
Debconf::Db::makedriver (2)
Debconf::Db::makedriver (3)
Debconf::Db::makedriver (4)
Attempting type: File
Debconf::DbDriver::File::init (1)
Debconf::DbDriver::File::init (2)
Debconf::DbDriver::File::init (3)
Debconf::DbDriver::File::init (4)
this->filename: */var/cache/debconf/templates.dat*
Debconf::DbDriver::File::init (5)
Debconf::Db::makedriver (5)
Debconf::Config::load (5.3): while(<DEBCONF_CONFIG>)
Debconf::Config::load (5.1): while(<DEBCONF_CONFIG>)
Debconf::Config::load (5.2): while(<DEBCONF_CONFIG>)
Debconf::Config::load (6)
Debconf::Db::load (3)
(Lese Datenbank ... 122771 Dateien und Verzeichnisse sind derzeit
installiert.)
Entferne lynx ...
klaus at hans-desktop:~/Desktop$
^^
Eine neue, leere passwords.dat und templates.dat wurden dabei angelegt. Was
für wichtige Informationen ich dabei nun verloren habe, bleibt abzusehen. :/
Grüße,
der glückliche Klaus
-------------- nächster Teil --------------
Ein Dateianhang mit HTML-Daten wurde abgetrennt...
URL: https://lists.ubuntu.com/archives/ubuntu-de/attachments/20070817/8be81d20/attachment.htm