[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Paquetes parecidos



On Tue, Aug 11, 1998 at 07:46:44AM +0200, Angel Vicente Perez wrote:

> Bien, pero supongo que llevaran un orden de instalacion. He visto que los
> fuentes de libpng0g, generan paquetes para libc6 y libc5, y libpng2 solo
> para libc6, entonces deduzco que habria que instalar primero libpng0g y
> despues libpng2, sin embargo en libpng2, no he visto ninguna dependencia
> de libpng0g.

Veamos:

$ ldd /usr/X11R6/bin/display
        libMagick.so.4 => /usr/X11R6/lib/libMagick.so.4 (0x40012000)
        libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x40133000)
        libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x401d7000)
	[...]
        libc.so.6 => /lib/libc.so.6 (0x40447000)

Las cosas de la izquierda son el "soname", Shared Object Name. Las cosas de
la derecha son el archivo real. El soname es una convencion, usualmente el
nombre de la biblioteca, so, y un numero. Mira por ejemplo:

        libopcodes-2.9.1.so.0 => libopcodes-2.9.1.so.0.0.0
        libstdc++.so.2.7.2 => libstdc++.so.2.7.2.8
        libnewt.so.0.25 => libnewt.so.0.25
        libssl.so.08 => libssl.so.08.1

Ese numero define la interface de programacion (API -- Application Program
Interface), que entre personas seria algo asi como el "dialecto" (la misma
cosa, pero con algunos detalles distintos).

Digamos que libfoo.so.0 provee:

	int bar (int, int)
	float frob (float, int)

libfoo.so.1 provee:

	float frob (float, float)
	char foo ()

las interfaces de programacion son distintas en el sentido que libfoo.so.1
no tiene la funcion bar, el segundo parametro de frob es ahora un float y no
un int, y hay una funcion nueva foo. Si un programa esta ligado
dinamicamente contra libfoo.so.0, espera encontrar bar entre la lista de
funciones. Si trata de usar libfoo.so.1, no lo va a encontrar y el ld
producira un error. De igual forma con la funcion foo si el programa esta
ligado contra libfoo.so.1 y usa libfoo.so.0. En el caso de la funcion frob
es mas complicado pues la funcion existe en ambas versiones... si tratas (si
logras!) usar libfoo.so.1 en lugar de libfoo.so.0, en el mejor de los casos
no pasara nada, y en el peor te dara un Segmentation Fault.

Asi la respueta es no, libpng0g y libpng2 son dos cosas que aunque se ven
casi iguales son distintas, y en realidad no depende una de la otra.


						Marcelo


Reply to: