dpkg-source(1)

NOM
dpkg-source - outil de manipulation des paquets sources Debian (.dsc).

SYNOPSIS
dpkg-source [options] commande

DESCRIPTION
dpkg-source empaquete ou dépaquete une archive source Debian. Aucune de ces commandes ne permet la combinaison de plusieurs options en une seule et elles ne permettent pas d'indiquer la valeur d'une option dans un argument séparé.

COMMANDES

-x fichier.dsc [répertoire-de-sortie]
    Cette option sert à extraire un paquet source. On doit donner un seul argument sans option : le nom du fichier de contrôle des sources Debian (.dsc). Un deuxième argument sans option peut être donné pour indiquer le répertoire où extraire le paquet source, cela ne doit pas exister. Quand aucun répertoire n'est indiqué, le paquet source est extrait dans un répertoire source-version du répertoire courant. dpkg-source lit, dans le fichier de contrôle, les noms des fichiers qui composent le paquet source ; il suppose qu'ils sont dans le même répertoire que le fichier .dsc. Les fichiers extraits du paquet auront le même système de propriété et de permission que s'ils avaient été simplement créés -- les répertoires et les fichiers exécutables auront un système de permission égal à 0777 et les simples fichiers, 0666 ; ces deux systèmes étant modifiés par le masque de celui qui fait l'extraction ; si le répertoire parent est « setgid », les répertoires extraits le seront aussi et tous les fichiers et répertoires hériteront du système de propriété de ce groupe. Si le paquet source utilise un format non-standard (actuellement, cela signifie tous les formats sauf le "1.0"), son nom sera enregistré dans debian/source/format de sorte que la construction du paquet source utilise le même format par défaut.

-b répertoire [paramètres-dans-un-format-spécifique]
    Construit un paquet source. Le premier argument non optionnel est pris comme nom du répertoire contenant l'arborescence des sources Debianisées (c'est-à-dire avec un sous-répertoire debian et peut-être des modifications sur les fichiers d'origine). Selon le format du paquet source utilisé pour construire le paquet, d'autres paramètres peuvent être acceptés. dpkg-source va construire le paquet source dans le premier format qui fonctionnera dans sa liste ordonnée : le format indiqué dans le champ format de debian/control, le(s) format(s) indiqué(s) avec le paramètre de la ligne de commande --format, le format indiqué dans debian/source/format, "1.0", "3.0.(natif)". Voir ci-dessous pour une description plus détaillée des différents formats de paquet source.

-h, --help
    Affiche un message d'aide puis quitte.

--version
    Affiche le numéro de version puis quitte.

OPTIONS DE CONSTRUCTION GENERIQUES

-cfichier/control
    Indique le principal fichier de contrôle des sources où trouver les renseignements. Par défaut, c'est le fichier debian/control. Lorsqu'un chemin relatif est fourni, on considère qu'il est relatif au répertoire le plus élevé de l'arborescence source.

-lfichier/changelog
    Indique le fichier d'enregistrement des changements où trouver des renseignements. Par défaut, c'est le fichier debian/changelog. Lorsqu'un chemin relatif est fourni, on considère qu'il est relatif au répertoire le plus élevé de l'arborescence source.

-Fformat-du-changelog
    Donne le format du fichier changelog. Par défaut, c'est une ligne spéciale, près de la fin du fichier, qui l'indique ; sinon, on utilise le format classique debian.

--format=valeur
    Essaie d'abord le format donné dans la construction du paquet source. S'il est utilisé plusieurs fois, ils sont testés dans l'ordre. Il ne remplace aucunement un champ format indiqué dans debian/control mais il remplacera n'importe quel format donné dans debian/source/format.

-Vnom=valeur
    Deprecated. Fixe la valeur d'une variable de substitution. Consultez deb-substvars(5) pour une discussion sur la valeur de substitution.

-Tfichier/substvars
    Deprecated. Lit les variables de substitution dans fichier-substvars; par défaut aucun fichier n'est lu.

-Dchamp=valeur
    Remplace ou ajoute en sortie un champ dans le fichier de contrôle.

-Uchamp
    Supprime en sortie un champ dans le fichier de contrôle.

-Zcompression
    Spécifie le niveau de compression à utiliser pour les fichiers créés (archives et fichiers diffs). Notez que cette option ne causera pas la recompression des archives existantes, cela ne concerne que les nouveaux fichiers. Les valeurs acceptées sont les suivantes : gzip, bzip2, et lzma. gzip étant l'option par défaut.

-zniveau
    Niveau de compression à utiliser. Comme avec -Z cela ne concerne que les fichiers nouvellement créés. Les valeurs prises possibles sont les suivantes : 1 à 9, best, et fast. 9 est la valeur par défaut.

-i[regexp]
    On peut donner une expression rationnelle Perl pour filtrer les fichiers qui doivent être éliminés de la liste des fichiers pour le « diff ». Cette liste est créée avec une commande « find ». (Si le fichier source en construction est un fichier source de version 3 utilisant VCS, c'est utile pour ignorer les fichiers non envoyés.) L'option -i active cette fonction d'elle-même et élimine les fichiers et les répertoires de contrôle des systèmes de contrôle de version les plus connus, les fichiers d'échange et de sauvegarde et les répertoire utilisés par Libtool. Il ne peut y avoir qu'une seule expression rationnelle active, ainsi pour de multiples options -i seule la dernière prendra effet. C'est très utile pour supprimer des fichiers qui sont inclus dans le diff, par exemple, si vous maintenez un source avec un système de contrôle de révision et que voulez construire un paquet source sans inclure des fichiers et répertoires additionnels qu'il contient généralement (par exemple CVS/, .cvsignore, .svn/). L'expression rationnelle par défaut est déjà très exhaustive, mais si avez besoin de la remplacer, veuillez noter que par défaut, il sait vérifier n'importe quelle partie d'un chemin, donc si vous voulez trouver le début d'un nom de fichier ou des noms de fichiers complets, vous devrez fournir les caractères spéciaux vous-même (par exemple'(^|/)', '($|/)').

-I[motif-de-fichier]
    Avec cette option, le fichier est passé à l'option tar(1) quand on veut créer un fichier .orig.tar.gz ou .tar.gz. Par exemple, -ICVS fera que tar sautera les répertoires du CVS quand il doit créer un fichier .tar.gz. On peut répéter cette option pour exclure plusieurs fichiers. -I ajoute par défaut des options «--exclude » qui élimineront les fichiers et les répertoires de contrôles des systèmes les plus connus de contrôle de version, les fichiers d'échange et de sauvegarde et les répertoires utilisés par Libtool.

Note : même si elles ont des rôles similaires, -i et -I ont une syntaxe et une sémantique très différentes. -i ne peut être spécifié qu'une fois et reçoit une expression rationnelle compatible avec le langage Perl qui est appliquée sur chaque chemin relatif complet de chaque fichier. I peut être spécifié plusieurs fois et prend un motif de nom de fichier avec les méta-caractères du shell. Le motif est appliqué au chemin relatif complet mais aussi à chaque partie du chemin individuellement. La sémantique exacte de l'option « tar --exclude » est un peu compliquée, voir http://www.gnu.org/software/tar/manuel/tar.html#wildcards pour une documentation plus complète. L'expression régulière et le motif par défaut pour les deux options peuvent être trouvés dans la sortie de la commande --help.

LES OPTIONS GENERIQUES POUR EXTRACTION

--no-copy
    Ne pas copier l'archive originale près de l'extraction du paquet source.

--no-check
    Ne vérifie pas les signatures et les sommes de contrôle avant de dépaqueter.

FORMATS DE PAQUET SOURCE

  Format: 1.0
Un paquet source dans ce format se compose soit d'un .orig.tar.gz associé à un .diff.gz ou un simple .tar.gz (dans ce cas, le paquet est appelé natif "native"). Extracting Extraire un paquet natif revient à une simple extraction de l'archive TAR dans le répertoire cible. L'extraction d'un paquet non-natif consiste au dépaquetage du .orig.tar.gz puis l'application des correctifs contenues dans le .diff.gz. La date de tous les fichiers correctifs est celle du moment où a eu lieu l'extraction depuis le paquet source (cela évite les heures fausses menant à des problèmes lorsque des fichiers générés automatiquement sont patchés). Le diff peut créer de nouveaux fichiers (tout le répertoire debian est créé de cette façon) mais ne peut pas supprimer de fichiers (les fichiers vides seront laissé là). Construction Construire un paquet natif revient simplement à créer une archive TAR avec le répertoire du source. La création d'un paquet non-natif consiste à extraire l'archive originale dans un répertoire séparé ".orig" puis régénérer le .diff.gz en comparant le répertoire du paquet source avec répertoire ".orig".

Options de construction (avec -b):

Si l'on donne un second argument, ce sera le nom du répertoire source original ou le nom du fichier « tar » ou bien une chaîne vide si le paquet est un « debian pure souche » et n'a donc pas de fichiers « diffs » concernant sa « debianisation ». S'il n'y a pas de second argument, et selon les autres arguments donnés, dpkg-source cherche le fichier « tar » des sources originelles paquet_version-originelle.orig.tar.gz ou bien le répertoire source originel répertoire.orig selon les paramètres -sX. Les options -sa, -sp, -sk, -su et -sr ne remplacent pas les fichiers « tar » ou les répertoires existants. Pour cela, il faut utiliser les options -sA, -sP, -sK, -sU et -sR.

-sk Quand on spécifie en fichier source d'origine un fichier « tar » ; par défaut, paquet_version-originelle.orig.tarextension. Il le laisse en place en tant que fichier « tar » ou le copie dans le répertoire en cours s'il n'y est pas déjà. Le fichier sera dépaqueté dans répertoire.orig pour la génération du fichier diff.

-sp Comme -sk mais supprimera le répertoire à nouveau par la suite.

-su Quand on spécifie que le source d'origine est un répertoire ; la valeur par défaut est le répertoire paquet-version-originelle.orig et dpkg-source crée une nouvelle archive du source d'origine.

-sr Comme -su mais supprimera ce répertoire après utilisation.

-ss Indique que le source d'origine est disponible à la fois comme un répertoire et comme un fichier « tar ». « dpkg-source » se servira du répertoire pour créer le « diff », mais du fichier « tar » pour créer le fichier .dsc. Aussi, faire attention avec cette option. Si le répertoire et le fichier « tar » ne correspondent pas, une mauvaise archive source en résulte.

-sn Indique de ne pas chercher de source originel et de ne pas créer de « diff». Le second argument, s'il existe, doit être une chaîne vide. Cela sert pour les paquets Debian pure souche qui n'ont pas un source originel distinct et donc pas de fichier « diff » de debianisation.

-sa or -sA
    Indique comme source originel soit un fichier « tar », soit un répertoire - le deuxième argument, s'il existe, doit être l'un d'eux ou bien une chaîne vide (cela revient à utiliser l'option -sn). Quand un fichier « tar » existe, il est dépaqueté pour créer le fichier « diff » ; ensuite il est supprimé (cela revient à utiliser l'option -sp) ; quand un répertoire est trouvé, il est dépaqueté et dpkg-source crée le source originel et supprime ensuite ce répertoire (cela revient à utiliser l'option -sr) ; quand ni l'un ni l'autre n'est trouvé, dpkg-source suppose que le paquet ne possède pas de fichier « diff » de debianisation, mais seulement une simple archive source (cela revient à utiliser l'option -sn). Quand les deux sont trouvés, dpkg-source ignore le répertoire et le remplace si l'option -sA a été spécifiée (cela revient à utiliser l'option -sP) ou il provoque une erreur si l'option -sa a été spécifiée. L'option par défaut est -sA.

options d'extractions (avec -x):

Dans tous ces cas, l'arborescence existante du source originel est supprimée.

-sp Quand on extrait le source originel (s'il existe), il est conservé en tant que fichier « tar ». S'il n'est pas déjà dans le répertoire courant ou si ce répertoire contient un fichier différent, le fichier « tar » est copié dans ce répertoire. (Ceci est le comportement par défaut).

-su Dépaquetage de l'arborescence du source originel.

-sn Assure que le source originel ne sera ni copié dans le répertoire en cours, ni dépaqueté. Si une arborescence source originelle est présente dans le répertoire courant, elle est toujours supprimée.

Toutes les options -sX s'excluent mutuellement. Si vous en indiquez plusieurs, seule la dernière sera prise en compte.

  Format: 2.0
Aussi connu sous le nom de « wig&pen ». Ce format n'est pas recommandé afin d'assurer une utilisation massive du format "3.0 (quilt)" qui le remplace. Wig&pen a été la première spécification d'une nouvelle génération de format de paquet source. Le comportement de ce format est le même que pour le format "3.0 (quilt)" sauf qu'il n'utilise pas de liste explicite de correctifs. Tous les fichiers dans debian/patches/ correspondant à l'expression rationnelle Perl [\w-]+ doivent être des correctifs valides : ils sont appliqués au moment de l'extraction. Lors de la construction d'un nouveau paquet source, toute modification apportée à la source amont est enregistré dans un correctif nommé zz_debian-diff-auto.

  Format: 3.0 (native)
Ce format est une extension du format de paquet natif tel que défini dans le format 1.0. Il accepte toutes les méthodes de compression et ignore par défaut tout fichier et répertoire VCS ainsi que de nombreux fichiers temporaires (voir la valeur par défaut associé à l'option -I dans la sortie de --help).

  Format: 3.0 (quilt)
Un paquet source dans ce format contient au moins une archive tar d'origine (.orig.tar.ext où ext peut être gz, bz2 et lzma) et une archive debian tar (.debian.tar.ext). Il peut également contenir d'autres archives tar d'origine (.orig-composant.tar.ext).

Extracting

L'archive principale tar d'origine est extraite tout d'abord, puis toutes les autres archives tar d'origine sont extraites dans des sous-répertoires dont le nom est formé à partir de la partie composant de leur nom. L'archive tar Debian est extraite par dessus le répertoire source, après la suppression de tout répertoire debian existant. Notez que l'archive tar Debian doit contenir un sous-répertoire debian, mais il peut également contenir des fichiers binaires en dehors de ce répertoire (voir l'option --include-binaries).

Toutes les modifications figurant dans debian/patches/debian.series ou debian/patches/series sont alors appliquées. Si l'ancien fichier est utilisé et qu'il n'y a pas de plus récent (ou que c'est un lien symbolique), alors celui-ci est remplacé par un lien symbolique vers l'ancien. Cette disposition vise à simplifier l'utilisation de « quilt » pour gérer l'ensemble des patches. Notez toutefois que si dpkg-source analyse correctement une série de fichiers avec les options utilisées pour l'application du correctif (stockées sur chaque ligne après le nom du patch et d'un ou plusieurs espaces), il n'ignore pas cesoptions et s'attendra toujours que les correctifs puissent être appliqués avec l'option -p1 de patch. Il va donc émettre un avertissement lorsqu'il rencontre ces options, et la construction est susceptible d'échouer.

Similaire au comportement par défaut de « quilt », les modifications peuvent aussi supprimer des fichiers.

Le fichier debian/patches/.dpkg-source-applied est créé si certains correctifs ont été appliqués au cours de l'extraction.

Construction

Les originaux de toutes les archives tar trouvées dans le répertoire courant sont extraits dans un répertoire temporaire en suivant la même logique que pour le dépaquetage, le répertoire debian est copié dans le répertoire temporaire, et toutes les mises à jour sauf debian-changes-version sont appliquées. Le répertoire temporaire est comparé à celui du paquet source et le diff (s'il est non vide) est stocké dans debian/patches/debian-changes-version. Tout changement dans un fichier binaire ne peut être indiqué dans le diff et va déboucher sur un échec à moins que le mainteneur décide délibérément d'inclure cette modification binaire dans l'archive tar Debian (en le listant dans debian/source/include-binaries). La construction pourra également échouer si des fichiers binaires sont trouvés dans le sous-répertoire debian sans être indiqué dans la liste blanche de debian/source/include-binaries. Le répertoire debian mis à jour et la liste des binaires modifiés sont ensuite utilisés pour régénérer l'archive tar debian. Le diff généré automatiquement n'inclut pas les changements spécifiques sur les fichiers VCS ainsi sur que de nombreux fichiers temporaires (pour la valeur par défaut associée à l'option -i, voir la sortie de --help). En particulier, le répertoire .pc utilisé par « quilt » est ignoré lors de la génération automatique du patch. Note : dpkg-source s'attend à ce que l'arbre source ait toutes les mises à jour d'appliquées lorsque vous générez le paquet source. Ce n'est pas le cas lorsque l'arbre source a été obtenu par le dépaquetage d'un paquet source utilisant le format : 1.0 par exemple. Pour réduire le problème, dpkg-source appliquera les correctifs avant de construire à moins qu'il ne trouve le fichier debian/patches/.dpkg-source-applied. La présence d'un sous-répertoire .pc est également interprétée comme le signe que certains patches ont été appliqués et dans ce cas quilt unapplied est appelé pour vérifier que toutes les corrections sont appliquées. L'option --no-preparation peut êtreutilisée pour désactiver ce comportement.

Options de construction

--include-removal
    Ne pas ignorer les fichiers supprimés et les inclure dans le fichier de modification généré automatiquement.

--include-timestamp
    Inclure la date dans le patch généré automatiquement.

--include-binaries
    Ajouter tous les binaires modifiés dans l'archive tar debian. Les ajouter aussi à debian/source/include-binaries : elles seront ajoutées par défaut dans les constructions correspondantes aussi cette option n'est donc plus nécessaire.

--no-preparation
    Ne pas essayer de préparer l'arbre de la construction en appliquant les correctifs qui ne lui sont apparemment pas appliqués.

Options d'extraction

--skip-patches
    Ne pas appliquer des correctifs à la fin de l'extraction.

--without-quilt
    Ne pas utiliser « quilt » afin d'appliquer des correctifs, mais le code même de dpkg-source. Il ne sera pas possible d'utiliser directement «quilt » sur le répertoire dépaqueté mais il sera libre d'en faire usage sur les fichiers temporaires.

  Format: 3.0 (custom)
Ce format est particulier. Il ne représente pas un réel format de paquet source mais peut être utilisé pour créer des paquets sources avec des fichiers arbitraires.

Options de construction

Tous les arguments qui ne sont pas des options sont pris pour des fichiers à intégrer dans le paquet source généré. Ils doivent exister et être de préférence dans le répertoire courant. Au moins un fichier doit être donné.

--target-format=valeur
    Required. Définit le format réel du paquet source généré. Le fichier généré .dsc contiendra cette valeur dans son champ format et non "3.0 (custom)".

  Format: 3.0 (git) et 3.0 (bzr)
Ces formats sont à titre expérimental. Ils génèrent une archive tar contenant le référentiel VCS correspondant.

Extracting

L'archive tar est décompressée puis le VCS est utilisé afin de vérifier la branche de la version courante.

Construction

Avant d'aller plus loin, quelques vérifications sont effectuées afin de s'assurer que nous n'avons pas de changements non-soumis à ne pas ignorer.

Ensuite, la partie spécifique du répertoire source du VCS est copiée dans un répertoire temporaire. Avant que ce répertoire temporaire ne soit empaqueté dans une archive tar, divers nettoyages sont effectuées pour économiser de l'espace.

BOGUES
Le moment où a lieu le remplacement d'un champ par rapport à certaines déterminations de champ affichées sur la sortie standard est plutôt embrouillé.

VOIR AUSSI
dpkg-deb(1), dpkg(1), dselect(1).

AUTEURS
Copyright (C) 1995-1996 Ian Jackson
Copyright (C) 2000 Wichert Akkerman
Copyright (C) 2008 Raphaël Hertzog

Ce programme est un logiciel libre ; voyez la « GNU General Public Licence » version 2 ou supérieure pour le copyright. Il n'y a PAS de garantie.

TRADUCTION
Ariel VARDI <ariel.vardi@freesbee.fr>, 2002. Philippe Batailler, 2006. Nicolas François, 2006. Veuillez signaler toute erreur à <debian-l10n-french@lists.debian.org>.