Recientemente aprendí que las distribuciones basadas en Debian esencialmente tienen una colección fija de dependencias y bibliotecas comunitarias que cualquier aplicación instalada a través de un administrador de paquetes debe usar.
Compare esto con, por ejemplo, Windows, donde creo que cada aplicación normalmente proporciona sus propias dependencias y, por lo tanto, una instalación del sistema operativo Windows tendrá instancias de las mismas dependencias/bibliotecas instaladas muchas veces y cada aplicación necesitará administrar la actualización de estas dependencias en su propio.
Sé que algunos desarrolladores desarrollan su software para que sea compatible con el administrador de paquetes APT, pero imagino que debe haber muchas aplicaciones en las que los desarrolladores han creado el software al estilo "Windows".
Entonces mi pregunta es, si los desarrolladores originales crearon su software con la intención de distribuir una gran instalación monolítica completa con dependencias empaquetadas, ¿los mantenedores del paquete APT necesitan reescribir la fuente para que el software use la colección comunitaria de dependencias en lugar de la local? dependencias?
Si es así, ¿esto ocurre con frecuencia y es una tarea importante para los mantenedores de paquetes?
Respuesta1
Entonces mi pregunta es, si los desarrolladores originales crearon su software con la intención de distribuir una gran instalación monolítica completa con dependencias empaquetadas, ¿los mantenedores del paquete APT necesitan reescribir la fuente para que el software use la colección comunitaria de dependencias en lugar de la local? dependencias?
No necesariamente, siempre y cuando la instalación monolítica noconflictocon una biblioteca o nombre de archivo existente. Es decir, si el sistema ya tiene una /lib/foobar
(versión 12) y el paquete monolítico requiere y agrupa foobar
la versión 9, ese paquete monolítico no puede almacenar su foobar
versión 9 usando el nombre de archivo /lib/foobar
, porque se toma esa ruta, peropodríautilizar /lib/foobar_v9
, o tal vez .../monolithic_app_dir/lib/foobar
.
Si es así, ¿esto ocurre con frecuencia y es una tarea importante para los mantenedores de paquetes?
Sí, previniendo y si es necesarioordenandoVarios niveles de infierno de dependencia es gran parte de lo que hacen los mantenedores de paquetes.
Respuesta2
política debianes que las bibliotecas, herramientas, etc. incluidas con un programa deben separarse de él al crear un paquete Debian. La política de Debian también requiere que las bibliotecas se divida en al menos un paquete de ejecución (por ejemplo libfoo-version
) y una versión de desarrollo con la biblioteca estática y los encabezados (por ejemplo libfoo-version-dev
).
Lo que haga en su propio sistema es asunto suyo, pero se espera que cualquier desarrollador de Debian (DD) que empaquete una aplicación monolítica la desagrege, lo que significa depender de las bibliotecas existentes en Debian o crear paquetes para ellas si aún no existen. .
Otras distribuciones pueden tener políticas diferentes, pero la mayoría requerirá que los paquetes en los repositorios oficiales sean desagregados, porque la agrupación subvierte el objetivo del empaquetado y hace que sea más difícil, por ejemplo, aplicar actualizaciones de seguridad de la biblioteca a todos los programas que usan una biblioteca en particular.