Mittwoch, 16. September 2009
Software-Updates und andere Tücken des Alltags
Themen: Computer
Vor einigen Tagen schaffte ich es mal wieder, mir etwas am Rechner kaputtzukonfigurieren. Genauer: ich installierte gerade neuere Versionen einiger Software-Pakete, und dabei muß wohl etwas durcheinandergekommen sein. Auf jeden Fall hatte ich auf einmal eine nicht lauffähige, da unvollständig installierte, Version von libc6 auf dem Rechner.

Das war ziemlich unangenehm. Ohne eine funktionierende libc6 funktionieren nämlich anscheinend weder der Package-Manager noch die üblichen Compiler. Das heißt, ich konnte mir nicht einfach wieder die alte Version von libc6 installieren und sie auch nicht aus den Sourcen neu kompilieren. :-(

Dann fing auch noch das CD-Laufwerk an herumzuzicken, und ich konnte nicht einmal von einer Live-CD booten. Doppel-:-(. (Rückblickend war es natürlich wohl keine so gute Idee, den Rechner, solange er nicht von sich aus abstürzte, in so einer Problemsituation überhaupt herunterzufahren.)

Aber zum Glück habe ich jetzt ja zwei Rechner. Und der andere funktionierte noch. So konnte ich also
  1. ein wenig im Internet recherchieren und
  2. den Inhalt einer meiner Live-CDs auf einen USB-Stick übertragen.
Jetzt habe ich einen bootbaren USB-Stick mit grml. :-)

Außerdem weiß ich jetzt, wie man auf einem debianbasierten System eine Package auch dann installieren kann, wenn (wie in meinem Fall) dpkg nicht funktioniert – ja, sogar auf einem System, das überhaupt nicht mehr booten will! Falls es jemanden interessiert:
  • Wenn der Rechner nicht mehr booten will, boote man mit einer Live-CD oder einer Rettungs-CD (oder USB, was man halt hat; Hauptsache, das, womit man bootet, basiert ebenfalls auf Debian). Dann mounte man das nicht booten wollende System auf /irgendwas und installiere die fragliche Package (nennen wir sie dingsda.deb) im chroot-Installations-Modus:
    # dpkg --root /irgendwas -i dingsda.deb
  • Wenn der Rechner noch bootet (bzw. noch läuft), dpkg aber den Dienst verweigert, besorge man sich die problematische Package (falls man sie nicht sowieso noch herumliegen hat) vom Debian-Mirror seiner Wahl und verfahre wie folgt:
    $ ar x dingsda.deb
    $ su
    # mv data.tar.gz /
    # cd /
    # tar xvzf data.tar.gz
    Die problematische Package wird in den meisten Fällen wohl entweder dpkg oder eine wichtige Library (in meinem Fall: libc6) sein. Das daraus extrahierte Archiv heißt aber anscheinend in jedem Fall „data.tar.gz“.
(Ich vermute mal, wenn der Rechner nicht mehr booten will und man nur nicht-debianbasierte Bootmedien hat (also solche, bei denen kein dpkg dabei ist), kann man die Methoden kombinieren: zuerst das nicht booten wollende System auf /irgendwas mounten, dann data.tar.gz nach /irgendwas verschieben und dort entpacken. Habe ich aber noch nicht ausprobiert.)

Interessanterweise ist diese Methode der Installation von Hand wesentlich einfacher als das Neukompilieren, das mir ja eigentlich als erste Notlösung eingefallen war.