17 votes

Comment et pourquoi créer les paquets -dbg, -dev, -doc ?

J'écris un paquet Ubuntu pour un paquet qui fournit essentiellement un certain nombre de bibliothèques et d'en-têtes qui sont ensuite utilisés pour construire d'autres logiciels. Le paquet se décompose également en petits sous-paquets qui sont interdépendants ; en ce sens, le paquet est assez similaire à boost.

J'ai remarqué que des paquets comme boost fournissent

[...]
libboost-dbg
libboost-dev
libboost-doc
[...]
libboost-all-dev
[...]

mais rien qui ne porte le nom de boost o libboost .

  • Quelle est l'idée derrière tout cela ?
  • Quels sont les objectifs de la -dbg , -dev y -doc paquets ?
  • Y a-t-il des instructions fournies sur la façon d'écrire les fichiers de construction pour ces paquets ?

16voto

Ghirai Points 11

Idée et objectif

La raison principale de la séparation de ces différents paquets est liée à l'espace disque et à la vitesse de téléchargement. En particulier, l'espace miroir est un gros souci, car il implique de distribuer plusieurs copies des données. En rendant le foo-common , foo-data ou foo-doc paquets Architecture: all Nous ne conservons qu'une seule copie des données dans l'archive au lieu de les copier pour chaque architecture (par exemple i386, amd64, etc.). Les symboles de débogage ne sont pas nécessaires pour la plupart des utilisateurs et ne font qu'allonger le téléchargement du paquet.

Pour les paquets contenus dans les archives officielles d'Ubuntu, il n'y a en fait aucune raison de créer -dbg paquets manuellement. Les machines de construction enlèvent automatiquement les symboles de débogage et les placent dans le fichier -dbgsym paquets hébergés sur ddebs.ubuntu.com. (Voir : Paquets de symboles de débogage ) -dbg Les paquets qui existent sont généralement simplement reportés de Debian.

Instructions

En ce qui concerne la mise en œuvre, jetez un coup d'œil à cette question :

En bref, de nouvelles strophes doivent être créées en debian/control pour chaque paquet. Puis debian/foo-*.install doivent également être créés. Cela permettra dh_install pour mettre le bon contenu dans les bons paquets.

El foo.install pour le paquet binaire principal pourrait ressembler à ceci :

usr/bin/
usr/lib/

foo-common.install , foo-data.install , foo-doc.install ou autre :

/usr/share/doc/
/usr/share/icons/
/usr/share/foo/
/usr/share/locale/

Et pour foo-dev :

/usr/include/
/usr/lib/pkgconfig
/usr/lib/*.so

Créer le foo-dbg nécessite de modifier debian/rules comme normalement dh_strip supprimera les symboles de débogage. Nous devons donc remplacer ce comportement :

.PHONY: override_dh_strip
override_dh_strip:
        dh_strip --dbg-package=foo-dbg

14voto

Schof Points 952

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").

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X