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