USCAN.FR(1) | USCAN.FR(1) |
uscan - Tester ou surveiller la disponibilité d'une nouvelle version amont
uscan [options] [chemin]
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 :
Veuillez noter les informations suivantes.
Le format de la version 4 actuelle de debian/watch peut être résumé comme suit :
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".
Ici,
Il y a quelques chaînes spéciales qui sont remplacées par uscan pour faciliter l'écriture du fichier de veille.
[-_]?[Vv]?(\d[\-+\.:\~\da-zA-Z]*)
(?i)(?:\.(?:tar\.xz|tar\.bz2|tar\.gz|tar\.zstd?|zip|tgz|tbz|txz))
(?i)(?:\.(?:tar\.xz|tar\.bz2|tar\.gz|tar\.zstd?|zip|tgz|tbz|txz))'(?:\.(?:asc|pgp|gpg|sig|sign))'
[\+~](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.
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 :
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.
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 :
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").
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.
When pretty=describe is used, the upstream version string is the output of the "git describe --tags | sed s/-/./g" command instead. For example, if the commit is the 5-th after the last tag v2.17.12 and its short hash is ged992511, then the string is v2.17.12.5.ged992511 . For this case, it is good idea to add uversionmangle=s/^/0.0~/ or uversionmangle=s/^v// to make the upstream version string compatible with Debian. Please note that in order for pretty=describe to function well, upstream need to avoid tagging with random alphabetic tags.
L'option pretty=describe contraint à configurer gitmode=full pour créer automatiquement un clone local complet du dépôt.
Cette option n'est valide qu'en mode "git".
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.
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.
version=4 opts="searchmode=plain" \ https://registry.npmjs.org/aes-js \ https://registry.npmjs.org/aes-js/-/aes-js-(\d[\d\.]*)@ARCHIVE_EXT@
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.
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".
Il est également possible d'utiliser dversionmangle=auto, ce qui est exactement la même chose que dversionmangle=s/@DEB_EXT@//
Une substitution telle que s/PRE/~pre/; s/RC/~rc/ peut aider.
Cela est pratique si vous souhaitez accéder à Amazon AWS ou à des dépôts Subversion dans lesquels <a href="..."> n'est pas utilisé.
Une substitution telle que s/PRE/~pre/; s/RC/~rc/ peut aider.
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 "#".
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.
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 :
alors, le nom du paquet source est titi et la version la plus récente du paquet Debian est 3:2.03+dfsg-4.
La dernière version amont est normalisée à 2.03+dfsg 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+dfsg indiquant que l'archive source a été rempaquetée, le suffixe +dfsg 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 :
uscan télécharge une page web à partir de l'adresse http://URL spécifiée dans debian/watch.
Par exemple, cette adresse http://URL peut être spécifiée ainsi :
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 :
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 :
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 :
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 +dfsg à 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.
Habituellement, il n'y a pas besoin de paramétrer opts="dversionmangle= ... " dans ce cas.
Le retrait des fichiers est requis si les fichiers ne sont pas compatibles avec DFSG. Dans ce cas, +dfsg est utilisé comme suffixe.
Alors, les options sont plutôt ainsi combinées opts="dversionmangle=s/\+dfsg\d*$// , repacksuffix=+dfsg".
Par exemple, l'archive amont rempaquetée peut être :
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.
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.
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.
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.
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.
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
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.
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.
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.
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@
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=+dfsg" \ http://some.site.org/some/path/foobar-@ANY_VERSION@@ARCHIVE_EXT@
Voir "EXEMPLES DE FICHIER DE COPYRIGHT".
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
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@
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, +dfsg peut être ajouté à la version amont comme ceci :
version=4 opts=oversionmangle=s/(.*)/$1+dfsg/ \ 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".
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@
version=4 ftp://ftp.tex.ac.uk/tex-archive/web/c_cpp/cweb/cweb-@ANY_VERSION@@ARCHIVE_EXT@
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 \.
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@
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.
For GitHub based projects, you can use the releases or tags API page. If upstream releases properly named tarballs on their releases page, you can search for the browser download URL (API key browser_download_url):
version=4 opts="searchmode=plain" \ https://api.github.com/repos/<user>/<project>/releases?per_page=100 \ https://github.com/<user>/<project>/releases/download/[^/]+/@PACKAGE@-@ANY_VERSION@@ARCHIVE_EXT@
If the release page only contains the auto-generated tar.gz source code tarball, search for the tarball URL (API key tarball_url). The tarball URL uses only the version as the filename. You can rename the downloaded upstream tarball into the standard <project>-<version>.tar.gz using filenamemangle:
version=4 opts="filenamemangle=s%.*/@ANY_VERSION@%@PACKAGE@-$1.tar.gz%,searchmode=plain" \ https://api.github.com/repos/<user>/<project>/releases?per_page=100 \ https://api.github.com/repos/<user>/<project>/tarball/@ANY_VERSION@
If there are no upstream releases, you can query the equivalent tags page:
version=4 opts="filenamemangle=s%.*/@ANY_VERSION@%@PACKAGE@-$1.tar.gz%,searchmode=plain" \ https://api.github.com/repos/<user>/<project>/tags?per_page=100 \ https://api.github.com/repos/<user>/<project>/tarball/refs/tags/@ANY_VERSION@
If upstream releases alpha/beta tarballs, you will need to make use of the uversionmangle option: uversionmangle=s/(a|alpha|b|beta|c|dev|pre|rc)/~$1/
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@#.*
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.
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@
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 (".").
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.
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.
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@\/
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.
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).
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.
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 ...
Pour un usage basique d'uscan, la configuration de ces options n'est pas nécessaire.
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.
Des archives précédemment téléchargées peuvent être utilisées.
Passage du comportement par défaut à --skip-signature.
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.
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 . où uscan est lancé. Le répertoire de destination par défaut peut être remplacé en définissant aussi l'option --destdir.
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 . où uscan est lancé.
Vous trouverez plus d'informations dans l'explication de --destdir.
uscan --http-header https://example.org@My-Token=azertyuiop
Sécurité :
| valeur --http-header | Bonne pour | Inutilisée | +------------------------------------+-----------------------------+------------+ | https://example.org.com@Hdr=Value | https://example.org.com/... | | | https://example.org.com/@Hdr=Value | | X | | https://e.com:1879@Hdr=Value | https://e.com:1879/... | | | https://e.com:1879/dir@Hdr=Value | https://e.com:1879/dir/... | | | https://e.com:1879/dir/@Hdr=Value | | X |
uscan accepte aussi les options suivantes et les passe à mk-origtargz :
The unzip package must be installed in order to repack zip, jar, and xpi archives, the xz-utils package must be installed to repack lzma or xz tar archives, and zstd must be installed to repack zstd archives.
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 :
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.
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.
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.
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.
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 :
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.
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.
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 ( ... ).
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.
Les restrictions pour --dehs sont levées en redirigeant les autres sorties sur la sortie d'erreur standard lorsque elle est active.
dpkg(1), mk-origtargz(1), perlre(1), uupdate(1), devscripts.conf(5)
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.
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
2023-12-12 | Utilitaires Debian |