Scroll to navigation

USCAN.FR(1) USCAN.FR(1)

NOM

uscan - Tester ou surveiller la disponibilité d'une nouvelle version amont

SYNOPSIS

uscan [options] [chemin]

DESCRIPTION

Pour une utilisation basique, uscan est exécuté sans aucun paramètre à partir de la racine d'une arborescence source debianisée où on voit le répertoire debian/ ou un répertoire contenant plusieurs arborescences sources.

Sauf si --watchfile est indiqué, uscan recherche récursivement les arborescences source valides en partant du répertoire courant (voir la section "Vérification du nom du répertoire" ci-dessous pour plus de détails).

Pour chaque arborescence valide trouvée, typiquement la séquence est la suivante :

  • uscan lit la première entrée dans debian/changelog pour déterminer le nom du paquet source <spkg> et la dernière version amont.
  • uscan traite les lignes de veille debian/watch de haut en bas en une passe unique.
  • uscan télécharge une page web à partir de l'URL spécifiée dans debian/watch.
  • uscan extrait les références href pointant vers l'archive amont (ou les archives) à partir de la page web en utilisant le motif_correspondant dans debian/watch.
  • uscan télécharge l'archive amont avec la version la plus haute plus récente que la dernière version amont.
  • uscan sauvegarde l'archive téléchargée dans le répertoire parent ../ : ../<upkg>-<uversion>.tar.gz
  • uscan invoque mk-origtargz pour créer l'archive source : ../<spkg>_<oversion>.orig.tar.gz
Pour un paquet MUT ("multiple upstream tarball" - archive amont multiple), l'archive amont secondaire sera plutôt nommée ../<spkg>_<oversion>.orig-<composante>.tar.gz.
L'action est répétée jusqu'à ce que toutes les lignes de debian/watch soient traitées.
uscan invoque uupdate pour créer l'arborescence source debianisée : ../<spkg>-<oversion>/*

Veuillez noter les informations suivantes.

  • Pour des raisons de simplicité, la méthode de compression utilisée dans les exemples est gzip avec le suffixe .gz. Les autres méthodes telles que xz, bzip2 et lzma, avec les suffixes xz, bz2 et lzma correspondants peuvent également être utilisées.
  • La nouvelle version=4 permet la gestion des paquets MUT, mais ce sont des cas rares parmi les paquets Debian. Pour un paquet d'archive simple, il n'y a qu'une ligne de veille et pas de ../<spkg>_<oversion>.orig-<composante>.tar.gz .
  • uscan avec l'option --verbose produit un rapport lisible de son exécution.
  • uscan avec l'option --debug produit un rapport lisible de son exécution avec l'état des variables internes.
  • uscan avec l'option --extra-debug produit un rapport lisible de son exécution avec l'état des variables internes et le contenu distant lors de la phase "recherche".
  • uscan avec l'option --dehs produit un rapport d'état du paquet amont au format XML pour que d'autres programmes tels que Debian External Health System.
  • L'objectif premier d'uscan est d'aider à déterminer si c'est bien la dernière version de l'archive amont qui est utilisée et de télécharger cette version d'archive. L'ordre des versions est déterminée par dpkg --compare-versions.
  • L'option --safe d'uscan limite ses fonctionnalités à ses objectifs premiers. À la fois le repaquetage des fichiers téléchargés et la mise à jour de l'arborescence source sont sautés pour éviter l'exécution de scripts non sécurisés. Cela change aussi les options par défaut à --no-download et --skip-signature.

FORMAT DU FICHIER DE VEILLE

Le format de la version 4 actuelle de debian/watch peut être résumé comme suit :

  • Les espaces et les tabulations de début sont supprimées.
  • Les lignes vides sont supprimées.
  • Une ligne qui débute par # (dièse) est une ligne de commentaire et elle est supprimée.
  • Un \ unique (barre inverse oblique) à la fin d'une ligne est supprimé et la ligne suivante est concaténée après la suppression des espaces et des tabulations de début. La ligne concaténée est analysée comme une seule ligne. (L'existence ou l'inexistence d'une espace avant le \ unique final est signifiant.)
  • La première ligne non commentée est la suivante :

Il s'agit d'une ligne obligatoire et c'est le numéro de la version recommandée.

Si vous utilisez ici "version=3" à la place, certaines fonctionnalités peuvent ne pas fonctionner comme cela est documenté ici. Voir "HISTORIQUE ET MISE À NIVEAU".

Les lignes suivantes non commentées (lignes de veille) précisent les règles de sélection des URL d'archive amont candidates et sont dans un des trois formats suivants :
  • opts=" ... " http://URL motif_correspondant [version [script]]
  • http://URL motif_correspondant [version [script]]
  • opts=" ... "

Ici,

  • opts=" ... " précise le comportement d'uscan. Voir "OPTIONS DE FICHIER DE VEILLE".
  • http://URL précise la page web où l'amont publie le lien vers la dernière archive source.
  • https://URL peut être aussi utilisé, comme peut l'être
  • ftp://URL
  • Certaines parties d'URL peuvent être dans le motif de correspondance d'expression rationnelle entourées par ( et ) comme /toto/titi-([\.\d]+)/. Si plusieurs répertoires correspondent, la version la plus élevée est choisie.) Autrement, l'URL est prise textuellement.
motif_correspondant précise le motif de chaîne complet correspondant aux références hrefs dans la page web. Voir "EXEMPLES DE FICHIER DE VEILLE".
  • Toutes les parties correspondantes entre ( et ) sont concaténées avec un . (point) pour former la version amont.
  • Si les références href ne contiennent pas de répertoires, il est possible de les combiner avec l'entrée précédente. C'est-à-dire, http://URL/motif_correspondant.
version restreint le choix d'archive amont pouvant être téléchargée. La version la plus récente disponible est choisie dans tous les cas.
  • debian réclame que l'archive amont à télécharger soit plus récente que la version obtenue à partir de debian/changelog.
  • Un numéro_de_version tel que 12.5 requiert que l'archive amont soit plus récente que le numéro_de_version.
  • same requiert que la version téléchargée des archives secondaires soit exactement la même que celle de la première archive amont téléchargée. (Utile uniquement pour les paquets MUT)
  • previous limite la version du fichier de signature. (Utilisé avec pgpmode=previous)
  • ignore ne limite pas la version des archives secondaires. (Peut-être utile pour les paquets MUT)
  • group réclame que l'archive amont à télécharger soit plus récente que la version obtenue à partir de debian/changelog. La version du paquet est la concaténation de toutes les versions amont.
  • checksum exige que l'archive amont à télécharger soit plus récente que la version obtenue à partir de debian/changelog. La version du paquet est la concaténation de la version de la prinicpale source, suivie de la somme de contrôle de toutes les versions amont utilisant le système de version "checksum". À minima, la source principale doit être déclarée comme "group".
script est exécuté à la fin de l'exécution d'uscan avec les paramètres appropriés fournis par uscan (défaut: pas d'action).
  • Le paquet Debian typique est un paquet non natif fait à partir d'une archive amont. Seulement une ligne unique du fichier de veille dans un des deux premiers formats est habituellement utilisée avec sa version réglée à debian et script réglé à uupdate.
  • Un paquet natif ne devrait pas spécifier de script.
  • Un paquet MUT ("multiple upstream tarball" – archive amont multiple) devrait indiquer uupdate comme script dans la dernière ligne de veille et ne devrait pas indiquer de script dans le reste des lignes de veille.
  • Le dernier format des lignes de veille est utile pour configurer des paramètres permanents : user-agent, compression. Si ce format est utilisé, ces paramètres doivent être suivis de la (ou des) lignes(s) de veille définissant l'URL.
  • [and] dans le format ci-dessus sont ici pour marquer les parties optionnelles et ne devraient pas être tapées.

Il y a quelques chaînes spéciales qui sont remplacées par uscan pour faciliter l'écriture du fichier de veille.

@PACKAGE@
Cette chaîne est remplacée par le nom de paquet source trouvé dans la première ligne du fichier debian/changelog.
@ANY_VERSION@
Cette chaîne est remplacée par l'expression rationnelle de la version amont légale (capture).

  [-_]?(\d[\-+\.:\~\da-zA-Z]*)
    
@ARCHIVE_EXT@
Cette chaîne est remplacée par l'expression rationnelle de l'extension habituelle de fichier d'archive (sans capture).

 (?i)(?:\.(?:tar\.xz|tar\.bz2|tar\.gz|tar\.zstd?|zip|tgz|tbz|txz))
    
@SIGNATURE_EXT@
Cette chaîne est remplacée par l'expression rationnelle de l'extension habituelle de fichier de signature (sans capture).

  (?i)(?:\.(?:tar\.xz|tar\.bz2|tar\.gz|tar\.zstd?|zip|tgz|tbz|txz))'(?:\.(?:asc|pgp|gpg|sig|sign))'
    
@DEB_EXT@
Cette chaîne est remplacée par l'expression rationnelle de habituelle de Debian (sans capture).

  [\+~](debian|dfsg|ds|deb)(\.)?(\d+)?$
    

Certaines extensions de fichiers ne sont volontairement pas incluses dans la liste précédente pour éviter des faux positifs. Il vous est encore possible de rajouter ces motifs d'extension de fichier manuellement.

OPTIONS DE FICHIER DE VEILLE

uscan lit les options de veille spécifiées dans opts=" ... " pour personnaliser son comportement. De multiples options option1, option2, option3, ..., peuvent être configurées de cette manière : opts="option1, option2, option3, ... ". Les guillemets doubles sont nécessaires si les options contiennent des espaces.

À moins qu'elles ne soient notées par ailleurs comme persistantes, la plupart des options ne sont valables que dans la ligne de veille qui les contient.

Les options de veille disponibles sont :

Configurer le nom de l'archive source secondaire comme <spkg>_<oversion>.orig-<composante>.tar.gz pour un paquet MUT.
Indique le type du composant (seuls "nodejs" et "perl" sont disponible actuellement). Ceci aide uscan à trouver la version courante si la version du composant est ignorée.

Lorsque ctype=nodejs est utilisé, uscan recherche une version dans "package.json", lorsque ctype=perl est utilisé, uscan recherche une version dans "META.json". Si une version est trouvée, elle est utilisée comme version courante du composant, en ignorant la version trouvée dans la chaîne de version de Debian. Ceci permet une meilleure détection des changements lorsque ignore ou checksum sont utilisés dans la version Debian.

Configurer la méthode de compression quand l'archive est rempaquetée (persistant).

Les valeurs de méthode disponibles sont xz, gzip (alias gz), bzip2 (alias bz2) lzma et default. La valeur par défaut est xz. Lorsque uscan est lancé dans un répertoire source Debian et que le format est "1.0" ou n'est pas défini, la méthode par défaut devient gzip.

Veuillez noter que le rempaquetage des archives amont par mk-origtargz ne se produit que si une des conditions suivantes est satisfaite :

  • USCAN_REPACK est configuré dans la configuration de devscript. Voir "VARIABLES DE CONFIGURATION DE DEVSCRIPT".
  • --repack est configuré en ligne de commande. Voir <OPTIONS DE LIGNE DE COMMANDE>.
  • repack est configuré sur la ligne de veille de cette manière : opts="repack,...".
  • L'archive amont est de type zip, y compris jar, xpi, ...
  • L'archive amont est de type zstdi (Zstandard).
  • Les alinéas Files-Excluded ou Files-Excluded-composante sont configurés dans debian/copyright pour que mk-origtargz invoqué à partir d'uscan supprime les fichiers de l'archive amont et la rempaquette. Voir "EXEMPLES DE FICHIER DE COPYRIGHT" et mk-origtargz(1).
Forcer le rempaquetage de l'archive amont avec la méthode de compression.
Ajouter un suffixe à la version du paquet Debian amont seulement lorsque l'archive source est rempaquetée. Cette règle peut être utilisée seulement pour un unique paquet d'archive amont.
Configurer le mode de téléchargement de l'archive.
Il s'agit du mode par défaut qui télécharge l'archive spécifiée à partir de l'URL sur le web. La valeur interne mode est automatiquement mise à jour soit vers http soit vers ftp d'après l'URL.
Ce mode accède directement à l'archive git amont avec la commande git et empaquette l'arborescence source avec l'étiquette spécifiée par motif_correspondant dans spkg-version.tar.xz.

Si l'amont fournit l'archive publiée au travers de son interface web, veuillez utiliser celle-ci plutôt que ce mode. Ce mode est le dernier recours.

Dans le mode git, motif_correspondant spécifie le motif correspondant complet de la chaîne pour les étiquettes au lieu des références href. Si motif_correspondant est réglé à refs/tags/étiquette-motif_correspondant, uscan télécharge le fichier source à partir de refs/tags/étiquette-correspondante du dépôt git. La version amont est extraite en concaténant les parties correspondantes de ( ... ) avec .. Voir "EXEMPLES DE FICHIER DE VEILLE".

Si motif_correspondant est réglé à HEAD, uscan télécharge le fichier source à partir du HEAD du dépôt git et la version pertinente est automatiquement générée avec la date et l'empreinte du HEAD du dépôt git.

Si motif_correspondant est réglé à refs/heads/branche, uscan télécharge le fichier source à partir de la branche nommée du dépôt git.

Le dépôt local est créé temporairement comme un sous-répertoire de dépôt git brut du répertoire de destination où l'archive téléchargée est générée. Il est normalement effacé après l'exécution d'uscan. Ce dépôt local est conservé si l'option --debug est utilisée.

Si le répertoire courant est un dépôt git et si le dépôt recherché est listé dans les sources amont ("remote"), alors uscan l'utilisera au lieu de dupliquer le dépôt dans un répertoire temporaire. Le seul changement dans le répertoire local est une mise à jour ("fetch").

Ce mode accède directement à l'archive Subversion amont avec la commande svn et empaquette l'arborescence source.

Dans le mode svn, motif_correspondant spécifie le motif correspondant complet de la chaîne pour les répertoires su dépôt Subversion. La version amont est extraite en concaténant les parties correspondantes de ( ... ) avec ..

Si matching-pattern est réglé à HEAD, uscan télécharge la dernière arborescence de l'URL. La version amont est construite en ajoutant 0.0~svn à la dernière révision.

Comme la signature des commits n'est pas possible avec Subversion, pgpmode est mis d'office à none lorsque mode=svn. Les valeurs de pgpmode autres que default et none affichent des erreurs.

Configurer la chaîne de version amont à un format arbitraire comme un argument optionnel de opts quand le motif_correspondant est HEAD ou heads/branch pour le mode git. Pour connaître la syntaxe exacte, voir la page de manuel de git-log avec tformat. Le format par défaut est pretty=0.0~git%cd.%h. Aucune règle uversionmangle n'est applicable dans ce cas.

Lorsque pretty=describe est utilisé, la chaîne de version amont est la sortie de la commande "git describe --tags | sed s/-/./g"requi à la place. Par exemple, si l'envoi (commit) est le cinquième après la dernière étiquette v2.17.12 et son empreinte courte est ged992511, alors, la chaîne est v2.17.12.5.ged992511. Dans ce cas, c'est une bonne idée d'ajouter uversionmangle=s/^/0.0~/ ou uversionmangle=s/^v// pour rendre la chaîne de la version amont compatible avec Debian. uversionmangle=s/^v// peut aussi bien fonctionner. Veuillez noter qu'afin que pretty=describe fonctionne bien, l'amont doit éviter d'étiqueter avec des étiquettes alphabétiques aléatoires.

L'option pretty=describe contraint à configurer gitmode=full pour créer automatiquement un clone local complet du dépôt.

Configurer la chaîne de date utilisée par l'option pretty à un format arbitraire comme un paramètre optionnel de opts quand le motif_correspondant est HEAD ou heads/branch pour le mode git. Pour connaître la syntaxe exacte, voir la page de manuel strftime. Le format par défaut est date=%Y%m%d.
Indique le mode d'opération des exports d'archive git. La valeur par défaut est gitexport=default. Mettre ceci à gitexport=all pour inclure tous les fichiers dans l'archive .orig.tar, en ignorant tous les attributs git export-ignore définis par l'amont.

Cette option n'est valide qu'en mode "git".

Configurer le mode de l'opération git clone. La valeur par défaut est gitmode=shallow. Pour certains serveurs git simples ("dumb"), il peut être nécessaire de configurer soi-même la valeur gitmode=full pour imposer une opération de clonage complète.

Si le répertoire courant est un dépôt git et si le dépôt recherché est listé dans les sources amont ("remote"), alors uscan l'utilisera au lieu de dupliquer le dépôt dans un répertoire temporaire.

Configurer le mode de vérification de signature PGP/GPG.
uscan vérifie les URL possibles pour le fichier de signature et génère automatiquement une règle pgpsigurlmangle pour l'utiliser.
Utiliser pgpsigurlmangle=règles pour créer la chaîne d'URL du fichier de signature amont candidat à partir de l'URL de l'archive amont. (Par défaut)

Si le pgpsigurlmangle spécifié est manquant, uscan vérifie les URL possible pour le fichier de signature et suggère l'ajout d'une règle pgpsigurlmangle.

Utiliser pgpsigurlmangle=règles pour créer la chaîne d'URL du fichier de signature amont candidat à partir de l'URL de l'archive amont.
Vérifier ce fichier d'archive téléchargé avec le fichier de signature spécifié dans la ligne de veille suivante. La ligne de veille suivante doit être pgpmode=previous. Autrement, aucune vérification n'est effectuée.
Vérifier le fichier d'archive téléchargé spécifié dans la ligne de veille précédente avec ce fichier de signature. La ligne de veille précédente doit être pgpmode=next.
Vérifier le fichier toto.ext téléchargé avec sa propre signature et extraire son fichier archive de contenu en toto.
Vérifie la signature du tag si mode=git.
Pas de signature disponible. (Pas d'alerte.)
Configurer le mode de recherche.
C'est utile si le contenu de la page n'est pas au format HTML mais au format JSON. Exemple avec npmjs.com :

  version=4
  opts="searchmode=plain" \
   https://registry.npmjs.org/aes-js \
   https://registry.npmjs.org/aes-js/-/aes-js-(\d[\d\.]*)@ARCHIVE_EXT@
    
Décompresser l'archive compressée avant la vérification de la signature PGP/GPG.
Désactiver tout le code "special code" spécifique au site telles que les utilisations de redirecteur d'URL et les altérations de contenu de page. (Persistant)
Configurer la chaîne user-agent utilisée pour contacter le serveur HTTP(S) comme chaîne_user-agent. (Persistant)

L'option user-agent devrait être précisée par elle-même dans la ligne de veille sans URL, pour permettre l'utilisation de point-virgules et de virgules.

Utiliser le mode passif ("PASV") pour les connexions FTP.

Si le mode PASV (passif) est requis à cause de l'environnement réseau côté client, configurer uscan pour qu'il utilise le mode PASV avec les "OPTIONS DE LIGNE DE COMMANDE" ou plutôt avec les "VARIABLES DE CONFIGURATION DE DEVSCRIPT".

Ne pas utiliser le mode PASV (passif) pour les connexions FTP.
Ajouter les options supplémentaires à utiliser avec la commande unzip telles que -a, -aa et -b lors de l'exécution par mk-origtargz.
Normaliser la dernière chaîne de version amont trouvée dans debian/changelog pour la comparer avec la version de l'archive amont disponible. Le retrait de suffixes spécifiques à Debian tels que s/\+dfsg\d*$// est habituellement réalisé à ce moment là.

Il est également possible d'utiliser dversionmangle=auto, ce qui est exactement la même chose que dversionmangle=s/@DEB_EXT@//

Normaliser la chaîne du chemin du répertoire correspondant à l'expression rationnelle dans un ensemble de parenthèses de http://URL comme chaîns d'index de version triable. Cela est utilisé seulement comme l'index triable de chemin de répertoire.

Une substitution telle que s/PRE/~pre/; s/RC/~rc/ peut aider.

Normaliser la chaîne de page web téléchargée. (À n'utiliser qu'en cas de nécessité absolue. En général, l'étiquette g est requise pour ces règles.)

Cela est pratique si vous souhaitez accéder à Amazon AWS ou à des dépôts Subversion dans lesquels <a href="..."> n'est pas utilisé.

Normaliser les chaînes de version amont candidate extraites des références href dans le code source de la page web. Cela est utilisé comme l'index de tri de version lors de la sélection de la dernière version amont.

Une substitution telle que s/PRE/~pre/; s/RC/~rc/ peut aider.

Il s'agit d'un raccourci syntactique pour uversionmangle=règles,dversionmangle=règles
Convertir la chaîne des références href de l'archive amont sélectionnée de lachaîne hexadécimale encodée en pourcent vers la chaîne de l'URL normale décodée pour les sites web embrouillés. Seulement percent-encoding estdisponible et il est décodé avec la commande s/%([A-Fa-f\d]{2})/chr hex $1/eg.
Convertir la chaîne des références href de l'archive amont sélectionnée dans l'URL accessible des sites web embrouillés. L'exécution intervient après hrefdecode.
Générer le nom de fichier de l'archive amont à partir de la chaîne des références href sélectionnée si motif_correspondant peut extraire l'<uversion> de la dernière version amont à partir de la chaîne des références href sélectionnée. Autrement, générer le nom de fichier de l'archive amont à partir de la chaîne de l'URL complète et configurer l'<uversion> manquant à partir du nom de fichier de l'archive amont généré.

Sans cette option, le nom de fichier de l'archive amont par défaut est généré en prenant la dernière composante de l'URL et en retirant tout ce qui est après un "?" ou un "#".

Générer la chaîne d'URL du fichier de signature amont candidat à partir de l'URL de l'archive amont.
Générer la chaîne de version <oversion> de l'archive source <spkg><spkg>_<oversion>.orig.tar.gz à partir de <uversion>. Cela devrait être utilisé pour ajouter un suffixe tel que +dfsg1 à un paquet MUT.

Ici, les règles de manipulation appliquent les règles à la chaîne pertinente. De multiples règles peuvent être précisées dans une chaîne de règle de manipulation en créant une chaîne concaténée de chaque règle de manipulation séparée par des ; (point-virgule).

Les règles de manipulation ne peuvent pas comporter de ; (point-virgule), , (virgule) ni de " (guillemet double).

Chaque règle de manipulation se comporte comme si une commande Perl "$string =~ règle" était exécutée. Il y a quelques particularités notables.

Une règle peut seulement utiliser les opérations s, tr et y.
Rechercher la correspondance du motif d'expression rationnelle et remplacer la chaîne cible. Les étiquettes g, i et x sont les seules disponibles. Utiliser la syntaxe $1 pour des références arrières (pas de syntaxe \1). L'exécution de code n'est pas permise (c'est-à-dire pas de constructions (?{}) ou (??{})).
Translittérer les caractères de la chaîne cible.

EXEMPLE D'EXÉCUTION

uscan lit la première entrée dans debian/changelog pour déterminer le nom du paquet source et la dernière version amont.

Par exemple, si la première entrée de debian/changelog est :

titi (3:2.03+dfsg1-4) unstable; urgency=low

alors, le nom du paquet source est titi et la version la plus récente du paquet Debian est 3:2.03+dfsg1-4.

La dernière version amont est normalisée à 2.03+dfsg1 en retirant l'epoch et la révision Debian.

Si la règle dversionmangle existe, la dernière version amont est normalisée plus profondément en lui appliquant cette règle. Par exemple, si la dernière version amont est 2.03+dfsg1 indiquant que l'archive source a été rempaquetée, le suffixe +dfsg1 est retiré par la substitution de chaîne s/\+dfsg\d*$// pour produire la dernière version amont 2.03 (traitée avec dversionmangle) et est comparée aux versions d'archive amont candidates comme 2.03, 2.04, ..., qui se trouvent sur le site distant. Donc, configurer la règle ainsi :

opts="dversionmangle=s/\+dfsg\d*$//"

uscan télécharge une page web à partir de l'adresse http://URL spécifiée dans debian/watch.

  • Si la partie nom du répertoire de l'URL n'a pas de parenthèse, ( et ), il est pris tel quel.
  • Si la partie nom du répertoire de l'URL a des parenthèses ( et ), alors uscan cherche de façon récursive tous les répertoires possibles pour trouver une page avec la nouvelle version. Si la règle dirversionmangle existe, l'index de tri généré est utilisé pour trouver la version la plus récente. Si une version particulière est spécifiée pour le téléchargement, la chaîne de version correspondante a la priorité sur la version la plus récente.

Par exemple, cette adresse http://URL peut être spécifiée ainsi :

http://www.example.org/@ANY_VERSION@/

Veuillez noter le / final dans l'adresse ci-dessus pour faire de @ANY_VERSION@ le répertoire.

Si la règle pagemangle existe, la totalité de la page web téléchargée, considérée comme une chaîne, est normalisée en y appliquant la règle. C'est un outil très puissant qui doit être utilisé avec prudence. Si d'autres règles de manipulation peuvent être utilisées pour répondre à vos objectifs, n'utilisez pas cette règle.

Des références href, définies dans l'étiquette <a href=" ... ">, sont recherchées dans la page web téléchargée pour localiser les références de l'archive amont candidate. Ces références de l'archive amont candidate sont sélectionnées par le motif d'expression rationnelle Perl motif-correspondant, tel que DL-(?:[\d\.]+?)/toto-(.+)\.tar\.gz pour réduire le nombre de candidates. Ce motif de sélection doit être borné au début et à la fin. Par exemple, les références candidates peuvent être :

  • DL-2.02/toto-2.02.tar.gz
  • DL-2.03/toto-2.03.tar.gz
  • DL-2.04/toto-2.04.tar.gz

Ici, la chaîne de sélection (.+) dans motif-correspondant est considérée comme la version amont candidate. S'il y a plusieurs chaînes correspondantes de motifs de capture dans motif-correspondant, elles sont toutes concaténées avec un point (.) pour former la version amont candidate. Il convient de s'assurer d'utiliser des expressions rationnelles non capturantes telles que (?:[\d\.]+?) à la place pour la partie correspondant à du texte variable sans rapport avec la version.

Les versions amont candidates sont alors :

  • 2.02
  • 2.03
  • 2.04

Le nom de fichier de l'archive téléchargée est simplement fixé comme le nom de fichier dans l'URL distante de la référence href sélectionnée.

Si la règle <uversionmangle> existe, les versions amont candidates sont normalisées en leur appliquant cette règle. (Cette règle peut être utilisée si le schéma de la version amont ne permet pas un tri qui identifie correctement la version la plus récente.)

La référence href de l'archive amont correspondant à la version amont candidate la plus récente (traitée par uversionmangle), plus récente que la dernière version amont (traitée par dversionmangle) est sélectionnée.

Si plusieurs références href d'archive amont correspondant à une version unique existent avec différentes extensions, c'est la plus forte compression qui est choisie. (Ordre de priorité : tar.xz > tar.lzma > tar.bz2 > tar.gz.)

Si la référence href de l'archive amont sélectionnée est une URL relative, elle est convertie en URL absolue avec l'URL de base de la page web. Si l'étiquette <base href=" ... "> existe sur la page web, la référence href de l'archive amont est convertie en URL absolue en utilisant plutôt l'URL de base spécifiée dans l'étiquette de base.

Si la règle downloadurlmangle existe, la référence href de l'archive amont sélectionnée est normalisée en lui appliquant cette règle. (Cela est utile sur certains sites avec des URL de téléchargement embrouillées.)

Si la règle filenamemangle existe, le nom de fichier d'archive téléchargé est généré en appliquant cette règle à la référence href sélectionnée si le motif-correspondant peut extraire la dernière version amont <uversion> à partir de la chaîne de la référence href sélectionnée. Autrement, le nom de fichier d'archive amont est généré à partir de sa chaîne d'URL complète et règle le <uversion> manquant à partir du nom de fichier d'archive amont généré.

En absence de règle filenamemangle, le nom de fichier d'archive amont par défaut est généré en prenant la dernière composante de l'URL et en retirant tout ce qu'il y a après un "?" ou un "#".

uscan télécharge l'archive amont sélectionnée dans le répertoire parent ../. Par exemple, le fichier téléchargé peut être :

../toto-2.04.tar.gz

De façon générique, nous appellerons par la suite cette version 2.04 téléchargée dans l'exemple ci-dessus sous le nom de <uversion>.

Si la règle pgpsigurlmangle existe, l'URL du fichier de signature amont est générée en appliquant cette règle à la référence href de l'archive amont sélectionnée (traitée par downloadurlmangle) et on tente de télécharger le fichier de signature à partir de cette URL.

Si la règle pgpsigurlmangle n'existe pas, uscan prévient l'utilisateur si le fichier de signature amont correspondant est disponible à partir de la même URL, en ajoutant à son nom de fichier les cinq suffixes courants asc, gpg, pgp, sig et sign. (On peut éviter cet avertissement avec le réglage pgpmode=none.)

Si le fichier de signature est téléchargé, l'authenticité de l'archive amont téléchargée est vérifiée par rapport au fichier de signature téléchargé en utilisant le trousseau blindé debian/upstream/signing-key.asc. (Voir "EXEMPLES DE FICHIER DE TROUSSEAU"). Si la signature n’est pas valable, ou si la clef ne fait pas partie du trousseau, uscan signalera une erreur.

Si la règle oversionmangle existe, la version d'archive source oversion est générée à partir de la version amont téléchargée uversion en appliquant cette règle. Elle est utile pour ajouter un suffixe tel que +dfsg1 à la version de tous les paquets source du paquet MUT pour lequel le mécanisme de suffixe de rempaquetage ne fonctionne pas.

uscan invoque mk-origtargz pour créer l'archive source nommée correctement pour le paquet source avec .orig. (ou .orig-<component>. pour les archives secondaires) dans son nom de fichier.

mk-origtargz crée un lien symbolique ../titi_<oversion>.orig.tar.gz avec l'archive locale amont téléchargée. Ici, << titi >> est le nom du paquet source trouvé dans debian/changelog. Le lien symbolique généré peut être :
../titi_2.04.orig.tar.gz -> toto-2.04.tar.gz (tel quel)

Habituellement, il n'y a pas besoin de paramétrer opts="dversionmangle= ... " dans ce cas.

mk-origtargz vérifie le motif générique ("glob") des noms de fichiers du paragraphe Files-Excluded dans la première section de debian/copyright, retire les fichiers correspondants pour créer une archive amont rempaquetée. Normalement, l'archive amont rempaquetée est renommée en ../bar_<oversion><suffixe>.orig.tar.gz avec suffixe, utilisant l'option repacksuffix pour le seul paquet amont. Ici, <oversion> est mis à jour en <oversion><suffixe>.

Le retrait des fichiers est requis si les fichiers ne sont pas compatibles avec DFSG. Dans ce cas, +dfsg1 est utilisé comme suffixe.

Alors, les options sont plutôt ainsi combinées opts="dversionmangle=s/\+dfsg\d*$// , repacksuffix=+dfsg1".

Par exemple, l'archive amont rempaquetée peut être :

../titi_2.04+dfsg1.orig.tar.gz (rempaqueté)

uscan invoque normalement "uupdate --find --upstream-version oversion" pour le fichier de veille version=4.

Veuillez noter que l'option --find est ici utilisée dans la mesure où mk-origtargz a déjà été invoquée pour construire le fichier *.orig.tar.gz. uscan choisit bar à partir de debian/changelog.

Il crée la nouvelle arborescence source amont sous le répertoire ../bar-<oversion> et l'adapte à Debian en exploitant le contenu du dernier paquet.

EXEMPLES DE FICHIER DE VEILLE

Lors de l'écriture du fichier de veille, vous devriez vous servir de la dernière page d’annonce web de la source amont. Vous ne devriez pas, si possible, essayer de deviner la structure de l'archive amont. Voici des fichiers debian/watch typiques.

Veuillez noter que l'exécution de uscan avec -v ou -vv révèlece qui se passe précisément en interne.

L'existence ou l'absence d'une espace avant le \ ("back slash") final est significatif.

Certaines chaînes de configuration plus courtes non documentées sont utilisées dans les EXEMPLES ci-dessous pour faciliter votre saisie. Elles sont intentionnelles. uscan est écrit pour accepter de tellesabréviations de bon sens, mais il ne faut pas exagérer.

Site HTTP (de base)

Voici un exemple d'archive amont simple basique.

  version=4
  http://example.com/~user/release/@PACKAGE@.html \
      files/@PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@

Ou sans utiliser les chaînes de substitution (non recommandé):
http://example.com/~user/release/foo.html \
files/foo-([\d\.]+)\.tar\.gz

  version=4

Pour le paquet source amont toto-2.0.tar.gz, ce fichier de veille télécharge et crée le fichier orig.tar Debian toto_2.0.orig.tar.gz.

Site HTTP (pgpsigurlmangle)

Voici un exemple d'archive amont simple de base avec le fichier de signature correspondant dans le même chemin de fichier.

  version=4
  opts="pgpsigurlmangle=s%$%.asc%" http://example.com/release/@PACKAGE@.html \
      files/@PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@

Pour le paquet source amont toto-2.0.tar.gz et le fichier de signature amont toto-2.0.tar.gz.asc, ce fichier de veille télécharge ces fichiers, vérifie l'authenticité avec le trousseau debian/upstream/signing-key.asc et crée le fichier orig.tar Debian toto_2.0.orig.tar.gz.

Voici un autre exemple d'archive amont simple de base avec le fichier de signature correspondant sur l'archive décompressée dans le même chemin de fichier.

  version=4
  opts="pgpsigurlmangle=s%@ARCHIVE_EXT@$%.asc%,decompress" \
      http://example.com/release/@PACKAGE@.html \
      files/@PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@

Pour le paquet source amont toto-2.0.tar.gz et le fichier de signature amont toto-2.0.tar.asc, ce fichier de veille télécharge ces fichiers, vérifie l'authenticité avec le trousseau debian/upstream/signing-key.asc et crée le fichier orig.tar Debian toto_2.0.orig.tar.gz.

Site HTTP (pgpmode = next/previous)

Voici un exemple d'archive amont simple basique avec le fichier de signature correspondant dans un chemin de fichier indépendant.

  version=4
  opts="pgpmode=next" http://example.com/release/@PACKAGE@.html \
      files/(?:\d+)/@PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@ debian
  opts="pgpmode=previous" http://example.com/release/@PACKAGE@.html \
      files/(?:\d+)/@PACKAGE@@ANY_VERSION@@SIGNATURE_EXT@ previous

La partie (?:\d+) peut être une valeur aléatoire. Le fichier d'archive peut avoir la valeur 53, alors que le fichier de signature peut avoir la valeur 33.

La partie ([\d\.]+) pour le fichier de signature est soumise à l'exigence stricte de correspondre à cela pour l'archive amont spécifiée dans la ligne précédente en ayant previous comme version dans la ligne de veille.

Site HTTP (flexible)

Voici un exemple pour une extrême flexibilité des extensions de l'archive amont et du fichier de signature.

  version=4
  opts="pgpmode=next" http://example.com/DL/ \
      files/(?:\d+)/@PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@ debian
  opts="pgpmode=previous" http://example.com/DL/ \
      files/(?:\d+)/@PACKAGE@@ANY_VERSION@@SIGNATURE_EXT@ \
      previous

Site HTTP (MUT de base)

Voici un exemple pour les archives amont multiples de base.

  version=4
  opts="pgpsigurlmangle=s%$%.sig%" \
      http://example.com/release/foo.html \
      files/foo-@ANY_VERSION@@ARCHIVE_EXT@ debian
  opts="pgpsigurlmangle=s%$%.sig%, component=bar" \
      http://example.com/release/foo.html \
      files/foobar-@ANY_VERSION@@ARCHIVE_EXT@ same
  opts="pgpsigurlmangle=s%$%.sig%, component=baz" \
      http://example.com/release/foo.html \
      files/foobaz-@ANY_VERSION@@ARCHIVE_EXT@ same

Pour le paquet source amont principal toto-2.0.tar.gz et les paquets source amont secondaires tototiti-2.0.tar.gz et tototitiz-2.0.tar.gz qui installent dans les répertoires titi/ and titiz/, ce fichier de veille télécharge et crée le fichier Debian orig.tar, toto_2.0.orig.tar.gz, toto_2.0.orig-titi.tar.gz et toto_2.0.orig-titiz.tar.gz. Les fichiers de signature de ces archives amont sont aussi vérifiées.

Site HTTP (recherche récursive de répertoire)

Voici un exemple avec recherche récursive de répertoire de l'archive amont et de ses fichiers de signature publiés dans un répertoire nommé d'après leur version.

  version=4
  opts="pgpsigurlmangle=s%$%.sig%, dirversionmangle=s/-PRE/~pre/;s/-RC/~rc/" \
      http://tmrc.mit.edu/mirror/twisted/Twisted/@ANY_VERSION@/ \
      Twisted-@ANY_VERSION@@ARCHIVE_EXT@

Ici, le site web devrait être accessible à l'URL suivante :

  http://tmrc.mit.edu/mirror/twisted/Twisted/

Ici, l'option dirversionmangle est utilisée pour normaliser l'ordre de tri des noms de répertoire.

Site HTTP (raccourci alternatif)

Pour le site HTTP simple où il est possible de voir directement les noms de fichiers de l'archive, le fichier de veille normal :

  version=4
  opts="pgpsigurlmangle=s%$%.sig%" \
      http://www.cpan.org/modules/by-module/Text/ \
      Text-CSV_XS-@ANY_VERSION@@ARCHIVE_EXT@

peut être réécrit dans une forme raccourcie alternative avec une seule chaîne englobant l'URL et le nom de fichier :

  version=4
  opts="pgpsigurlmangle=s%$%.sig%" \
      http://www.cpan.org/modules/by-module/Text/Text-CSV_XS-@ANY_VERSION@@ARCHIVE_EXT@

Dans version=4, les espaces blancs initiaux sont retirés. Donc, cette forme raccourcie alternative peut aussi être écrite ainsi :

  version=4
  opts="pgpsigurlmangle=s%$%.sig%" \
      http://www.cpan.org/modules/by-module/Text/\
      Text-CSV_XS-@ANY_VERSION@@ARCHIVE_EXT@

Veuillez noter la légère différence d'une espace avant le \ final entre le premier et le dernier exemple.

Site HTTP (version exotique)

Pour un site qui possède des numéros de version exotiques, les groupes entre parenthèses devront être joints par des points (.) pour créer un numéro de version sain.

  version=4
  http://www.site.com/pub/foobar/foobar_v(\d+)_(\d+)@ARCHIVE_EXT@

Site HTTP (DFSG)

La partie amont du numéro de version Debian peut être modifiée pour indiquer que le paquet source a été rempaqueté pour retirer les fichiers non-DFSG :

  version=4
  opts="dversionmangle=s/\+dfsg\d*$//,repacksuffix=+dfsg1" \
  http://some.site.org/some/path/foobar-@ANY_VERSION@@ARCHIVE_EXT@

Voir "EXEMPLES DE FICHIER DE COPYRIGHT".

Site HTTP (filenamemangle)

Le nom de fichier de l'archive amont est découvert en prenant le dernier composant de l'URL et en retirant tout ce qui se trouve après un "?" ou un "#".

Si cela ne vous convient pas, utiliser filenamemangle. Par exemple, <A href="http://toto.titi.org/dl/?path=&dl=foo-0.1.1.tar.gz"> peut être traité ainsi :

  version=4
  opts=filenamemangle=s/.*=(.*)/$1/ \
  http://foo.bar.org/dl/\?path=&dl=foo-@ANY_VERSION@@ARCHIVE_EXT@

<A href="http://toto.titi.org/dl/?path=&dl_version=0.1.1"> peut être géré comme ceci :

  version=4
  opts=filenamemangle=s/.*=(.*)/foo-$1\.tar\.gz/ \
  http://foo.bar.org/dl/\?path=&dl_version=@ANY_VERSION@

Si la chaîne de référence href n'a pas de version utilisant <I>motif-correspondant>, la version peut être obtenue à partir de l'URL complète avec filenamemangle.

  version=4
  opts=filenamemangle=s&.*/dl/(.*)/foo\.tar\.gz&foo-$1\.tar\.gz& \
  http://foo.bar.org/dl/@ANY_VERSION@/ foo.tar.gz

Site HTTP (downloadurlmangle)

L'option downloadurlmangle peut être utilisée pour modifier l'URL du fichier à télécharger. Cela ne peut être utilisé qu'avec des URL http:// et peut être nécessaire si le lien donné sur la page web doit être transformé de manière à ce que cela fonctionne automatiquement, par exemple :

  version=4
  opts=downloadurlmangle=s/prdownload/download/ \
  http://developer.berlios.de/project/showfiles.php?group_id=2051 \
  http://prdownload.berlios.de/softdevice/vdr-softdevice-@ANY_VERSION@@ARCHIVE_EXT@

Site HTTP (oversionmangle, MUT)

L'option oversionmangle peut être utilisée pour manipuler la version de l'archive source (.orig.tar.gz et .orig-bar.tar.gz). Par exemple, +dfsg1 peut être ajouté à la version amont comme ceci :

  version=4
  opts=oversionmangle=s/(.*)/$1+dfsg1/ \
  http://example.com/~user/release/foo.html \
  files/foo-@ANY_VERSION@@ARCHIVE_EXT@ debian
  opts="component=bar" \
  http://example.com/~user/release/foo.html \
  files/bar-@ANY_VERSION@@ARCHIVE_EXT@ same

Voir "EXEMPLES DE FICHIER DE COPYRIGHT".

Site HTTP (pagemangle)

L'option pagemangle peut être utilisée pour modifier la page web téléchargée avant d'appliquer d'autres règles. Une page web non standard sans entrées <a href=" << ... >> "> correctes peut être convertie. Par exemple, si toto.html utilise <un faux site=" ... ">, la conversion vers un format de page standard peut être réalisée avec :

  version=4
  opts=pagemangle="s/<a\s+bogus=/<a href=/g" \
  http://example.com/release/foo.html \
  files/@PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@

Veuillez notez ici l'utilisation de g pour remplacer toutes les occurrences.

Si toto.html utilise <Key> ... </Key>, la conversion vers un format de page standard peut être réalisée avec :

  version=4
  opts="pagemangle=s%<Key>([^<]*)</Key>%<Key><a href="$1">$1</a></Key>%g" \
  http://example.com/release/foo.html \
  (?:.*)/@PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@

Site FTP (de base) :

  version=4
  ftp://ftp.tex.ac.uk/tex-archive/web/c_cpp/cweb/cweb-@ANY_VERSION@@ARCHIVE_EXT@

Site FTP (expressions rationnelles) :

  version=4
  ftp://ftp.worldforge.org/pub/worldforge/libs/\
  Atlas-C++/transitional/Atlas-C\+\+-@ANY_VERSION@@ARCHIVE_EXT@

Veuillez noter que cette URL est connectée pour être ... libs/Atlas-C++/ ... . Pour les ++, le premier dans le chemin du répertoire est verbatim, tandis que celui qui est dans le nom de fichier est protégé par \.

Site FTP (version exotique)

Voici une autre manière pour des sites ayant des numéros de version bizarres, en effectuant une modification cette fois. (Remarquez que plusieurs groupes seront concaténés avant d'effectuer la modification, et que les modifications ne seront effectuées que sur le numéro de version de base, et pas dans les numéros de versions contenus dans les chemins.)

  version=4
  opts="uversionmangle=s/^/0.0./" \
  ftp://ftp.ibiblio.org/pub/Linux/ALPHA/wine/\
  development/Wine-@ANY_VERSION@@ARCHIVE_EXT@

sf.net

Pour les projets hébergés sur SourceForge, qa.debian.org fournit un redirecteur qui permet une forme plus simple d'URL. Le format ci-dessous sera automatiquement réécrit pour utiliser le redirecteur avec le fichier de veille :

  version=4
  https://sf.net/<project>/ <tar-name>-@ANY_VERSION@@ARCHIVE_EXT@

Pour audacity, configurer le fichier de veille ainsi :

  version=4
  https://sf.net/audacity/ audacity-minsrc-@ANY_VERSION@@ARCHIVE_EXT@

Veuillez noter, qu'il est encore possible d'utiliser les fonctionnalités normales de uscan pour configurer un fichier de veille pour ce site sans utiliser le redirecteur.

  version=4
  opts="uversionmangle=s/-pre/~pre/, \
    filenamemangle=s%(?:.*)audacity-minsrc-(.+)\.tar\.xz/download%\
                         audacity-$1.tar.xz%" \
    http://sourceforge.net/projects/audacity/files/audacity/@ANY_VERSION@/ \
    (?:.*)audacity-minsrc-@ANY_VERSION@@ARCHIVE_EXT@/download

Ici, % est utilisé comme séparateur à la place du / standard.

github.com

Pour les projets hébergés sur GitHub, il est possible d'utiliser la page d'étiquettes ou de versions. L’URL de l’archive utilise seulement la version comme nom de fichier. Il est possible renommer l'archive amont téléchargée au format standard <project>-<version>.tar.gz avec filenamemangle :

  version=4
  opts="filenamemangle=s%(?:.*?)?v?(\d[\d.]*@ARCHIVE_EXT@)%@PACKAGE@-$1%" \
      https://github.com/<user>/<project>/tags \
      (?:.*?/)?v?@ANY_VERSION@@ARCHIVE_EXT@

PyPI

Pour les projets hébergés sur PyPI, pypi.debian.net fournit un redirecteur qui permet une forme plus simple d'URL. Le format ci-dessous sera automatiquement réécrit pour utiliser le redirecteur avec le fichier de veille :

  version=4
  https://pypi.python.org/packages/source/<initial>/<project>/ \
      <tar-name>-@ANY_VERSION@@ARCHIVE_EXT@

Pour cfn-sphere, configurer le fichier ainsi :

  version=4
  https://pypi.python.org/packages/source/c/cfn-sphere/ \
      cfn-sphere-@ANY_VERSION@@ARCHIVE_EXT@

Veuillez noter, qu'il est encore possible d'utiliser les fonctionnalités normales de uscan pour configurer un fichier de veille pour ce site sans utiliser le redirecteur.

  version=4
  opts="pgpmode=none" \
      https://pypi.python.org/pypi/cfn-sphere/ \
      https://pypi.python.org/packages/.*/.*/.*/\
      cfn-sphere-@ANY_VERSION@@ARCHIVE_EXT@#.*

code.google.com

Les sites habituellement hébergés sur le service Google Code devraient avoir migré ailleurs (github ?). Veuillez rechercher les sites amont les plus récents s'ils sont disponibles.

npmjs.org (modules Node)

Les modules npmjs.org sont publiés au format JSON. Voici un moyen de les lire :

  version=4
  opts="searchmode=plain" \
   https://registry.npmjs.org/aes-js \
   https://registry.npmjs.org/aes-js/-/aes-js-@ANY_VERSION@@ARCHIVE_EXT@

paquet groupé

Certains modules Node sont découpés en de multiples petits paquets. Voici un moyen de les grouper :

  version=4
  opts="searchmode=plain,pgpmode=none" \
    https://registry.npmjs.org/mongodb \
    https://registry.npmjs.org/mongodb/-/mongodb-@ANY_VERSION@@ARCHIVE_EXT@ group
  opts="searchmode=plain,pgpmode=none,component=bson" \
    https://registry.npmjs.org/bson \
    https://registry.npmjs.org/bson/-/bson-@ANY_VERSION@@ARCHIVE_EXT@ group
  opts="searchmode=plain,pgpmode=none,component=mongodb-core" \
    https://registry.npmjs.org/mongodb-core \
    https://registry.npmjs.org/mongodb-core/-/mongodb-core-@ANY_VERSION@@ARCHIVE_EXT@ group
  opts="searchmode=plain,pgpmode=none,component=requireoptional" \
    https://registry.npmjs.org/require_optional \
    https://registry.npmjs.org/require_optional/-/require_optional-@ANY_VERSION@@ARCHIVE_EXT@ group

La version du paquet est alors la concaténation des versions amont séparées par "+~".

Pour éviter d'avoir un trop long numéro de version, la méthode "checksum" peut être utilisée. Dans ce cas la principale source doit être déclarée comme "group" :

  version=4
  opts="searchmode=plain,pgpmode=none" \
    https://registry.npmjs.org/mongodb \
    https://registry.npmjs.org/mongodb/-/mongodb-@ANY_VERSION@@ARCHIVE_EXT@ group
  opts="searchmode=plain,pgpmode=none,component=bson" \
    https://registry.npmjs.org/bson \
    https://registry.npmjs.org/bson/-/bson-@ANY_VERSION@@ARCHIVE_EXT@ checksum
  opts="searchmode=plain,pgpmode=none,component=mongodb-core" \
    https://registry.npmjs.org/mongodb-core \
    https://registry.npmjs.org/mongodb-core/-/mongodb-core-@ANY_VERSION@@ARCHIVE_EXT@ checksum
  opts="searchmode=plain,pgpmode=none,component=requireoptional" \
    https://registry.npmjs.org/require_optional \
    https://registry.npmjs.org/require_optional/-/require_optional-@ANY_VERSION@@ARCHIVE_EXT@ checksum

Le "checksum" est composé des sommes séparées de chaque chiffre composant la version des composants. Ci-dessous un exemple avec 3 composants dont les versions respectives sont : "1.2.4", "2.0.1" et "10.0", et la version de la source principale "2.0.6" :

  Main: 2.0.6
  Comp1:         1 .     2 .     4
  Comp2:         2 .     0 .     1
  Comp3:        10 .     0
  ================================
  Result  : 1+2+10 . 2+0+0 .   4+1
  Checksum:     13 .     2 .     5
  ================================
  Final Version:   2.0.6+~cs13.2.5

uscan affichera également la chaîne de version originale avant encodage en checksum, ce qui peut être utilisé par exemple dans une entrée de debian/changelog pour suivre facilement les changements :

  2.0.6+~1.2.4+~2.0.1+~10.0

Note: cette fonctionnalité n'accepte actuellement que les versions composées exclusivement de chiffres et de points (".").

accès direct au dépôt git (étiquettes)

Si l'équipe amont ne publie son code que dans un dépôt git et que son code n'a pas d'interface web pour obtenir l'archive publiée, il est possible d'utiliser uscan avec les étiquettes du dépôt git pour suivre et empaqueter la nouvelle publication amont.

  version=4
  opts="mode=git, gitmode=full, pgpmode=none" \
  http://git.ao2.it/tweeper.git \
  refs/tags/v@ANY_VERSION@

Veuillez noter que "git ls-remote" est utilisé pour obtenir les références des étiquettes.

Si l'étiquette v20.5 est l'étiquette la plus récente, l'exemple ci-dessus télécharge spkg-20.5.tar.xz après avoir fait un clone complet du dépôt git nécessaire au serveur git simple.

Si les tags sont signés, utiliser pgpmode=gittag pour les vérifier.

accès direct au dépôt git (HEAD)

Si l'équipe amont ne publie son code que dans un dépôt git et que son code n'a pas d'interface web ni les étiquettes pour obtenir l'archive publiée, il est possible d'utiliser uscan avec le HEAD du dépôt git pour suivre et empaqueter la nouvelle publication amont avec une chaîne de version générée automatiquement.

  version=4
  opts="mode=git, pgpmode=none" \
  https://github.com/Debian/dh-make-golang \
  HEAD

Veuillez noter qu'une copie superficielle locale du dépôt git est réalisée avec la commande "git clone --bare --depth=1 ..." normalement dans le répertoire cible. uscan génère la nouvelle version amont avec "git log --date=%Y%m%d --pretty=0.0~git%cd.%h" sur cette copie locale du dépôt, comme comportement par défaut.

La création de la chaîne de version amont peut être ajustée à votre goût en ajoutant les options pretty et date aux arguments de opts.

accès direct au dépôt Subversion (étiquettes)

Si l'équipe amont ne publie son code que dans un dépôt Subversion et que son code n'a pas d'interface web pour obtenir l'archive publiée, il est possible d'utiliser uscan avec les étiquettes du dépôt Subversion pour suivre et empaqueter la nouvelle publication amont.

  version=4
  opts="mode=svn, pgpmode=none" \
  svn://svn.code.sf.net/p/jmol/code/tags/ \
  @ANY_VERSION@\/

accès direct au dépôt Subversion (HEAD)

Si l'équipe amont ne publie son code que dans un dépôt Subversion et que son code n'a pas d'interface web ni les étiquettes pour obtenir l'archive publiée, il est possible d'utiliser uscan pour obtenir les dernières sources d'une sous-arborescence avec une chaîne de version générée automatiquement.

  version=4
  opts="mode=svn, pgpmode=none" \
  svn://svn.code.sf.net/p/jmol/code/trunk/ \
  HEAD

Par défaut, uscan génère la nouvelle version en ajoutant "0.0~svn" au numéro de révision. Ce peut être changé en utilisant uversionmangle.

EXEMPLES DE FICHIER DE COPYRIGHT

Voici un exemple de fichier debian/copyright qui déclenche le rempaquetage automatique de l'archive amont en <spkg>_<oversion>.orig.tar.gz (dans debian/copyright, les alinéas Files-Excluded et Files-Excluded-component font partie du premier paragraphe et il existe un ligne vide avant les paragraphes suivants qui contiennent Files et d'autres alinéas.) :

  Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
  Files-Excluded: exclude-this
   exclude-dir
   */exclude-dir
   .*
   */js/jquery.js
   Files: *
   Copyright: ...
   ...

Voici un autre exemple de fichier debian/copyright qui déclenche le rempaquetage automatique d'archives amont multiples en <spkg>_<oversion>.orig.tar.gz et <spkg>_<oversion>.orig-bar.tar.gz:

  Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
  Files-Excluded: exclude-this
   exclude-dir
   */exclude-dir
   .*
   */js/jquery.js
  Files-Excluded-bar: exclude-this
   exclude-dir
   */exclude-dir
   .*
   */js/jquery.js
   Files: *
   Copyright: ...
   ...

Voir mk-origtargz(1).

EXEMPLES DE FICHIER DE TROUSSEAU

Supposons que la "clef de test d'uscan (non secrète) <none@debian.org>" amont signe son paquet avec une clef secrète OpenPGP et publie la clef publique OpenPGP correspondante. Cette clef publique OpenPGP peut être identifiée de trois façons différentes avec sa forme hexadécimale.

  • L'empreinte sous la forme des 20 octets de données calculés à partir de la clef publique OpenPGP. Par exemple "CF21 8F0E 7EAB F584 B7E2 0402 C77E 2D68 7254 3FAF
  • L'identificateur long " long keyid") sous la forme des 8 derniers octets de données de l'empreinte. Par exemple, "C77E2D6872543FAF"
  • L'identificateur court ("short keyid") sous la forme des 4 derniers octets de données de l'empreinte. Par exemple, "72543FAF"

Compte tenu de l'existence des attaques par collisions sur les identificateurs courts, il est recommandé d'utiliser l'identificateur long pour recevoir des clefs à partir des serveurs de clefs publiques. Vous devez vérifier la clef OpenPGP téléchargée en utilisant la valeur de son empreinte complète dont vous savez qu'elle est sûre.

Le fichier de trousseau blindé debian/upstream/signing-key.asc peut être créé en utilisant la commande gpg (ou gpg2) comme suit.

  $ gpg --recv-keys "C77E2D6872543FAF"
  ...
  $ gpg --finger "C77E2D6872543FAF"
  pub   4096R/72543FAF 2015-09-02
        Key fingerprint = CF21 8F0E 7EAB F584 B7E2  0402 C77E 2D68 7254 3FAF
  uid                  uscan test key (no secret) <none@debian.org>
  sub   4096R/52C6ED39 2015-09-02
  $ cd chemin/vers/<upkg>-<uversion>
  $ mkdir -p debian/upstream
  $ gpg --export --export-options export-minimal --armor \
        'CF21 8F0E 7EAB F584 B7E2  0402 C77E 2D68 7254 3FAF' \
        >debian/upstream/signing-key.asc

Les fichiers de trousseau binaires, debian/upstream/signing-key.pgp et debian/upstream-signing-key.pgp, sont encore gérés, mais ils sont obsolètes.

Si un groupe de développeurs signe le paquet, il faut la liste des empreintes de chacun d'entre eux dans le paramètre pour gpg --export ... afin que le trousseau contienne toutes leurs clefs OpenPGP.

Parfois, on se demande qui a créé le fichier de signature. Il est possible d'obtenir l’identificateur de la clef publique utilisé pour créer le fichier de signature séparé toto-2.0.tar.gz.asc en exécutant gpg ainsi :

  $ gpg -vv toto-2.0.tar.gz.asc
  gpg: armor: BEGIN PGP SIGNATURE
  gpg: armor header: Version: GnuPG v1
  :signature packet: algo 1, keyid C77E2D6872543FAF
        version 4, created 1445177469, md5len 0, sigclass 0x00
        digest algo 2, begin of digest 7a c7
        hashed subpkt 2 len 4 (sig created 2015-10-18)
        subpkt 16 len 8 (issuer key ID C77E2D6872543FAF)
        data: [4091 bits]
  gpg: assuming signed data in `toto-2.0.tar.gz'
  gpg: Signature made Sun 18 Oct 2015 11:11:09 PM JST using RSA key ID 72543FAF
  ...

OPTIONS DE LIGNE DE COMMANDE

Pour un usage basique d'uscan, la configuration de ces options n'est pas nécessaire.

Ajoute ou remplace les fichiers de configuration par défaut ("/etc/devscripts.conf" and "~/.devscripts"). L'option ne peut être utilisée qu'en première position de la ligne de commande.
  uscan --conf-file test.conf --verbose
    
  uscan --conf-file +test.conf --verbose
    

Si l'un des --conf-file ne contient pas de "+", les fichiers de configuration par défaut sont ignorés.

Ne lire aucun fichier de configuration. L'option ne peut être utilisée qu'en première position de la ligne de commande.
Ne pas rapporter d'informations verbeuses. (Par défaut).
Rapporter des informations verbeuses.
Rapporter des informations verbeuses et les valeurs de certains états internes.
Rapporter des informations verbeuses y compris les pages web téléchargées traitées sur la sortie d'erreur standard pour débogage.
Envoyer la sortie de style DEHS (type XML) sur la sortie standard, tout en envoyant toutes les autres sorties de uscan sur la sortie d'erreur standard.
Utiliser seulement le format de sortie traditionnel de uscan. (Par défaut)
Télécharger la nouvelle version amont. (Par défaut)
Télécharger la nouvelle version amont même si elle est à jour (peut ne pas écraser les fichiers locaux).
Télécharger le fichier amont même si le paquet est à jour (peut écraser les fichiers locaux).
Ne pas télécharger ni rapporter d'information.

Des archives précédemment téléchargées peuvent être utilisées.

Passage du comportement par défaut à --skip-signature.

Télécharger la signature. (Par défaut)
Ne pas télécharger la signature, mais vérifier si elle a déjà été téléchargée.
Ne pas s'occuper de télécharger ni de vérifier la signature.
Éviter l'exécution de scripts non sécurisés en sautant à la fois le rempaquetage du paquet téléchargé et la mise à jour de l'arborescence de la nouvelle source.

Passage du comportement par défaut à --no-download et --skip-signature.

Quand l'objectif de l'exécution de uscan est de recueillir l'état du paquet amont sous un environnement conscient de la sécurité, veuillez vous assurer d'utiliser cette option.

Équivaut à utiliser l'option --verbose --safe.
Indiquer la version à laquelle la version amont doit correspondre pour être prise en compte, plutôt qu'utiliser celle avec le numéro de version le plus important. (fonctionnalité optimale)
Préciser la version du paquet Debian dont il faut télécharger la version amont correspondante. Les règles dversionmangle et uversionmangle sont prises en compte. (fonctionnalité optimale)
Télécharger la version actuelle du paquet. (fonctionnalité optimale)
Veuillez consulter la section "Vérification du nom du répertoire" ci-dessus pour une explication de cette option.
Veuillez consulter la section "Vérification du nom du répertoire" ci-dessus pour une explication de cette option.
Le répertoire de destination par défaut peut être remplacé en définissant l'option --destdir vers un chemin particulier. Si ce chemin est un chemin relatif, le répertoire de destination est déterminé relativement au répertoire courant interne d'exécution d'uscan. Si ce chemin est un chemin absolu, le répertoire de destination est fixé à cheminindépendamment du répertoire courant interne d'exécution d'uscan.

Ce qui précède est vrai non seulement pour l'exécution unique d'uscan dans une arborescence de sources unique, mais aussi pour l'exécution par uscan d'une recherche avancée dans des sous-répertoires contenant plusieurs arborescences de sources.

Une exception existe quand les options --watchfile et --package sont utilisées ensemble. Dans ce cas, le répertoire courant interne d'exécution d'uscan et le répertoire de destination par défaut sont définis au répertoire courant .uscan est lancé. Le répertoire de destination par défaut peut être remplacé en définissant aussi l'option --destdir.

Indiquer le nom du paquet à contrôler plutôt qu'examiner debian/changelog ; cela nécessite les options --upstream-version (à moins qu'une option ne soit précisée dans le fichier watch) et --watchfile. De plus, aucun répertoire ne sera scanné et rien ne sera téléchargé. Cette option configure automatiquement --no-download et --skip-signature ; elle est probablement la plus utile en conjonction avec le système DEHS (et --dehs).
Indiquer la version amont actuelle plutôt qu'examiner le fichier debian/watch ou le journal des modifications de Debian pour le déterminer. C'est ignoré si un balayage de répertoire est fait et que plus d'un fichier debian/watch est trouvé.
Indiquer le fichier watch plutôt que faire un balayage de répertoire pour le déterminer. Si cette option est utilisée sans --package, uscan devra être appelé depuis l'arborescence du paquet Debian source (de sorte que debian/changelog puisse être trouvé simplement par une recherche dans l'arborescence).

Une exception existe quand les options --watchfile et --package sont utilisées ensemble. uscan peut être appelé à partir de n'importe quel répertoire et le répertoire courant interne d'exécution d'uscan et le répertoire de destination par défaut sont définis au répertoire courant .uscan est lancé.

Vous trouverez plus d'informations dans l'explication de --destdir.

Désactiver tout le code "special code" spécifique au site pour réaliser les redirections d'URL et les altérations de contenu de page.
Ajoute l'en-tête spécifié dans les requêtes HTTP correspondant à l'url. Cette option peut être multivaluée, les valeurs doivent être de la forme "baseUrl@NomEnTête=valeur". Exemple :

  uscan --http-header https://example.org@My-Token=azertyuiop
    

Sécurité :

Ne pas exclure automatiquement les fichiers mentionnés dans le champ Files-Excluded de debian/copyright.
Forcer le mode passif ("PASV") pour les connexions FTP.
Ne pas utiliser le mode passif (PASV) pour les connexions FTP.
Ne pas renommer ni rempaqueter l'archive amont.
Définir le temps d'attente à N secondes (20 secondes par défaut).
Utiliser un champ "user agent" différent de celui par défaut.
Afficher un bref message d'aide.
Afficher les informations sur la version.

uscan accepte aussi les options suivantes et les passe à mk-origtargz :

Faire des fichiers résultants orig.tar.gz (avec l'extension appropriée) des liens symboliques vers les fichiers téléchargés (c'est le comportement par défaut).
Au lieu de créer des liens symboliques comme décrit précédemment, copier les fichiers téléchargés.
Au lieu de créer des liens symboliques comme décrit précédemment, renommer les fichiers téléchargés.
Après avoir téléchargé une archive lzma tar, xz tar, bzip tar, gz tar, zip, jar, xpi, zstd, le rempaqueter à la compression spécifiée (voir --compression).

Le paquet unzip doit être installé pour rempaqueter les archives zip et jar, le paquet mozilla-devscripts pour les archives xpi, et le paquet xz-utils pour les archives tar compressées avec lzma ou xz et le paquet zstd pour les archives zstd.

Au cas où les sources amont sont rempaquetés (soit parce que l’option --repack est donnée, soit parce que debian/copyright contient le champ Files-Excluded), la méthode de compression peut être contrôlée avec le paramètre comp. La méthode par défaut est gzip pour les archives normales, et xz pour les archives générées directement à partir du dépôt git.
Exclure les fichiers mentionnés dans le champ Files-Excluded du fichier_de_copyright donné. C’est utile lors de l’utilisation d’uscan en dehors d’un répertoire de paquet source.

VARIABLES DE CONFIGURATION DE DEVSCRIPT

Pour une utilisation de base d'uscan, la configuration de ces variables n'est pas nécessaire.

Les deux fichiers de configuration /etc/devscripts.conf et ~/.devscripts sont évalués dans cet ordre par un interpréteur de commandes ("shell") pour placer les variables de configuration. Des options de ligne de commande peuvent être utilisées pour neutraliser les paramètres des fichiers de configuration. Les paramètres des variables d'environnement sont ignorés à cette fin. Si la première option donnée en ligne de commande est --noconf, alors ces fichiers ne sont pas évalués. Les variables actuellement identifiées sont :

Télécharger ou rapporter l'information seulement:
3 : équivaut à --no-download, les nouveaux fichiers ne seront pas téléchargés.
Voir aussi --force-download and --overwrite-download.
Si elle est définie à yes, alors uscan évite l'exécution de scripts non sécurisés en sautant à la fois le rempaquetage du paquet téléchargé et la mise à jour de l'arborescence de la nouvelle source ; c'est l'équivalent des options --safe ; cela définit aussi les options par défaut à --no-download et --skip-signature.
Si elle est définie à yes ou no, cela force respectivement à utiliser ou à ne pas utiliser le mode passif pour les connexions FTP. Si elle est définie à default, alors Net::FTP(3) fait un choix (basé principalement sur la variable d'environnement FTP_PASSIVE).
Si cette option est définie à un nombre N, alors définir le temps limite à N secondes. C'est équivalent à l'option --timeout.
Si cette option est mise à no, un lien symbolique vers paquet_version.orig.tar.{gz|bz2|lzma|xz} ne sera pas créé (équivalent à l'option --no-symlink). Si elle est à yes ou symlink, les liens symboliques seront créés. Si elle est à rename, les fichiers sont renommés (équivalent à l'option --rename).
Si cette option est à yes, alors la sortie sera de type DEHS, comme si l'option --dehs était utilisée.
Si elle est définie à yes, alors la sortie sera verbeuse, comme si l'option --verbose était utilisée.
Si elle est définie, elle spécifie la chaîne à utiliser pour annoncer le navigateur ("user agent") à la place de la valeur par défaut. C'est équivalent à l'option --user-agent.
Si elle est définie, elle désigne le répertoire où les fichiers téléchargés seront placés. C'est équivalent à l'option --destdir.
Si elle est définie à yes, alors après avoir téléchargé une archive tar compressée avec bzip, lzma, xz ou zstd ou une archive ZIP, uscan recréera une archive compressée du type défini (voir --compression). C'est équivalent à l'option --repack.
Si elle est définie à no, les fichiers mentionnés dans le champ Files-Excluded de debian/copyright seront ignorés et aucune exclusion de fichiers ne sera tentée. C'est équivalent à l'option --no-exclusion.
Si définie, l'en-tête spécifié sera utilisé pour toutes les URLs correspondantes. C'est équivalent à l'option --http-header.

VALEURS DE RETOUR

La valeur de retour indique si une nouvelle version a été trouvée ; il est conseillé de lire la sortie pour déterminer exactement ce qu'il s'est passé et pour voir s'il n'y a pas eu d'avertissement.

0
Soit les options --help ou --version ont été utilisées, soit une nouvelle version amont a été trouvée pour un des fichiers watch examinés.
1
Aucune nouvelle version amont n'a été trouvée pour les fichiers watch examinés.

FONCTIONNALITÉS AVANCÉES

uscan possède beaucoup d'autres fonctionnalités qui sont sautées dans la section ci-dessus, pour être plus simple. Regardons leurs points marquants.

uscan peut être exécuté avec chemin comme paramètre pour passer le répertoire de départ de recherche du répertoire courant à chemin.

Si vous ne savez pas exactement ce qui se passe dans les coulisses, veuillez activer l'option --verbose. Si ce n'est pas suffisant, activez l'option --debug pour voir toutes les actions internes.

Voir "OPTIONS DE LIGNE DE COMMANDE" et "VARIABLES DE CONFIGURATION DE DEVSCRIPT" pour d'autres variantes.

Script personnalisé

Le paramètre optionnel script dans debian/watch signifie exécuter script avec des options après avoir traité cette ligne si elle est spécifiée.

Voir "HISTORIQUE ET MISE À NIVEAU" pour voir comment uscan invoque le <script> personnalisé.

Pour des raisons de compatibilité avec d'autres outils tels que git-buildpackage, il peut être judicieux de ne pas créer des scripts personnalisés au comportement aléatoire. En général, uupdate est le meilleur choix pour un paquet non natif, et les scripts personnalisés, s'ils existent, devraient se comporter comme uupdate. Pour des cas d'utilisation potentiels, voir <http://bugs.debian.org/748474> comme exemple.

Détournement d'URL

Certains sites populaires ont changé leur structure de page web provoquant des problèmes de maintenance du fichier de veille. Des services de redirection ont été créés pour faciliter sa maintenance. Actuellement, uscan fait un détournement automatique des requêtes d'URL pour les URL suivantes afin de gérer cette situation.

Vérification du nom du répertoire

Comme plusieurs autres scripts du paquet devscripts, uscan parcourt l'arborescence du répertoire demandé à la recherche de fichiers debian/changelog et debian/watch. Pour se protéger contre certains fichiers égarés qui pourraient poser problème, et pour des raisons d'efficacité, il examine le nom du répertoire parent une fois qu'il a trouvé le fichier debian/changelog, et vérifie que le nom du répertoire correspond au nom du paquet. Il ne cherchera à télécharger les nouvelles versions d'un paquet et à effectuer l'action demandée que si le nom du répertoire correspond au nom du paquet. La façon précise utilisée est contrôlée par les deux variables du fichier de configuration DEVSCRIPTS_CHECK_DIRNAME_LEVEL et DEVSCRIPTS_CHECK_DIRNAME_REGEX, et les options en ligne de commande associées --check-dirname-level et --check-dirname-regex.

DEVSCRIPTS_CHECK_DIRNAME_LEVEL peut prendre les valeurs suivantes :

0
Ne jamais vérifier le nom du répertoire.
1
Ne vérifie le nom du répertoire que s'il a fallu changer de répertoire pour trouver le fichier debian/changelog, c'est-à-dire que le répertoire qui contient debian/changelog n'est pas le répertoire dans lequel uscan a été invoqué. C'est le comportement par défaut.
2
Toujours vérifier le nom du répertoire.

Le nom du répertoire est vérifié en testant si le nom du répertoire actuel (donné par pwd(1)) correspond à l'expression rationnelle donnée par la variable DEVSCRIPTS_CHECK_DIRNAME_REGEX du fichier de configuration ou par l'option --check-dirname-regex expression_rationnelle. Il s'agit d'une expression rationnelle Perl (voir perlre(1)), qui sera ancrée à son début et à sa fin. Si elle contient un /, alors elle doit correspondre au chemin complet. Sinon, elle doit correspondre au nom de répertoire complet. Si elle contient la chaîne paquet, cette chaîne sera remplacée par le nom du paquet source déterminé par le fichier debian/changelog. La valeur par défaut de cette expression rationnelle est : paquet(-.+)?, ce qui correspond aux répertoires nommés paquet ou paquet-version.

HISTORIQUE ET MISE À NIVEAU

Cette section décrit brièvement les incompatibilités inverses des fonctionnalités du fichier watch qui ont été ajoutées dans chaque version du fichier watch et la première version du paquet devscripts qui les comprenait.

La syntaxe du fichier watch était très différente à l'époque. Ne l'utilisez plus. Si vous mettez votre fichier watch à niveau depuis une version antérieure à 2, il est recommandé de lire cette page de manuel et de recommencer à zéro.
devscripts version 2.6.90 : la première incarnation du style actuel de fichier watch. Cette version est également dépréciée et sera rejetée dès la publication de Debian 11.
devscripts version 2.8.12 a introduit les choses suivantes : manipulation correcte des expressions rationnelles dans la partie du chemin, recherche de motif d'un répertoire/chemin, numéro de version dans plusieurs parties, numéro de version modifiable. Les versions suivantes ont introduit la modification des liens.

Si vous êtes en train de vous mettre à niveau depuis la version 2, l'incompatibilité principale est lorsqu'il existe plusieurs groupes dans la partie des motifs. Alors que seul le premier était utilisé dans la version 2, ils le seront tous dans la version 3. Pour éviter ce comportement, modifiez les groupes non liés au numéro de version en (?: ... ) au lieu d'un groupe ordinaire ( ... ).

  • uscan invoque le script personnalisé comme ceci : script --upstream-version version ../spkg_version.orig.tar.gz.
  • uscan invoque uupdate standard comme ceci : "uupdate --no-symlink --upstream-version version ../spkg_version.orig.tar.gz".
devscripts version 2.15.10 : la première incarnation des fichiers watch prenant en charge les archives amont multiples.

La syntaxe du fichier de veille est assouplie pour permettre plus d'espaces de lisibilité.

Si vous avez un script personnalisé à la place de uupdate, vous pouvez aussi rencontrer des problèmes lors de la mise à jour à partir de la version 3.

  • uscan invoque le script personnalisé comme ceci : "script --upstream-version version".
  • uscan invoque uupdate standard comme ceci : "uupdate --find --upstream-version version".

Les restrictions pour --dehs sont levées en redirigeant les autres sorties sur la sortie d'erreur standard lorsque elle est active.

VOIR AUSSI

dpkg(1), mk-origtargz(1), perlre(1), uupdate(1), devscripts.conf(5)

AUTEUR

La version initiale de uscan a été écrite par Christoph Lameter <clameter@debian.org>. Des améliorations significatives, d'autres modifications et des corrections de bogues ont été apportées par Julian Gilbey <jdg@debian.org>. La prise en charge d'HTTP a été ajouté par Piotr Roszatycki <dexter@debian.org>. Le programme a été réécrit en Perl par Julian Gilbey. Xavier Guimard l'a convertit en Perl orienté-objet en utilisant Moo.

TRADUCTION

Cyril Brulebois <cyril.brulebois@enst-bretagne.fr>, 2006

Thomas Huriaux <thomas.huriaux@gmail.com>, 2006

David Prévot <david@tilapin.org>, 2010-2013

Xavier Guimard <yadd@debian.org>, 2018-2021

2022-06-18 Utilitaires Debian