Boost est un exemple complexe, examinons d'abord un exemple plus simple.
Plus précisément, le paquet source openssl fournit 5 paquets binaires:
libssl1.0.0
contient la bibliothèque dynamique OpenSSL, version 1.0.0. C'est ce que les programmes liés à cette bibliothèque doivent exécuter. Le nom du package contient un numéro de version car vous pouvez avoir d'autres versions de la bibliothèque installées en même temps, si vous avez d'autres programmes liés à une autre version qui n'est pas compatible binaire avec 1.0.0.
openssl
contient des outils de ligne de commande qui utilisent la bibliothèque OpenSSL. Même si vous disposez de plusieurs versions de la bibliothèque, vous n'avez pas besoin de plusieurs versions de ces outils: il n'y en a qu'un /usr/bin/openssl
et les outils, données et documentation associés.
libssl-dev
contient les fichiers dont vous avez besoin si vous souhaitez compiler un programme qui établit un lien avec OpenSSL. Il existe des fichiers d'en-tête C ( *.h
), des bibliothèques de liaison ( *.a
, *.so
) et quelques fichiers assortis.
libssl-doc
contient la documentation de la bibliothèque OpenSSL. Vous n'avez besoin de ce package que si vous allez écrire des programmes qui utilisent la bibliothèque.
libssl1.0.0-dbg
contient des symboles de débogage. Il n'est utile que pour les personnes qui déboguent la bibliothèque OpenSSL ou les programmes qui l'utilisent. La réponse d'andrewsomething contient plus d'informations sur ces -dbg
packages.
De plus, précis contient une ancienne version de la bibliothèque libssl0.9.8
, car il existe des programmes qui sont toujours liés à l'ancienne version.
D'autres packages que vous pourriez voir sont des liaisons pour des langues autres que C. OpenSSL n'est livré avec aucune (il existe des liaisons vers OpenSSL pour d'autres langues, mais elles ne proviennent pas de la même source). Un exemple est sqlite3 , fourni avec les liaisons TCL .
La principale raison de fractionner des packages comme celui-ci est que différents packages ont des publics cibles différents. Un système où personne ne compile jamais n'a besoin que du lib
package principal et peut-être des outils de ligne de commande; ils seront installés automatiquement à partir des dépendances si nécessaire. Si quelqu'un veut compiler un programme qui utilise la bibliothèque, il a besoin du -dev
package. Si quelqu'un veut écrire un programme qui utilise la bibliothèque, il a besoin du -doc
package.
Et Boost? Il suit la même structure, mais comme Boost est une énorme bibliothèque, il est divisé en de nombreux packages plus petits: libboost-*1.46.1
et libboost-*1.46-dev
. Plus précisément, il n'y a qu'une seule version de Boost, la 1.46 , mais oneiric avait à la fois la 1.42 et la 1.46 . Il existe également un métapaquet boost-defaults qui extrait le package versionné en tant que dépendance.
En regardant libhangul , en plus du package de bibliothèque dynamique libhangul1
et du package de développement libhangul-dev
, il y a un package libhangul-data
. Ce package contient des données supplémentaires requises par la bibliothèque. Même si vous disposez de plusieurs versions de la bibliothèque, elles peuvent partager le -data
package. De plus, le package est indépendant de l'architecture. Les logiciels contenant une grande quantité de données indépendantes de l'architecture sont divisés en packages dépendants de l'architecture et indépendants de l'architecture, pour économiser de l'espace sur les sites de distribution. Un autre suffixe avec une signification similaire est -common
.
Les règles de mise en paquet d'Ubuntu et de Debian sont très similaires, donc le matériel sur la création de paquets Debian s'applique également à Ubuntu. En fait, vous pouvez avoir le même paquet source pour Debian et Ubuntu; la seule chose qui différencie les packages Debian et Ubuntu est de les compiler avec différentes versions de bibliothèquem, et ce n'est pas plus que la différence entre les différentes versions d'Ubuntu. Ayez sous la main la documentation du développeur Debian , en particulier le manuel de politique Debian et la référence du développeur ; voir le Guide du nouveau responsable pour une introduction. Ignorez les parties sur l'utilisation du projet Debian et ainsi de suite, lisez simplement les parties sur la création d'un paquet.dh_make
est un bon moyen de commencer avec un paquet deb (vous voudrez sélectionner «Library»).