# Verzweifle an libexpat

## Vortex375

Hallo, kann mir einer einen schnellen Tipp geben, wie ich aus dieser Zwickmühle rauskomme?

Ich hab dieses berüchtigte libexpat-Update gemacht (wer ist eigentlich für diese Katastrophe verantwortlich?). Danach ging natürlich erst mal gar nichts mehr.

Also dachte ich: jetzt machste mal gtk neu drauf, vielleicht gehen dann ja die gtk-Programme wieder. Wollte also gtk+ neu mergen. Ging aber nicht: Beim emergen sagt er, dass er pango nicht linken kann, ich muss zuerst pango installieren. Also will ich pango neu installieren: geht aber nicht, weil er während des Kompilierens sagt, dass er libexpat.so.0 nicht finden kann...

Toll, wie soll ich die Anwendungen, die libexpat.so.0 benötigen gegen die neue libexpat kompilieren, wenn sie die alte zur compile-time brauchen?

Dann hab ich folgendes probiert: Ich hab wieder das alte expat installiert, dann die libexpat.so.0 gesichert. Anschließend hab ich wieder Update auf das neue expat gemacht und die libexpat.so.0 nach /usr/lib64 zurückkopiert. Dann hab ich nochmal pango und gtk+ neu gemerged.

Am Ergebnis zeigt sich, dass diese Strategie wohl ein Griff ins Klo war:

```

# ldd /usr/lib64/libgtk-x11-2.0.so | grep -i expat

        libexpat.so.0 => /usr/lib/libexpat.so.0 (0x00002ab9e87ad000)

        libexpat.so.1 => /usr/lib/libexpat.so.1 (0x00002ab9e89d3000)

```

Jetzt ist gtk gegen beide gelinkt.  :Shocked: 

Langsam hab ich echt kein Bock mehr. Da läuft mein Rechner nächtelang wegen irgendwelchen revdep-rebuild-Orgien und verbraucht sinnlos Strom, nur weil sich mein Gentoo mal wieder beim Update selbst zerschossen hat. Leute so kann man doch keine Distribution gestalten. Das mit dem Kompilieren ist ja in Ordnung, aber ich erwarte wenigstens, dass ich nicht nach jedem Update immer das komplette System neu machen muss.  :Evil or Very Mad: 

Wer kann mir zeigen, wie ich mit dem aktuellen Problem fertig werde?

----------

## Max Steel

revdep-rebuild -X

und wenn das nichts hilft, ein HÄSSLICHER Workaround, indem du einen SymLink mit namen libexpat.so.0 auf libexpat.so.1.5.2 legst.

----------

## Vortex375

Hallo Max Steel.

Also revdep-rebuild hilft mir auch nicht wirklich weiter, weil wie gesagt einige Pakete anscheinend die alte libexpat zum Übersetzen brauchen.

Ein Symlink bringt doch wahrscheinlich nicht viel, da sich ja das ABI geändert hat und somit die Programme, die gegen die alte libexpat gelinkt sind nicht mehr funktionieren würden, oder?

Naja mit meinem tollen "Trick", die alte libexpat.so.0 zu sichern und dann wieder zurückzukopieren funktionierts ja auch vorübergehend. Nur werden jetzt alle neu gemergten Programme offenbar gegen beide gelinkt, was natürlich ein riesen Bockmist ist...  :Sad: 

EDIT: Kann es auch sein, dass eine Abhängigkeit von gtk+ noch gegen die alte libexpat.so.0 gelinkt ist und mir ldd deshalb beide anzeigt?

----------

## Max Steel

Hmm, also bei meinem Vater funktionierts, und sein System ist ein paar Monate in einer alten Version gewesen, die neue hater erst seit vorgestern.

----------

## jkoerner

expat deinstallieren und neu installieren war bei meinem System der Trick, allerdings mit paludis und nicht mit portage. Aber das sollte keinen Unterschied machen.

 *Quote:*   

> Bei mir hat nur geholfen, expat zu deinstallieren und dann neu zu intallieren, dann wieder revdep-rebuild.

  Aus  diesem Beitrag

Und  hier  geht es noch weiter. Ich denke, daß dort auch dein Problem beschrieben und gelöst wurde.

----------

## HPRichard

Das Problem, dass man manche Pakete nicht auf die neue expat übersetzen kann, liegt nicht an diesesn Paketen selbst, sondern an einem anderen Paket.

Auf dem System liegen Bibliotheken (.so-Dateien), die noch gegen die libexpat.so.0 gelinkt sind. Wenn nun ein Programm installiert werden soll, dass gegen solch eine Bibliothek linken soll, schlägt das linken bei der Installation fehl, weil der Linker nicht alle Bibliotheken finden kann (eben die libexpat.so.0). In der Fehlermeldung (die erste Fehlermeldung bei dem Übersetzungsvorgang, nicht die weitern Meldungen von Portage, wie immer) ist dann beschrieben, welche Bibliothek noch gegen die libexpat.so.0 linkt. Dann mittels

```
equery belongs <Datei>
```

herausfinden, zu welchem Paket diese Datei gehört, (gentoolkit muss dafür installiert sein) und dann versuchen, zuerst dieses Paket neu zu kompilieren. Auf meinem System war der "Übeltäter"

```
media-libs/fontconfig
```

----------

## Vortex375

Das war schonmal ein guter Anfang (Tipp aus einem der verlinkten Threads):

```
emerge -1 XML-Parser gettext fontconfig pango gtk+
```

Damit funktionieren jetzt alle gtk-Anwendungen wieder. Nach einem remerge von qt3 und qt4 gingen auch diese Anwendungen wieder.

Nur kde-Programme streiken noch, wenn ich die libexpat.so.0 entferne. Irgendeine kde-Bibliothek muss ich wohl noch neu übersetzen.

----------

## Max Steel

kdelibs?

----------

## Vortex375

Hmm nee, kdelibs hat leider nicht gereicht. Ich hab nun halt revdep-rebuild seine 50+ Pakete neu installieren lassen und nun geht wieder alles.  :Very Happy: 

----------

## Mgiese

 *Vortex375 wrote:*   

> Das war schonmal ein guter Anfang (Tipp aus einem der verlinkten Threads):
> 
> ```
> emerge -1 XML-Parser gettext fontconfig pango gtk+
> ```
> ...

 

danke, konnte mein neues system so ueberreden pango zu installieren  :Wink: 

----------

## -Ben-

ja, das funktioniert nach dem dev-rebuild scho wieder alles, wenn man die entsprechenden programme dann auch wieder neu compiliert (kde)... dauert dann halt ne ganze weile.. hat mich auch aufgeregt, dieser ganze schlamassel...

----------

