SelfLinux Programmierung Bibliotheken Abschnitt 4 | SelfLinux-0.13.0

| Bibliotheken | Autor Formatierung GFDL

#### 6 Verwalten von Bibliotheken

Ein Administrator hat mit Bibliotheken üblicherweise recht wenig Arbeit. Wird ein neues Verzeichnis mit Bibliotheken eingerichtet, beispielsweise /usr/local/lib, so muss es in die Datei /etc/ld.so.conf eingetragen werden. Anschließend ist natürlich das Starten von ldconfig erforderlich.

#### 6.1 Installieren von Bibliotheken

Meistens installiert man Bibliotheken über RPMs oder andere Pakete. Diese Pakete führen manchmal ldconfig automatisch aus, jedoch sollte man nach dem Installieren sicherheitshalber immer ldconfig ausführen.

#### 6.2 Aktualisieren von Bibliotheken

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.