Gestión de Librerías
Conceptos Claves
- Identificar bibliotecas compartidas.
- Identificar los lugares típicos de las bibliotecas del sistema.
- Cargar bibliotecas compartidas.
Términos y utilidades
- ldd
- ldconfig
- /etc/ld.so.conf
- LD_LIBRARY_PATH
Introducción
Tradicionalmente, los modelos de desarrollo de software hacen uso de la reutilización de código. Es razonable que si un programa realiza una tarea, uno utilice ese programa en lugar de desarrollar uno nuevo. Teniendo en cuanta este concepto de reutilización se introduce el concepto de librerías. Estas representan pequeños programas o pedazos de programas.
Tipo de Librerías
Un programa puede hacer uso de librerías de manera dinámica o estática.
Librerías Estáticas: Las librerías forman parte de los archivo principales del programa. Esto trae la desventaja que el tamaño de los programas será mayor y el programa consumirá mas memoria una vez que entre en ejecución.
Librerías Dinámicas: Se referencia a la librería de manera independiente a los archivos principales del programa. Estas librerías pueden ser compartidas por varios programas y pueden o no ya estar instaladas en el sistema:
La desventaja de utilizar librerías dinámicas es que pueden provocar problemas de incompatibilidad.
Gestión de Librerías Compartidas
El uso de librerías compartidas o dinámicas introduce ciertas desafíos, como la localización de las librerías y mantener la compatibilidad entre versiones.
El mayor desafío administrativo de gestionar las librerías es permitir que los programas puedan localizar estas librerías. Los programas pueden apuntar a estas librerías por su nombre o por su ruta completa. En el primer caso se debe configurar una ruta de librerías, lo cual se puede realizar mediante un archivo global de configuración o a través de una variable de entorno.
Configurando la ruta global a librerías
La primer formar de fijar la ruta de las librerías es mediante el archivo /etc/ld.so.conf . Este archivo consiste en una serie del líneas, cada una de las cuales lista un directorio en el cual se pueden encontrar archivos de librería. Típicamente este archivo contiene entre 6 y 24 directorios. Cada línea que comienza con la palabra include referencia otro directorio que agrega archivos de configuración al principal.
Si se hacen cambios en la ruta de librerías, se debe ejecutar el comando ldconfig posteriormente. Vale aclarar que los directorios /lib u /usr/lib, siempre están en la ruta a las librerías, por mas que no figuren en el /etc/ld.so.conf.
Cambiar temporalmente la ruta a librerías
En el caso de que se requiere agregar temporariamente directorios a la ruta de librerías, se puede utilizar la variable de entorno LD_LIBRARY_PATH
Ej:
export LD_LIBRARY_PATH=/usr/local/testlib:/opt/nuevalibreria
Mediante esta línea, se agregan 2 nuevos directorios a las rutas. Estos directorios agregados toman precedencia por sobre los demás, ya que se agregan al principio de las búsquedas. No es necesario ejecutar el ldconfig luego de realizar cambios por esta vía.
Comandos para Gestionar Librerías
El comando ldd nos muestra las librerías de las cuales depende un programa y el programa ldconfig guarda un cache de las rutas a las librerías.