educación, informática y demás

Gestión de Software (I). Paquetes, repositorios y listas de paquetes.

Para instalar software en sistemas GNU/Linux y en la mayoría de los Unix-like, tenemos básicamente las siguientes alternativas:

  • Obtener el código fuente de la aplicación y compilarla en nuestro sistema.
  • Descargar el paquete de la aplicación de la web del desarrollador e instalarlo manualmente.
  • Utilizar herramientas de gestión de software.

Aunque es posible realizar una instalación a partir de código fuente, no nos vamos a entrar en detalle en este tipo de instalación de software en este documento. La forma de instalarlo consistiría en descargar el código fuente y utilizar algún tipo de script de instalación disponible, del tipo MAKE INSTALL.

Las opciones más comunes suelen consistir en descargar paquetes de software e instalarlos en nuestro sistema, la mayoría de las veces utilizando aplicaciones que realizan toda la tarea de instalación, actualización o desinstalación de software de forma automática de nuestro sistema.

¿Qué son los paquetes de software?

Una aplicación se empaqueta en un paquete de software que puede ser instalado en cualquier distribución de GNU/Linux que soporte el sistema de paquetes elegido.

Además, junto con el programa en cuestión, en el paquete se añade información sobre el programa y sobre las dependencias que tiene. Las dependencias son los paquetes de software que necesita que estén instalados en el sistema para poder funcionar correctamente.

De esta forma, con un paquete de software se puede determinar que otros paquetes necesita (dependencias) e instalarlos si no están ya instalados en el sistema. Con las dependencias podemos encontrar nuevas dependencias, etc.

La ventaja de esta organización es que el desarrollador tan solo necesita empaquetar su aplicación y determinar que paquetes de software se necesitan para ejecutarla correctamente. Será trabajo del sistema operativo donde se quiera instalar o del usuario, instalar las dependencias automática o manualmente.

Si el usuario tuviera que instalar de forma individual todas las dependencias sería un trabajo demasiado costoso que echaría para atrás a la mayoría de usuarios. Por este motivo, aunque se pueden instalar paquetes manualmente en el sistema, la mayoría de las veces se utilizan aplicaciones que realizan el proceso de búsqueda e instalación de dependencias de forma automática como veremos más adelante

Paquetes Debian .deb

Ubuntu es una distribución que está basada en Debian, por tanto soporta paquetes de tipo .deb. También se puede instalar software partiendo de su código fuente y compilándolo en nuestro sistema, no obstante esta opción no la vamos a estudiar por ahora.

Para poder instalar una aplicación necesitamos obtener el paquete que la contiene. Para ello podemos buscar el paquete de software en Internet o utilizar las herramientas de gestión de software con las que cuenta el sistema.

Repositorios de software y listas de paquetes

Un repositorio de software es un almacén de paquetes de software. Estos repositorios o almacenes pueden ser locales o remotos.

Los repositorios locales son almacenes de paquetes que están disponibles de forma local en el sistema. Por ejemplo, el CD o el DVD de instalación del sistema operativo puede contener multitud de paquetes de software que no se han instalado durante el proceso de instalación y podemos instalar más tarde. Este medio óptico es un repositorio local de software.

En los sistemas GNU/Linux actuales lo más habitual es utilizar repositorios remotos de software. Para ello, el sistema de gestión de paquetes cuenta con una lista de repositorios en las que se incluye información del repositorio y la URL donde se encuentra, para poder contactar con los distintos repositorios.

Durante la instalación del sistema operativo se crea el fichero con una serie de repositorios predeterminados que se pueden modificar, añadiendo nuevos repositorios o borrándolos, más adelante. Esta lista también se conoce como lista de fuentes de software y está almacenada en el fichero /etc/apt/sources.lst.

Otro aspecto importante del sistema de gestión de software es la lista de paquetes. Se trata de una lista con información de todos los paquetes de software disponibles en los repositorios configurados en el sistema. Esta lista la obtiene el sistema pidiendo a cada repositorio de la lista de fuentes de software la lista de paquetes disponibles en una operación de actualización.

En la lista de paquetes se tiene información sobre cada paquete de software disponible, ubicación, versión, detalles, dependencias, etc. Con esa información la aplicación o herramienta de gestión de software puede mostrar al usuario las aplicaciones disponibles y gestionar por completo su instalación, descargando el paquete principal y las dependencias necesarias de los repositorios.