Dependencias de paquetes
100%

Paquetes · Lección 4

Dependencias de paquetes

Aprende cómo los metadatos de paquetes expresan capacidades, versiones, conflictos y relaciones de bibliotecas compartidas necesarias.

Una dependencia de paquete indica que un paquete necesita otro paquete, una capacidad o una versión compatible para instalarse o funcionar. Los gestores de paquetes que conocen los repositorios utilizan estos metadatos para calcular un conjunto coherente de cambios en vez de tratar cada archivo de forma aislada.

Relaciones de dependencia

Los metadatos de un paquete pueden expresar algo más que un simple nombre obligatorio. Según el formato de la distribución, las relaciones pueden incluir:

  • dependencias obligatorias
  • restricciones de versión mínima, máxima o exacta
  • alternativas, en las que cualquiera de varios proveedores satisface un requisito
  • recomendaciones o sugerencias con una semántica menos estricta
  • conflictos, incompatibilidades o sustituciones
  • capacidades virtuales proporcionadas por más de un paquete

Estas reglas permiten que un solucionador elija un conjunto de versiones de paquetes compatible con los repositorios configurados, la arquitectura y el estado instalado. Una solución puede exigir actualizaciones, eliminaciones o elegir entre proveedores, por lo que debes revisar la transacción propuesta antes de aprobarla.

¿Qué intenta producir un solucionador de dependencias que conoce los repositorios?

Bibliotecas compartidas como dependencias

Una biblioteca compartida contiene código compilado que varios programas pueden asignar en memoria durante la ejecución. Compartirlo reduce las implementaciones duplicadas y permite que las distribuciones actualicen una biblioteca común de forma independiente, pero los programas dependen de una interfaz binaria de aplicación, o ABI, compatible.

En los sistemas Linux basados en ELF, un ejecutable puede registrar el nombre de una biblioteca necesaria, como un SONAME. El enlazador dinámico localiza una biblioteca instalada coincidente cuando se inicia el programa. Los metadatos del paquete suelen representar este requisito como una dependencia del paquete o de la capacidad que proporciona la biblioteca compatible.

¿Qué es una biblioteca compartida?

Compatibilidad de versiones y ABI

No basta con que exista un archivo con un nombre de biblioteca similar. Deben coincidir la ABI necesaria, la arquitectura, los símbolos y, en ocasiones, una versión mínima. Sustituir manualmente una biblioteca de la distribución puede inutilizar todos los programas que dependan de ella aunque el nombre del archivo parezca correcto.

Los mantenedores de paquetes codifican las relaciones entre bibliotecas y coordinan las transiciones cuando cambia una ABI. Mantén las bibliotecas nativas bajo el control del gestor de paquetes; para el software que necesite una versión incompatible, utiliza mecanismos compatibles de instalación paralela, contenedores, entornos o compilación.

¿Por qué puede fallar un programa aunque exista un archivo de biblioteca con un nombre parecido?

Estados de dependencias rotas

Un problema de dependencias puede surgir por mezclar repositorios, interrumpir operaciones, instalar archivos manualmente, retener versiones, eliminar archivos o utilizar software de terceros incompatible. No respondas eliminando archivos de la base de datos de paquetes ni forzando una instalación a ciegas.

Primero lee los diagnósticos del gestor de paquetes, actualiza únicamente los metadatos de repositorios de confianza, examina las versiones retenidas o fijadas y revisa la reparación propuesta. Un instalador de paquetes de bajo nivel puede desempaquetar un archivo sin obtener todas sus dependencias; para una instalación habitual, una herramienta de repositorios de alto nivel suele ser más segura porque resuelve la transacción completa.

¿Cuál es una limitación habitual de instalar un paquete local con una herramienta de archivos de bajo nivel?

Lección completada

Has completado Dependencias de paquetes

Ahora puedes explicar cómo funciona la resolución de dependencias de paquetes.

  • Reconoce relaciones obligatorias, alternativas, con versión y conflictivas.

  • Relaciona los paquetes de bibliotecas compartidas con los requisitos de ABI durante la ejecución.

  • Considera los nombres de archivos como una prueba más débil que la compatibilidad de arquitectura e interfaz.

  • Revisa una transacción completa del gestor de paquetes antes de aplicar reparaciones.

Guarda tu progreso

Crea una cuenta gratuita para guardar esta lección y continuar en cualquier dispositivo.

Crear una cuenta gratuita
Siguiente Lección
Volver a Paquetes