Gestión de paquetes
Contenido
Información general
Un sistema de gestión de paquetes es una colección de herramientas que proporciona un método para la instalación, actualización y eliminación de software en su sistema operativo. Las distribuciones de GNU/Linux, incluyendo openSUSE, por lo general consisten de miles de paquetes de software distintos.
El software se distribuye por medio de paquetes a los que están vinculados metadatos que contienen información suplementaria, como la descripción de la finalidad del software y una lista de dependencias necesarias para que el software funcione correctamente. Esos paquetes se proporcionan mediante los repositorios, ya sea mediante medios de almacenamiento local (CD, DVD o disco duro) o bien desde repositorios en Internet. Tras la instalación, los metadatos se almacenan en una base de datos local de paquetes que se utiliza para recuperar los paquetes del software.
Libzypp es la implementación de openSUSE de un sistema de gestión de paquetes y se puede manejar de manera gráfica mediante YaST, y mediante Zypper en el terminal de comandos.
Paquetes
Los paquetes son una colección de ficheros que incluyen todos los archivos necesarios para componer un software (como una aplicación en sí, librerías compartidas, los paquetes de desarrollo que contienen los archivos necesarios para construir software, bibliotecas de utilidades, ...) y, finalmente, instrucciones sobre la manera de hacer que esos archivos funcionen.
Un paquete se integra adecuadamente en la distribución para la que ha sido construido en lo que respecta a las rutas de instalación, las dependencias que requiere, la integración en el escritorio que utilice, etc. Por esta razón, siempre se deben instalar los paquetes que se han construido para la distribución que esté utilizando, incluyendo la versión exacta de la distribución (por ejemplo, openSUSE Leap 15.3). A modo de ejemplo, no instales paquetes de Fedora en openSUSE, y ni siquiera lo hagas con paquetes propios de openSUSE 15.1 en openSUSE 15.3.
Paquetes de metadatos
Estos paquetes contienen información adicional, comúnmente conocida como metadatos, tales como:
- un resumen del propósito general del software,
- una descripción,
- una lista de archivos contenidos en el paquete,
- la versión del software que contiene, así como el número de versión del paquete,
- cuándo, dónde y por quién ha sido construido,
- la arquitectura para la que ha sido construido,
- comprobación de los ficheros contenidos en el paquete (suma de verificación),
- la licencia del software que contiene,
- qué otros paquetes necesita para funcionar correctamente (dependencias),
- etc.
Paquete de dependencias
Un aspecto importante del archivado de los paquetes son las interacciones que contienen. Efectivamente, los paquetes también se relacionan con los archivos de otros paquetes, las aplicaciones empaquetadas necesitan un entorno de ejecución (otras herramientas, bibliotecas, etc) para ejecutar correctamente la aplicación principal. Los paquetes de dependencias se utilizan para expresar estas relaciones.
Por ejemplo: el paquete de software A necesita que también se instalen los paquetes B y C para que funcione correctamente
- Los paquetes de dependencias son transitivos, lo que significa que cuando un paquete A necesita el paquete B, y el paquete B necesita el paquete C, significa que el paquete A también necesita el paquete C, por lo que a veces se termina instalando un montón de paquetes extras a pesar de que simplemente quería una sola aplicación.
- Las bibliotecas de dependencias (por lo general los paquetes con un nombre que comienza con "lib") son muy comunes y casi cada aplicación depende de un conjunto de paquetes de bibliotecas.
Los paquetes de software y los paquetes de dependencias son aspectos muy importantes de las distribuciones de GNU/Linux (así como otros sistemas BSD y UNIX), ya que proporcionan una forma modular para configurar y administrar un sistema operativo y sus aplicaciones. Esto se puede aplicar de manera especial a los paquetes de biblioteca. A modo de ejemplo, el paquete openssl contiene librerías criptográficas que son utilizadas por muchas aplicaciones y otras bibliotecas (por ejemplo, para el cifrado SSL). Cuando una nueva versión mejorada de openssl está disponible, todas las aplicaciones que lo utilizan se beneficiarán de ella sólo por la actualización del paquete a la nueva versión.
También es un medio muy eficaz para mantener un sistema estable y seguro: cuando un agujero de seguridad, exploit o fallo afecta a una biblioteca utilizada por una o varias aplicaciones, actualizar unicamente el paquete de la librería afectada a una versión en la que ese fallo está solucionado va a permitir reparar el error en todos ellos.
Formato de los paquetes
En el mundo de las distribuciones de GNU/Linux, el software nativo viene empaquetado esencialmente en tres tipos diferentes de formatos de paquetes:
- tgz (archivos tar gzip): que básicamente son archivos con el código fuente. Pueden tener todo lo que el responsable del paquete considera útil. Además del formato de archivo propio, necesario para extraer los archivos, no hay nada estándar sobre el contenido de un archivo tgz. Tienen que ser compilados para poder ejecutar el software.
- rpm: (RPM Package Manager) que son archivos pre-compilados. Creados por Red Hat Linux y estandarizado por el LSB, se utiliza en la actualidad por muchas distribuciones de Linux como sistema de empaquetado de su software, incluyendo openSUSE.
- deb: (Debian) Son archivos precompilados utilizados por Debian u otros de los sistemas derivados de este (Ubuntu, Mint, etc)
Sin embargo, si se requiere instalar unas dependencias, al final el gestor notifica al usuario que se deben satisfacer estas y le da la opción de decidir qué hacer.
Por ejemplo, si desea instalar un paquete RPM A que tiene dependencias del paquete RPM B, el gestor no instalará automáticamente el paquete B, sólo informará al usuario que necesita este paquete y se detendrá esperando una decisión. Todo depende de que el usuario instale el paquete B y después A. Ahora imagina que el paquete B tiene dependencias en el paquete C y D y el paquete D a su vez del paquete E y así sucesivamente. Se termina persiguiendo a las dependencias de paquetes de forma manual por todas las ramas de un árbol muy grande.
Gestor de paquetes
En las modernas distribuciones de GNU/Linux como openSUSE, la instalación del software se hace con un gestor de paquetes. El gestor de paquetes, que trabaja por encima de RPM, consigue los paquetes de software desde los repositorios (servidores en internet o red, CD, DVD, etc), resuelve las dependencias e instala en su sistema el software deseado. El gestor de paquetes también hace más fácil la tarea de eliminar los paquetes desactualizados y el ponerlos al día. El número de paquetes de software disponibles para su instalación depende de los repositorios que ha agregado.
YaST es el potente gestor gráfico de paquetes desarrollado por openSUSE. Y para realizar la misma tarea pero desde la línea de comandos se utiliza Zypper. Ambos ofrecen una gran variedad de herramientas para la gestión del software.
Repositorios de paquetes
Antes de que los paquetes puedan ser instalados, deben estar disponibles en un repositorio, ya sea mediante medios físicos como CD o DVD o en línea a través de Internet.
Los repositorios de software de openSUSE incluyen:
- Repositorios oficiales de paquetes que incluyen paquetes bien probados y con soporte y actualizaciones.
- Repositorios comunitarios construidos y mantenidos por la Comunidad de openSUSE en el OpenBuild Service.
- Repositorios de terceros, tales como repositorios Packman y Google. Ofrecen diferentes paquetes adicionales que no se pueden incluir entre los oficiales de openSUSE por razones legales, o que se encuentran en desarrollo y no han sido totalmente depurados, y que están sujetos al tipo de licencia elegido por sus responsables.