Boost es un ejemplo complejo, veamos primero uno más simple.
En concreto, el paquete fuente openssl proporciona 5 paquetes binarios:
libssl1.0.0
contiene la biblioteca dinámica OpenSSL, versión 1.0.0. Eso es lo que necesitan ejecutar los programas vinculados a esta biblioteca. El nombre del paquete contiene un número de versión porque puede tener otras versiones de la biblioteca instaladas al mismo tiempo, si tiene otros programas vinculados con otra versión que no es compatible con binario con 1.0.0.
openssl
contiene herramientas de línea de comandos que usan la biblioteca OpenSSL. Incluso si tiene varias versiones de la biblioteca, no necesita múltiples versiones de estas herramientas: solo hay una /usr/bin/openssl
y las herramientas, datos y documentación asociados.
libssl-dev
contiene los archivos que necesita si desea compilar un programa que se vincule con OpenSSL. Hay archivos de encabezado C ( *.h
), bibliotecas para vincular ( *.a
, *.so
) y algunos archivos variados.
libssl-doc
contiene documentación para la biblioteca OpenSSL. Solo necesita este paquete si va a escribir programas que usen la biblioteca.
libssl1.0.0-dbg
contiene símbolos de depuración. Solo es útil para las personas que depuran la biblioteca OpenSSL o los programas que la usan. La respuesta de andrewsomething tiene más información sobre estos -dbg
paquetes.
Además, precisa contiene una versión anterior de la biblioteca libssl0.9.8
, porque hay programas que todavía están vinculados con la versión anterior.
Otros paquetes que puede ver son enlaces para idiomas distintos de C. OpenSSL no se envía con ninguno (hay enlaces a OpenSSL para otros idiomas, pero no provienen de la misma fuente). Un ejemplo es sqlite3 , que se envía con enlaces TCL .
La razón principal para dividir paquetes como este es que diferentes paquetes tienen diferentes audiencias objetivo. Un sistema en el que nadie compila nada solo necesita el lib
paquete principal , y tal vez las herramientas de línea de comando; se instalarán automáticamente desde dependencias si es necesario. Si alguien quiere compilar un programa que usa la biblioteca, necesita el -dev
paquete. Si alguien quiere escribir un programa que use la biblioteca, necesita el -doc
paquete.
¿Y qué hay de Boost? Sigue la misma estructura, pero debido a que Boost es una gran biblioteca, se divide en muchos paquetes más pequeños: libboost-*1.46.1
y libboost-*1.46-dev
. En concreto, solo hay una versión de Boost, 1.46 , pero oneiric tenía 1.42 y 1.46 . También hay un metapackage boost- default que extrae el paquete versionado como una dependencia.
En cuanto a libhangul , además del paquete de biblioteca dinámica libhangul1
y el paquete de desarrollo libhangul-dev
, hay un paquete libhangul-data
. Este paquete contiene datos adicionales requeridos por la biblioteca. Incluso si tiene varias versiones de la biblioteca, pueden compartir el -data
paquete. Además, el paquete es independiente de la arquitectura. El software que contiene una gran cantidad de datos independientes de la arquitectura se divide en paquetes dependientes de la arquitectura e independientes de la arquitectura, para ahorrar espacio en los sitios de distribución. Otro sufijo con un significado similar es -common
.
Las reglas de empaquetado de Ubuntu y Debian son muy similares, por lo que el material sobre cómo hacer paquetes de Debian también se aplica a Ubuntu. De hecho, puede tener el mismo paquete fuente para Debian y Ubuntu; Lo único que hace que los paquetes Debian y Ubuntu sean diferentes es compilarlos en diferentes versiones de biblioteca, y eso no es más que la diferencia entre diferentes versiones de Ubuntu. Tenga a mano la documentación del desarrollador de Debian , especialmente el Manual de políticas de Debian y la Referencia del desarrollador ; vea la Guía del nuevo mantenedor para una introducción. Ignore las partes sobre trabajar con el proyecto Debian, etc., solo lea las partes sobre cómo hacer un paquete.dh_make
es una buena manera de comenzar con un paquete deb (querrá seleccionar "Biblioteca").