Das Aktualisieren von Bibliotheken ist zunächst sehr einfach, wenn man
RPM oder andere Paketverwaltungswerkzeuge benutzt. Diese
überschreiben in der Regel die alten Versionen automatisch.
Manchmal wird ldconfig automatisch gestartet, aber man
sollte es auch hier sicherheitshalber immer per Hand nach dem Aktualisieren
ausführen.
Hier können sich aber einige Schwierigkeiten ergeben,
insbesondere, wenn man häufig benutzte Bibliotheken aktualisiert.
Meistens klappt dies einfach, treten jedoch Probleme auf,
kann eine Reparatur aufwendig werden. Am kritischsten sind
Erneuerungen der libc, da diese von praktisch allen
Kommandos verwendet wird. Ohne diese Bibliothek funktionieren so
elementare Kommandos wie ls oder
cp unter Umständen nicht mehr
(ls ist jedoch meistens ein Shellkommando;
/bin/ls wird zum Beispiel von der Bash nicht
verwendet, weil sie ein eigenes ls hat).
Wenn man wirklich wichtige Systeme aktualisiert, empfiehlt es
sich, einige Vorsichtsmaßnahmen zu ergreifen, die jedoch
schon recht tiefes Systemverständnis erfordern. Zunächst sollte
der gewissenhafte Administrator die Stand-Alone-Shell sash
installiert haben. Diese wird in der Regel statisch gelinkt, dass
heißt, sie funktioniert komplett ohne Bibliotheken. Sash hat den
großen Vorteil, sehr viele Kommandos (in beschränkter Form) fest
eingebaut zu haben. Vor einem Update sollte man die Sash in einem
oder zwei erst mal unbenutzten Fenstern öffnen. Dann macht man
Sicherheitskopien der Dateien, die das Update verändert. Neben
den eigentlichen Bibliotheken sollte man /etc/ld.so.conf
und /etc/ld.so.cache sichern. Geht beim folgenden Update
etwas schief, kann man unter Umständen keine Programme mehr starten,
welche die aktualisierten Bibliotheken verwenden. Dies erkennt man z.B.
daran, dass cp nicht mehr funktioniert.
In diesem Fall darf man nun keinesfalls "sicherheitshalber
erst mal neu starten", wie man es möglicherweise von Windows
gewöhnt ist! Das System würde nämlich auch nach einem Start nicht
funktionieren; es würde überhaupt nicht hochfahren!
Zunächst sollte man (nochmals) ldconfig -v
ausführen (das funktioniert ja immer). Bringt das keine Abhilfe,
kommen die zuvor geöffneten Fenster mit der Stand-Alone-Shell
zum Einsatz.
Da diese beispielsweise cp eingebaut hat, kann
man die Sicherheitskopien wieder aktivieren, obwohl
/bin/cp nicht mehr gestartet werden kann. Da
die Sash möglicherweise nicht ganz intuitiv bedienbar
ist, sollte man vorher etwas mit ihr arbeiten.
Es folgen einige Hinweise zur Verwendung der Sash (falls man vorher
nicht mit ihr gearbeitet hat und man sash gerade
nicht funktioniert): Sash
kennt ein help Kommando. Muss man eingebaute Kommandos
verwenden, zunächst aliasall eingeben.
Erklärungen hierzu finden sich in help und in der Manpage
(die nach dem Zurückkopieren der Sicherheitskopien wieder funktionieren
wird).
Nach dem Wiederherstellen der lib*so* Dateien aus den Kopien
sollte ein Start von ldconfig wieder für ein
funktionierendes System sorgen. Das kann man z.B. durch das Ausprobieren
von Kommandos prüfen (/bin/echo hallo usw.).
Hat man die Bibliotheken erfolgreich aktualisiert und geprüft,
ob das System funktioniert, sollte man bei nächstmöglicher
Gelegenheit das System neu starten. Dies ist notwendig, weil
Bibliotheken ja beim Programmstart geladen werden, und damit
bereits gestartete Programme noch die alten Versionen verwenden.
Ein Neustart ist eine schnelle Methode, alle Programme
neuzustarten. Erfahrene Administratoren wissen, wie sie alle
Programme einzeln auch ohne System-Neustart neu starten, was auf
wirklich wichtigen Systemen die Ausfallzeiten minimiert.
|