Boost est un exemple complexe, voyons d'abord un exemple plus simple.
De façon précise, le openssl Le paquet source fournit 5 paquets binaires :
-
libssl1.0.0
contient la bibliothèque dynamique OpenSSL, version 1.0.0. C'est ce dont les programmes liés à cette bibliothèque ont besoin pour fonctionner. Le nom du paquetage 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 binairement compatible avec la version 1.0.0.
-
openssl
contient des outils de ligne de commande qui utilisent la bibliothèque OpenSSL. Même si vous avez plusieurs versions de la bibliothèque, vous n'avez pas besoin de plusieurs versions de ces outils : il n'y a qu'une seule version d'OpenSSL. /usr/bin/openssl
ainsi que les outils, les données et la documentation associés.
-
libssl-dev
contient les fichiers dont vous avez besoin si vous voulez compiler un programme qui se lie à OpenSSL. Il y a des fichiers d'en-tête C ( *.h
), les bibliothèques de liaison ( *.a
, *.so
), et quelques fichiers assortis.
-
libssl-doc
contient la documentation relative à la bibliothèque OpenSSL. Vous n'avez besoin de ce paquetage que si vous avez l'intention d'écrire des programmes qui utilisent la bibliothèque.
-
libssl1.0.0-dbg
contient des symboles de débogage. Il est seulement utile pour les personnes qui déboguent la bibliothèque OpenSSL ou les programmes qui l'utilisent. La réponse de andrewsomething a plus d'informations sur ces -dbg
paquets.
En outre, precise contient une ancienne version de la bibliothèque, libssl0.9.8
parce qu'il y a des programmes qui sont toujours liés à l'ancienne version.
D'autres paquets que vous pourriez voir sont des liens pour des langages autres que le C. OpenSSL n'est pas livré avec (il existe des liens vers OpenSSL pour d'autres langages, mais ils ne proviennent pas de la même source). Un exemple est sqlite3 qui est livré avec Liaisons TCL .
La principale raison de diviser les paquets de cette façon est que les différents paquets ont des publics cibles différents. Un système où personne ne compile jamais rien n'a besoin que du noyau lib
et peut-être les outils en 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 de la commande -dev
paquet. Si quelqu'un veut écrire un programme qui utilise la bibliothèque, il a besoin de l'option -doc
paquet.
Et pour Boost ? Il suit la même structure, mais comme Boost est une énorme bibliothèque, il est divisé en plusieurs petits paquets : libboost-*1.46.1
y libboost-*1.46-dev
. En fait, il n'existe qu'une seule version de Boost, 1.46 mais oneiric avait les deux 1.42 y 1.46 . Il existe également un métapackage boost-defaults qui utilise le paquet versionné comme dépendance.
Regarder libhangul en plus du paquet de bibliothèques dynamiques libhangul1
et le paquet de développement libhangul-dev
il y a un paquet libhangul-data
. Ce paquet contient des données supplémentaires qui sont requises par la bibliothèque. Même si vous avez plusieurs versions de la bibliothèque, elles peuvent partager le paquetage -data
paquet. En outre, le paquet est indépendant de l'architecture. Les logiciels qui contiennent une grande quantité de données indépendantes de l'architecture sont divisés en paquets dépendants de l'architecture et indépendants de l'architecture, afin de gagner de la place sur les sites de distribution. Un autre suffixe ayant une signification similaire est -common
.
Les règles d'empaquetage d'Ubuntu et de Debian sont très similaires, donc le matériel concernant 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 rend les paquets Debian et Ubuntu différents est de les compiler avec des versions de bibliothèques différentes, et ce n'est pas plus que la différence entre les différentes versions d'Ubuntu. Ayez le Documentation pour les développeurs Debian à portée de main, notamment le Manuel de la charte Debian et le Référence du développeur ; voir le Guide du nouveau mainteneur pour une introduction. Ignorez les parties concernant le travail avec le projet Debian et ainsi de suite, lisez seulement les parties concernant la création d'un paquet. dh_make
est un bon moyen de commencer avec un paquet deb (vous voudrez sélectionner "Library").