Destination Debian

Infos à la source, maîtrisez votre distribution Debian/Ubuntu

  • Soutenir
  • Mes livres
    • Mémento Git à 100%
    • Debian 8 Jessie
  • Lettre d’informations
  • Mes activités chez Debian
    • Historique
    • Mes projets
  • Mes autres sites
    • My blog on free software
    • Freexian, ma société
    • Mon blog perso
  • Contact
Home Archives for HOWTO

Comment ajuster le comportement de dpkg-source dans un paquet source Debian

Posted on 20/12/2010 Written by Raphaël Hertzog

Dpkg-source est le programme chargé de générer un nouveau paquet source Debian lors d’un changement de version. Bien qu’il offre de nombreuses options intéressantes en ligne de commande, celles-ci ne sont que rarement utilisées… faute de savoir comment faire pour que ces options soient systématiquement utilisées ! Nous allons voir comment y remédier.

Solution la plus évidente : passer des options à dpkg-source via la ligne de commande de dpkg-buildpackage. L’inconvénient étant bien sûr qu’il faut s’en rappeler à chaque fois ! On peut partiellement y remédier en créant des alias shell incluant ces options. Mais il faudra autant d’alias que de combinaisons d’options. Pas très pratique…

La solution adéquate a été implémentée l’année dernière, à partir de la version 1.15.5 de dpkg. Elle consiste à entrer ces options dans debian/source/options. N’importe quelle option commençant par « -- » peut y être incluse, à raison d’une option par ligne, « -- » étant omis. Exemple :

# Utilisation de la compression Bzip2 pour debian.tar
compression = "bzip2"
compression-level = 7
# Pas de diff pour les modifications de config.(sub|guess)
extend-diff-ignore = "(^|/)config.(sub|guess)$"

À noter : l’utilisation d’espaces autour du signe égal est ici possible, contrairement à la ligne de commande. L’encadrement de la valeur par des guillemets est possible mais non obligatoire.

Au final, debian/source/options faisant parti du paquet source, n’importe qui d’autre le récupérant générera le paquet avec les options que vous aurez entrées dans ce fichier.

Le même résultat peut être obtenu en utilisant le fichier debian/source/local-options. La seule différence étant que ce fichier ne sera pas inclus dans le paquet source, ce qui peut être intéressant si vous travaillez avec un logiciel de gestion de versions (VCS, Version Control Repository) tel que git, svn, bazaar etc… avec des options que les utilisateurs finaux ne doivent pas passer. Certaines options (telle que --unapply-patches) ne sont autorisées que dans ce fichier, pour ne pas surprendre l’utilisateur du paquet source généré avec un comportement inattendu.

Vous pourrez en apprendre bien plus sur les options de dpkg-source en consultant sa page de manuel. Je suis persuadé que vous y découvrirez des options qui vous sont inconnues ! Saviez-vous, par exemple, que vous pouviez demander à dpkg-source d’interrompre le processus s’il détectait que certaines modifications amont n’étaient pas gérées par un patch existant dans debian/patches ? Il s’agit de l’option --abort-on-upstream-changes, et elle ne peut être utilisée que dans le fichier debian/source/local-options.

Cet article est une traduction de How to customize dpkg-source’s behaviour in your Debian source package contribuée par Weierstrass01. Abonnez-vous à ce blog par RSS ou par email pour recevoir tous les prochains articles et améliorer votre maîtrise de Debian/Ubuntu.

Filed Under: Documentation, Documentation pour les contributeurs Tagged With: Debian, dpkg, dpkg-source, HOWTO, Packaging, Ubuntu

Comment utiliser plusieurs archives amont dans les paquets source Debian

Posted on 16/12/2010 Written by Raphaël Hertzog

Depuis l’introduction du format source « 3.0 (quilt) », il est maintenant possible d’intégrer plusieurs archives amont dans les paquets source Debian. Cet article a pour but de vous montrer comment faire avec votre propre paquet, étant donné qu’il est assez utile d’intégrer facilement des plugins, traductions ou documentations que les développeurs amont mettent à disposition sous forme d’archives séparées.

Explications pas-à-pas

Les sources de Spamassassin serviront d’exemple. La version en développement est la 3.3.1. L’archive principale est nommée de manière conventionnelle (spamassassin_3.3.1.orig.tar.gz) et contient le dossier racine des sources. Nous avons déjà un répertoire Debian dans la mesure où le paquet n’est pas nouveau.

Les développeurs mettent à disposition les règles spamassassin sous la forme d’une archive séparée nommée Mail-SpamAssassin-rules-3.3.1.r901671.tgz. On la récupère, la renomme spamassassin_3.3.1.orig-pkgrules.tar.gz et la copie dans le même répertoire que l’archive principale. Le suffixe « pkgrules » est non seulement la « clé » identifiant clairement l’archive amont, mais aussi le nom du dossier dans lequel il sera extrait à l’intérieur du paquet source. Un tel répertoire n’existant pas encore, nous devons le créer.

$ mv Mail-SpamAssassin-rules-3.3.1.r901671.tgz spamassassin_3.3.1.orig-pkgrules.tar.gz
$ cd spamassassin-3.3.1
$ mkdir pkgrules
$ tar -C pkgrules -zxf ../spamassassin_3.3.1.orig-pkgrules.tar.gz

Et cela suffit ! La prochaine fois que le paquet source sera généré, l’archive supplémentaire sera automatiquement intégrée dans le paquet.

$ dpkg-buildpackage -S
[...]
 dpkg-source -b spamassassin-3.3.1
dpkg-source: info: utilisation du format source « 3.0 (quilt) »
dpkg-source: info: construction de spamassassin à partir de ./spamassassin_3.3.1.orig-pkgrules.tar.gz ./spamassassin_3.3.1.orig.tar.gz
dpkg-source: info: construction de spamassassin dans spamassassin_3.3.1-1.debian.tar.gz
dpkg-source: info: construction de spamassassin dans spamassassin_3.3.1-1.dsc

L’archive supplémentaire est maintenant partie intégrante des sources mais, en l’état, ne sert à rien… il faut modifier le fichier debian/rules (ou debian/spamassin.install) pour installer les nouveaux fichiers dans le paquet binaire.

Un cas particulier : l’empaquetage d’un ensemble de logiciels connexes

Dans de très rares cas, vous pouvez être amenés à empaqueter ensemble plusieurs programmes (de petits modules Perl par exemple) et vous n’avez aucune archive principale, seulement plusieurs petites. Renommez-les selon la logique précédente, puis demandez à dpkg-source, lors de la génération du paquet, de créer une archive principale « factice » avec l’option --create-empty-orig :

$ dpkg-buildpackage -S --source-option=--create-empty-orig

Utilisez cette option avec précaution dans la mesure où le numéro de version que vous donnez au lot de programmes est très vraisemblablement décorrélé de celui de chaque programme.

Erreurs fréquentes

Oublier d’extraire les archives supplémentaires

Si vous oubliez d’extraire le contenu de l’archive supplémentaire dans le répertoire pkgrules, dpkg-source émettra de nombreux messages d’avertissement concernant la suppression des fichiers de cette archive. Il ne s’agit pas réellement d’une suppression, vous avez simplement oublié de les créer dans le répertoire précédent.

dpkg-source: avertissement: suppression du répertoire pkgrules ignorée
dpkg-source: avertissement: suppression du fichier pkgrules/20_fake_helo_tests.cf ignorée
dpkg-source: avertissement: suppression du fichier pkgrules/60_shortcircuit.cf ignorée
[...]

Mauvais numéro de version pour l’archive supplémentaire

Parfois l’archive supplémentaire se trouve dans une version ne correspondant pas à la version en développement. Vous devez nommez le fichier de façon cohérente avec la source amont, car dans le cas contraire il ne sera pas pris en compte par dpkg-source. Ce dernier générera un nouveau patch dans debian/patches contenant l’intégralité du nouveau dossier.

Rendre le nom du composant significatif en regard du numéro de version de l’archive supplémentaire est une solution possible (dans notre exemple ci-dessus, nous aurions pu ainsi adopter le suffixe « pkgrules-r901671 »). Le revers de la médaille consiste en un nom de dossier variable, changeant avec toute nouvelle version. Le corollaire étant bien sûr que vous devrez adapter vos règles d’empaquetage pour prendre en compte ce changement.

Ceci étant, cette astuce a le mérite de permettre la mise à jour du contenu additionnel sans pour autant impacter la version amont. L’envoi d’une nouvelle révision sera acceptée dans la mesure où l’archive principale sera ignorée — car inchangée — tandis que le contenu additionnel sera mis à jour (du fait du nom différent).

Assurez-vous cependant de retirer les anciennes versions des archives additionnelles, sans quoi vous auriez plusieurs copies différentes de la même archive dans votre paquet source !

Mauvaise extraction de l’archive supplémentaire

Vous devez faire preuve d’autant d’ingéniosité que dpkg-source lorsque vous extrayez manuellement l’archive supplémentaire !

Si l’archive contient uniquement un répertoire racine, celui-ci est extrait, renommé pour correspondre au nom du composant et déplacé dans le répertoire du paquet source.
Dans le cas contraire (plusieurs répertoires à la racine), alors le répertoire de destination est créé en premier et le contenu de l’archive directement extrait dans celui-ci.

Ci-dessous des commandes pour faire face dans tous les cas (le répertoire courant est supposé être celui du paquet source) :

$ mkdir pkgrules
# L'archive contient un unique répertoire de premier niveau
$ tar -C pkgrules --strip-components=1 -zxf ../spamassassin_3.3.1.orig-pkgrules.tar.gz
# L'archive contient plusieurs fichiers/répertoires au premier niveau
$ tar -C pkgrules -zxf ../spamassassin_3.3.1.orig-pkgrules.tar.gz

Cet article est une traduction de How to use multiple upstream tarballs in Debian source packages contribuée par Weierstrass01. Abonnez-vous à ce blog par RSS ou par email pour recevoir tous les prochains articles et améliorer votre maîtrise de Debian/Ubuntu.

Filed Under: Documentation, Documentation pour les contributeurs Tagged With: 3.0 (quilt), Debian, dpkg-source, HOWTO, Libre, Packaging, Ubuntu

  • « Previous Page
  • 1
  • 2
  • 3
  • 4

Découvrez mes ouvrages

Apprenez en plus en cliquant sur leur couverture :

Lettre d’informations

Abonnez-vous à ma lettre d'informations, saisissez votre adresse électronique et cliquez sur « S'abonner » :

Suivez moi

  • Adresse mail
  • Facebook
  • GitHub
  • RSS
  • Twitter

Archives

Planètes

  • Planète April
  • Planète Debian-Fr
  • Planète des utilisateurs Debian
  • Planète Libre

Flux Mon blog anglophone sur le libre

  • Freexian is looking to expand its team with more Debian contributors 29/03/2024
  • Freexian’s report about Debian Long Term Support, July 2022 31/08/2022
  • Freexian’s report about Debian Long Term Support, June 2022 26/07/2022
  • Freexian’s report about Debian Long Term Support, May 2022 23/06/2022
  • Freexian’s report about Debian Long Term Support, April 2022 03/06/2022
  • Debian 9 soon out of (free) security support 11/05/2022

Mots-clés

3.0 (quilt) Annonce aptitude Cahier Admin conffile Contribuer DebConf Debian Debian France Debian Live Distro Tracker dpkg dpkg-source Eyrolles Freexian GNOME GSOC HOWTO Informatique Kali Linux Libre Livres LTS Moi multiarch nautilus-dropbox nettoyage Packaging Politique Presse Pro Programmation PTS publican python-django Release Rolling Référence Résumé d'activité synaptic Testing Tryton Ubuntu unstable wordpress

Articles récents

  • Le logiciel libre a t’il une couleur politique ?
  • Mes activités libres en janvier 2017
  • Élections présidentielles, logiciel libre et Charlotte Marchandise
  • Mes activités libres en décembre 2016
  • Mes activités libres en novembre 2016

Copyright © 2025 · Focus Pro Theme sur Genesis Framework · WordPress · Log in