Michael Bischof <[EMAIL PROTECTED]> writes:

> In /lib liegt eine libc.so.6@, ohne eine Versionsnummer.
> Aber genau darauf bestand die Abiword-rpm. Es sollte
> immer GLIBC_2.3.1 sein - und nichts sonst.

Falsch.  Der Dateiname hat nichts mit den Symbolnamen zu tun.

> Dann habe ich noch:
> /usr/lib/libc.so: ASCII C program text  
> /lib/i686/libc.so.6: symbolic link to libc-2.2.5.so
> /lib/lsb/libc.so.6: symbolic link to libc-2.2.90.so

Aha.  Du hast also eine libc-2.2.5 bzw. 2.2.90 installiert.  Diese
Versionen sind �lter als 2.3.1

> Was ich jetzt langsam ahne: das ganze Problem scheint mit "shared 
> libraries" zusammenzuh�ngen. Ich wei� ja auch nicht warum eine rpm
> oder src.rpm auf einer ganz bestimmten Version besteht ? Vielleicht
> nur deshalb weil im spec-File diese angegeben ist ? 

F�r das Kompilieren, ja.  F�r die Laufzeit steht das im Binary
direkt.  Das macht der Linker (ld) automatisch f�r Dich.  Bei einem
Programm auf Deinem Rechner kannst Du dir das mit ldd ansehen:

[15:25:00]:gswi1164:(vc/2):~$ ldd /bin/ls /usr/bin/elinks
/bin/ls:
        librt.so.1 => /lib/librt.so.1 (0x4001d000)
        libc.so.6 => /lib/libc.so.6 (0x4002f000)
        libpthread.so.0 => /lib/libpthread.so.0 (0x40142000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

Bei einer neueren libc, also z.B. 2.3.1, hei�t der Link immer noch
libc.so.6.  Nun kommt es bei der Entwicklung vor, dass eine Funktion
sich �ndert, und zwar so, dass sie nicht mehr kompatibel zu anderen
Programmen ist.  Fr�her musste man dann die Major-Version der
Bibliothek �ndern, und damit den soname (also der Link-Name - nicht
ganz korrekt, aber hier ausreichend).  Das w�rde zu einer Inflation
von Bibliotheken f�hren, denn jedes Programm braucht dann die passende
libc[1]. 

Wie kann man es nun erreichen, dass alte Programme weiter
funktionieren, aber neue die neue Funktion verwenden?  Der Trick ist
nicht allzu kompliziert.  Sei "blubber()" die Funktion, die sich
�ndert.  Ein altes Programm verwendet den Namen, wie es ihn immer
kannte.  Neue Programme werden per "Trick" dazu gebracht
"[EMAIL PROTECTED]" zu verwenden.  Dieses Symbol ist aber in den
alten Versionen nicht bekannt.

Damit hast Du zwei Abhilfen:

- eine neue libc verwenden (mit allen Problemen, die das haben kann)
- das Programm selber kompilieren.

> Wenn ja: kann man 
> dann einfach die eigene Version da hineinschreiben ? Und dann das 
> Ganze mit
> rpm -bb paketname
> neu zusammenstellen lassen ? 

Bei Red Hat kann ich es nicht mehr sagen.  Dein Problem sollte aber
mit einem Rebuild erledigt sein - rpm macht das schon richtig.

> Vielleicht der Preis f�r die 
> Modularit�t und Gestaltungsfreiheit ? 

Ja, ist es.  Du k�nntest ja warten, bis der Distributor das Paket f�r
Deine Version zur Verf�gung stellt.

Jochen

[1] Unter Linux gab es bisher folgende libc-Versionen:
- glibc2 (aka libc6), das ist die aktuelle Version
- libc5 die ELF-Bibliothek.  Basierte fr�her mal auf glibc1, war aber
  heftig ge�ndert.
- libc4, das war im a.out-Format, das eher unhandlich war.
- diverse mittels Datum als soname markierte Testversionen

-- 
#include <~/.signature>: permission denied
----------------------------------------------------------------------------
PUG - Penguin User Group Wiesbaden - http://www.pug.org

Antwort per Email an