Gentoo Logo

Gentoo libxcb 1.4 Upgrade Leitfaden

Inhalt:

1.  Aktualisieren auf libxcb 1.4

Befehlsauflistung 1.1: Aktualisieren der xcb-Pakete

# emerge -1av x11-proto/xcb-proto x11-libs/libxcb
# emerge -1av x11-proto/xproto x11-proto/xextproto x11-libs/libX11 x11-libs/libXext

Sie haben nun alle benötigten Pakete mit Unterstützung für die neue libxcb.

2.  Reparieren der kaputten libtool-Archive

Auch wenn das Update schon vorbei ist und Ihr System immer noch funktioniert, kann das Installieren von neuen Paketen oder Aktualisieren von Paketen einige unerfreuliche Überraschungen mit sich bringen. Dies liegt an libtools berühmt-berüchtigten Archiven: .la Dateien.

Das Problem ist, dass bis vor Kurzem libX11 eine private libxcb-Bibliothek namens libxcb-xlib.so verwendet hat, die speziell für libX11 entwickelt wurde. Auch wenn das selbst kein Problem darstellt, hat diese keine Bibliothek (fast) jede einzelne .la Datei auf Ihrem System verschmutzt. So funktioniert libtool eben.

Aber dies wird nun allmählich zum Problem, da neuere Versionen von libxcb diese Bibliothek nicht mehr beeinhalten (und libX11 wurde natürlich entsprechend angepasst). Wir müssen nun alle Referenzen auf diese Bibliothek in den .la Dateien loswerden.

Um dies zu tun, führen Sie einfach /usr/portage/x11-libs/libxcb/files/xcb-rebuilder.sh aus, um alle .la Dateien auf Ihrem System zu reparieren.

Das Werkzeug teilt Ihnen auch mit, ob Shared-Libraries (.so Dateien, normalerweise unterhalb von /lib und /usr/lib) die nun nicht mehr bestehende Bibliothek referenzieren. Wenn es kaputte Pakete berichtet, lesen Sie bitte weiter. Wenn nicht, haben Sie Glück gehabt und Ihr System ist in einem guten Zustand. :)

3.  Reparieren der "kaputten" Shared-Libraries

Um zu vermeiden, dass die Systeme der Benutzer komplett zerstört werden, haben wir entschieden, die Datei libxcb-xlib.so zu behalten, so dass Sie eine Chance haben, Ihr System nach eigenem Ermessen zu reparieren. Wenn Sie die Anweisungen oben befolgt haben, sollte Ihr System nun korrekt funktionieren -- sowohl beim Bauen von Paketen als auch beim Ausführen.

Aber bevor Sie libxcb-xlib.so entfernen können, müssen Sie einige wenige Pakete neu bauen. Wenn Sie diese nicht neu bauen, wird das Entfernen der alten Bibliothek Ihr System zerstören.

Führen Sie den folgenden Einzeiler aus, um eine einfache, aber effektive, Untermenge von potenziell kaputten Paketen neu zu bauen. Keine Sorge, Pakete, die Sie nicht installiert haben, werden nicht installiert.

Befehlsauflistung 3.1: Neubauen grundlegender Pakete

# emerge --oneshot \
$(for i in x11-proto/ x11-libs/libxcb x11-libs/libX11 x11-libs/libXext \
           x11-libs/libX x11-libs/xcb-util x11-libs/cairo \
           x11-libs/pango x11-libs/gtk\\+ \
           x11-libs/qt-gui; do \
    qlist -IC $i; \
done) -av

Sobald dies erledigt ist, können Sie revdep-rebuild (aus app-portage/gentoolkit) verwenden, um den Rest Ihres Systems zu reparieren.

Befehlsauflistung 3.2: Neubauen der verbleibenden kaputten Pakete

# revdep-rebuild -L libxcb-xlib.so.0

Wenn revdep-rebuild keine weiteren kaputten Pakete mehr auflistet, können Sie libxcb-xlib.so.0 gefahrlos aus Ihrem Bibliothekenverzeichnis löschen.

Befehlsauflistung 3.3: Löschen der jetzt unbenutzen Bibliotheken

# rm -i /usr/lib/libxcb-xlib.so*


Drucken

Seite aktualisiert 12. September 2009

Zusammenfassung: Dieser Leitfaden zeigt, wie man von libxcb 1.1.90.2 und älter auf libxcb 1.4 aktualisiert.

Remi Cardona
Autor

Tobias Heinlein
Übersetzer

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.