2.7.- Administrar las bibliotecas compartidas.

profesor-tuxLa mayoría del software de Linux se basa, en gran medida, en las bibliotecas compartidas. Las secciones anteriores han descrito algunos de los problemas que pueden surgir al administrar paquetes de bibliotecas compartidas (por ejemplo, si una biblioteca no está instalada o la versión no es la correcta, puede que surjan problemas al instala el paquete), aunque la administración de bibliotecas va más allá que su simple configuración. Para comprender esto, primero debe conocer algunos de sus fundamentos. después podrá pasar a configurar la ruta de las bibliotecas y utilizar comandos para administrarlas.

Principios de las bibliotecas

La idea que hay detrás de una biblioteca es simplificar la vida de los programas ofreciéndoles fragmentos de los programas utilizados con más frecuencia. Por ejemplo, una de las más importantes es la biblioteca C (libc), que proporciona funcionalidades de alto nivel asociadas al lenguaje de programación C. Otro tipo habitual de biblioteca está asociada con las GUI. Con frecuencia, a estas bibliotecas se les llama conjunto de widgets, pues proporciona los widgets de pantalla que utilizan los programas: botones, barras de desplazamiento, barras de menú, etc. Los conjuntos de widgets más populares de Linux son el kit de herramientas de GIMP (GTK+) y Qt y ambos vienen en su mayor parte como bibliotecas. Las bibliotecas las escogen los programadores, no los usuarios; generalmente, no puede sustituir una por otra (la principal excepción son las actualizaciones de versiones menores).

NOTA: Linux utiliza la versión GNU C library (glibc) de la biblioteca C. Las dependencias del administrador del paquetes y otras referencias de la biblioteca son específicas de glibc. A partir de glibc 2.3.4, por razones históricas al fichero principal de glibc, se le suele denominar /lib/libc.so.6, pero este fichero es, a veces, un enlace simbólico a uno con otro nombre, como /lib/libc-2.3.4.so.

a
En principio, las rutinas de una biblioteca se pueden vincular al fichero principal de un programa, al igual que todos los ficheros de código de objetos creados por el compilador. Pero este método presenta algunos problemas:

  • El fichero de programa resultante es enorme. Esto significa que necesita mucho espacio en disco y consume mucha RAM cuando se inicia.
  • Si varios programas utilizan la biblioteca, como es habitual,  el problema del tamaño del programa se multiplica.
  • El programa no puede sacar partido de las mejoras de la biblioteca sin recompilar (o, al menos, volver a vincular) el programa.

Por estos motivos, la mayoría de los programas utilizan sus bibliotecas como bibliotecas compartidas (también conocidas como bibliotecas dinámicas). De esta forma, el programa ejecutable principal omite la mayoría de las rutinas de bibliotecas. en lugar de ello, el ejecutable incluye referencias a ficheros de biblioteca compartida, que se puede cargar después junto con el fichero de programa principal. Éste método contribuye a mantener un tamaño reducido del fichero del programa, permite compartir la memoria consumida por la biblioteca  entre los programas y posibilita que los programas saquen partido de las mejoras en las bibliotecas actualizando éstas.

NOTA: Las bibliotecas compartidas de Linux son similares a las bibliotecas de vínculos dinámicos (DLL) de Windows, que se suelen identificar por las extensiones .DLL de los nombres de ficheros pero, en Linux, las bibliotecas compartidas suelen tener una extensión .so o .so.versión, donde versión es un número de versión (.so viene de shared object, objeto compartido). Los nombres de ficheros de las bibliotecas estáticas de Linux (utilizadas por los enlazadores para su inclusión en programas cuando no se van a utilizar biblioteca dinámicas) tienen extensiones .a.

a
El inconveniente de las bibliotecas compartidas es que suelen repercutir un poco en el tiempo de carga del programa si la biblioteca no la utiliza ya ningún programa y pueden crear complicaciones en la administración del software:

  • Los cambios de las bibliotecas compartidas pueden ser incompatibles con algunos o todos los programas que utilizan la biblioteca. Linux utiliza esquemas de numeración para que puedan mantener instaladas a la vez varias versiones de una biblioteca. Las actualizaciones que no deberían causar problemas pueden sobre escribir las versiones antiguas, mientras que las actualizaciones principales se instalan al lado de sus equivalentes anteriores. Este método minimiza la aparición de problemas pero, a veces, los cambios que no deberían generar problemas si lo hacen.
  • Los programas deben poder localizar las bibliotecas compartidas. Esta tarea requiera ajustar los ficheros de configuración y las variables de entorno. Si esto se hace mal o si un programa sobre escribe los valores por defecto y busca en el sitio equivocado, el resultado suele ser que el programa no se ejecutará en modo alguno.
  • El número de bibliotecas para Linux a crecido espectacularmente con el tiempo. Cuando se utilizan de manera compartida, el resultado puede ser una maraña de dependencias de paquetes, en particular si emplea programas que se basan en muchas bibliotecas desconocidas. En la mayoría de los casos, este programa se reduce a uno de paquetes que puede tratarse con sus herramientas de administración de paquetes.
  • Si una importante biblioteca compartida se vuelve inaccesible porque se ha sobre escrito accidentalmente, debido a un error de disco o por cualquier otra razón, esto puede derivar en serios problemas del sistema. En el peor de los casos, puede que el sistema ni siquiera se inicie.

En la mayoría de los casos, estos inconvenientes son controlables y mucho menos importantes que los problemas asociados al uso de las bibliotecas estáticas. Por eso, las bibliotecas dinámicas son tan populares.

NOTA: Las bibliotecas estáticas son utilizadas, a veces, por desarrolladores que crean programas que emplean bibliotecas particularmente extrañas, antiguas o singulares. Esto les permite distribuir sus paquetes binarios sin pedirles a los usuarios que consigan que instalen sus bibliotecas extrañas. Asimismo, las bibliotecas estáticas se utilizan, a veces, en pequeños sistemas de emergencia que no tienen instalados los programas suficientes para sacarle partido a las bibliotecas compartidas que valen la pena.


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s