Provided by: dpkg-dev_1.19.7ubuntu3.2_all 

NOM
dpkg-gensymbols - Création des fichiers de symboles (information de dépendances de bibliothèques
partagées)
SYNOPSIS
dpkg-gensymbols [option...]
DESCRIPTION
dpkg-gensymbols analyse un répertoire temporaire de construction (par défaut debian/tmp), y recherche les
bibliothèques et crée un fichier symbols qui les décrit. Si ce fichier n'est pas vide, il est installé
dans le sous-répertoire DEBIAN du répertoire de construction afin de pouvoir être inclus dans les
informations de contrôle du paquet.
Lors de la création de ces fichiers, il utilise en entrée certains fichiers de symboles fournis par le
responsable. Il recherche les fichiers suivants (en utilisant le premier trouvé) :
• debian/paquet.symbols.arch
• debian/symbols.arch
• debian/paquet.symbols
• debian/symbols
L'intérêt principal de ces fichiers est de fournir la version minimale associée à chaque symbole fourni
par les bibliothèques. En général, cela correspond à la première version du paquet qui a fourni ce
symbole, mais cette valeur peut être augmentée manuellement par le responsable si l'interface binaire
applicative (ABI) du symbole est étendue sans casser la compatibilité avec les versions précédentes. La
tenue à jour de ces fichiers est à la charge du responsable du paquet, avec l'aide de dpkg-gensymbols.
Quand les fichiers de symboles créés sont différents de ceux fournis par le responsable, dpkg-gensymbols
affichera les différences entre les deux versions. Si ces différences sont trop importantes, le programme
peut même se terminer en échec (le nombre de différences tolérées peut être réglé avec l'option -c).
TENUE À JOUR DES FICHIERS SYMBOLES
Les fichiers de symboles deviennent réellement utiles lorsqu'ils permettent de suivre l'évolution du
paquet sur plusieurs versions. En conséquence, le responsable doit les mettre à jour chaque fois qu'un
nouveau symbole est ajouté afin que la version minimale associée corresponde à la réalité. Pour effectuer
cette opération correctement, le fichier de différences indiqué dans le journal de construction peut être
utilisé. Dans la plupart des cas, ce fichier de différences peut être appliqué tel quel au fichier
debian/paquet.symbols. Cela étant, quelques adaptations sont généralement nécessaires : il est par
exemple recommandé de retirer le numéro de révision Debian de la version minimale afin que les paquets
rétro-portés, de numéro de version inférieur mais avec la même version amont continuent à répondre aux
pré-requis. Si le numéro de révision Debian ne peut vraiment pas être retiré car le nouveau symbole est
la conséquence d'une modification propre à Debian, il est suggéré d'ajouter un suffixe « ~ » au numéro de
version.
Avant d'appliquer le correctif au fichier de symboles, le responsable doit contrôler qu'il est correct.
Les symboles publics sont supposés ne jamais disparaître et le correctif ne devrait donc qu'ajouter des
lignes.
Veuillez noter qu'il est possible de placer des commentaires dans les fichiers de symboles : toute ligne
commençant par « # » est un commentaire sauf si elle commence par « #include » (voir la section
utilisation des inclusions). Les lignes commençant par « #MISSING: » sont des commentaires spéciaux qui
indiquent les symboles qui peuvent avoir disparu.
N'oubliez pas de vérifier si les anciennes versions des symboles ne doivent pas être incrémentées. Il n'y
a pas de moyen pour que dpkg-gensymbols prévienne de cela. Appliquer aveuglement le fichier de
différences ou supposer qu'il n'y a rien à changer, s'il n'y a pas de fichier de différences, sans
vérifier s'il y a ces modifications, peut faire que des paquets, avec des dépendances lâches, prétendent
qu'ils peuvent fonctionner avec des paquets plus anciens avec lesquels ils ne peuvent fonctionner. Cela
introduira des bogues difficiles à trouver avec des mises à niveau (partielles).
Utilisation du remplacement de #PACKAGE#
Dans de rares cas, le nom de la bibliothèque dépend de l'architecture. Afin d'éviter de coder le nom du
paquet en dur dans le fichier de symboles, il est possible d'utiliser le marqueur #PACKAGE#. Il sera
remplacé par le vrai nom du paquet lors de l'installation des fichiers de symboles. À la différence du
marqueur #MINVER#, #PACKAGE# n'apparaîtra jamais dans le fichier de symboles d'un paquet binaire.
Utilisation des étiquettes de symbole
L'étiquetage des symboles (« symbol tagging ») est utile pour marquer des symboles qui sont particuliers
d'une manière ou d'une autre. Tout symbole peut avoir un nombre quelconque d'étiquettes associées. Bien
que toutes les étiquettes soient analysées et conservées, seules certaines d'entre elles sont comprises
par dpkg-gensymbols et déclenchent un traitement spécifique des symboles. Veuillez consulter la
sous-section Étiquettes standard de symbole pour une référence complète à propos de ces étiquettes.
L'indication de l'étiquette vient juste avant le nom du symbole (sans espace). Elle commence toujours par
une parenthèse ouvrante (, se termine avec une parenthèse fermante ) et doit contenir au moins une
étiquette. Les étiquettes multiples doivent être séparées par le caractère |. Chaque étiquette peut
comporter optionnellement une valeur, séparée du nom de l'étiquette par le caractère =. Les noms et
valeurs des étiquettes sont des chaînes quelconques qui ne doivent pas comporter les caractères ) | et =.
Les noms de symbole qui suivent une étiquette peuvent optionnellement être mis entre guillemets avec les
caractères ' ou " afin d'y autoriser la présence d'espaces. Cependant, si aucune étiquette n'est
utilisée, les guillemets sont alors traités comme une partie du nom du symbole, qui s'arrête alors au
premier espace.
(étiq1=je suis marqué|étiquette avec espace)"symbole comportant des espaces"@Base 1.0
(optional)symbole_non_protégé@Base 1.0 1
symbole_non_étiqueté@Base 1.0
Le premier symbole de cet exemple est appelé symbole comportant des espaces et utilise deux
étiquettes : étiq1 avec la valeur je suis marqué et étiquette avec espace sans valeur. Le deuxième
symbole, appelé symbole_non_protégé ne comporte que l'étiquette optional. Le dernier symbole est un
exemple de symbole normal sans étiquette.
Comme les étiquettes de symbole sont une extension du format de deb-symbols(5), elles ne peuvent
apparaître que dans les fichiers de symboles des paquets source (ces fichiers peuvent ensuite être vus
comme des modèles permettant de construire les fichiers de symboles inclus dans les paquets binaires).
Lorsque dpkg-gensymbols est lancé sans l'option -t, il affiche les fichiers de symboles compatibles avec
le format deb-symbols(5) : il traite entièrement les symboles d'après les exigences des étiquettes
standard et supprime les étiquettes dans sa sortie. Au contraire, dans le mode modèle (« template »,
option -t), tous les symboles et leurs étiquettes (standard et inconnues) sont conservés dans la sortie
et écrits dans leur forme d'origine.
Étiquettes standard de symbole
optional
Un symbole marqué comme optionnel peut disparaître de la bibliothèque à tout moment et ne
provoquera pas l'échec de dpkg-gensymbols. Cependant, les symboles optionnels disparus
apparaîtront en permanence comme manquants dans le fichier de différences, à chaque nouvelle
version du paquet. Ce comportement sert de rappel au responsable qu'un tel symbole doit être
supprimé du fichier de symboles ou bien rajouté à la bibliothèque. Un tel symbole optionnel,
précédemment déclaré comme manquant (« MISSING »), peut réapparaître soudainement dans la version
suivante en étant remis à l'état existant (« existing »), sans modification de sa version
minimale.
Cette étiquette est utile pour les symboles qui sont privés car leur disparition ne provoque pas
de changement d'interface applicative (ABI). Par exemple, la plupart des modèles d'instanciation
C++ sont dans cette catégorie. Comme toute autre étiquette, celle-ci peut comporter une valeur
arbitraire qui peut servir à indiquer pour quelle raison le symbole est optionnel.
arch=liste-d'architectures
arch-bits=octets-architecture
arch-endian=boutisme-d'architecture
Ces étiquettes permettent de restreindre la liste des architectures avec lesquelles le symbole est
censé exister. Les étiquettes arch-bits et arch-endian sont prises en charge depuis dpkg 1.18.0.
Lorsque la liste des symboles est mise à jour avec ceux découverts dans la bibliothèque, tous les
symboles spécifiques d'architectures qui ne concernent pas l'architecture en cours sont ignorés.
Si un symbole propre à l'architecture en cours n'existe pas dans la bibliothèque, les processus
normaux pour des symboles manquants s'appliquent jusqu'à éventuellement provoquer l'échec de
dpkg-gensymbols. D'un autre côté, si le symbole propre à une architecture est trouvé alors qu'il
n'est pas censé exister (parce que l'architecture courante n'est pas mentionnée dans l'étiquette
ou ne correspond pas au boutisme et aux octets), il est rendu indépendant de l'architecture
(c'est-à-dire que les étiquettes d'architecture, d'octets de l'architecture et de boutisme
d'architecture sont abandonnées et le symbole apparaît dans le fichier de différences) mais non
considéré comme nouveau. (NdT : une aspirine peut être nécessaire après la lecture de ce
paragraphe)
Dans le mode de fonctionnement par défaut (pas en mode « modèle »), seuls les symboles spécifiques
de certaines architectures qui correspondent à l'architecture courante sont écrits dans le fichier
de symboles. Au contraire, tous les symboles spécifiques d'architectures (y compris ceux des
architectures différentes) seront écrits dans le fichier de symboles, dans le mode « modèle ».
Le format de liste-d'architectures est le même que le format utilisé dans les champs Build-Depends
des fichiers debian/control (à l'exception des crochets d'inclusion []). Par exemple, le premier
symbole de la liste qui suit sera pris en compte sur les architectures alpha, n'importe quelle
amd64 et ia64, le second uniquement sur les architectures linux et le troisième partout sauf sur
armel.
(arch=alpha any-amd64 ia64)un_symbole_spécifique_64bit@Base 1.0
(arch=linux-any)un_symbole_spécifique_linux@Base 1.0
(arch=!armel)un_symbole_inexistant_sur_armel@Base 1.0
Les octets-architecture sont soit 32 soit 64.
(arch-bits=32)32bit_specific_symbol@Base 1.0
(arch-bits=64)64bit_specific_symbol@Base 1.0
Le boutisme-d'architecture est soit little soit big.
(arch-endian=little)little_endian_specific_symbol@Base 1.0
(arch-endian=big)big_endian_specific_symbol@Base 1.0
Plusieurs restrictions peuvent être chaînées.
(arch-bits=32|arch-endian=little)32bit_le_symbol@Base 1.0
ignore-blacklist
dpkg-gensymbols comporte une liste interne de symboles ignorés qui ne devraient pas apparaître
dans les fichiers de symboles car ils sont en général uniquement des effets de bord de détails de
mise en œuvre de la chaîne d'outils de construction. Si, pour une raison précise, vous voulez
vraiment inclure un de ces symboles dans le fichier, vous pouvez imposer qu'il soit ignoré, avec
ignore-blacklist. Cela peut être utile pour certaines bibliothèques de bas niveau telles que
libgcc.
c++ Indique un motif de symbole c++. Voir la sous-section Utilisation de motifs de symbole plus loin.
symver Indique un motif de symbole symver (version de symbole). Voir la sous-section Utilisation des
motifs de symbole plus loin.
regex Indique un motif de symbole basé sur une expression-rationnelle. Voir la sous-section Utilisation
des motifs de symbole plus loin.
Utilisation de motifs de symbole
Au contraire d'une indication normale de symbole, un motif permet de couvrir des symboles multiples de la
bibliothèque. dpkg-gensymbols essaie de faire correspondre chaque motif à chaque symbole qui n'est pas
explicitement défini dans le fichier de symboles. Dès qu'un motif est trouvé qui correspond au symbole,
l'ensemble de ses étiquettes et propriétés sont utilisées comme spécification de base du symbole. Si
aucun des motifs ne correspond, le symbole sera considéré comme nouveau.
Un motif est considéré comme perdu si aucun symbole ne lui correspond dans la bibliothèque. Par défaut,
cela provoquera un échec de dpkg-gensymbols s'il est utilisé avec l'option -c1 (ou une valeur plus
élevée). Cependant, si l'échec n'est pas souhaité, le motif peut être marqué comme optionnel avec
l'étiquette optional. Dans ce cas, si le motif ne correspond à rien, il sera simplement mentionné dans le
fichier de différences comme MISSING (manquant). De plus, comme pour tout autre symbole, le motif peut
être limité à des architectures données avec l'étiquette arch. Veuillez consulter la sous-section
Étiquettes standard de symbole pour plus d'informations.
Les motifs sont une extension du format de deb-symbols(5) en ce sens qu'ils ne sont valables que dans les
modèles de fichiers de symboles. Cependant, la partie comportant le nom de symbole est utilisée comme une
expression à faire correspondre à name@version du symbole réel. Afin de faire la distinction entre les
différents types de motifs, un motif sera usuellement marqué avec une étiquette spéciale.
Actuellement, dpkg-gensymbols gère trois types de base de motifs :
c++
Ce motif est repéré par l'étiquette c++. Il ne sera comparé qu'aux symboles C++ avec leur nom de
symbole rétabli (demangled) tel qu'affiché avec l'utilitaire c++filt. Ce motif est très pratique pour
faire correspondre les symboles dont les noms décorés (mangled) peuvent différer selon les
architectures bien que leurs noms d'origine restent les mêmes. Un tel groupe de symboles sont les
non-virtual thunks pour lesquels les décalages (offsets) spécifiques d'architectures sont inclus dans
leur nom décoré. Une manifestation usuelle de ce cas est le destructeur virtuel qui, dans le contexte
d'un « problème du diamant », a besoin d'un symbole de transition spécial (ou « thunk ») non virtuel.
Par exemple, même si _ZThn8_N3NSB6ClassDD1Ev@Base sur une architecture 32 bits est identique à
_ZThn16_N3NSB6ClassDD1Ev@Base sur une architecture 64 bits, les deux peuvent être indiqués avec le
même motif c++ :
libdummy.so.1 libdummy1 #MINVER#
[...]
(c++)"non-virtual thunk to NSB::ClassD::~ClassD()@Base" 1.0
[...]
Le nom non décoré ci-dessus peut être obtenu avec la commande suivante :
$ echo '_ZThn8_N3NSB6ClassDD1Ev@Base' | c++filt
Veuillez noter que, bien que le nom décoré soit unique dans la bibliothèque par définition, cela n'est
pas forcément vrai pour le nom non décoré. Deux symboles réels différents peuvent avoir le même nom
non décoré. C'est par exemple le cas avec les symboles « thunk » non virtuels dans des configurations
d'héritage complexes ou avec la plupart des constructeurs et destructeurs (puisque g++ crée
usuellement deux symboles réels pour eux). Cependant, comme ces collisions se produisent au niveau de
l'interface applicative binaire (ABI), elles ne devraient pas dégrader la qualité du fichier de
symboles.
symver
Ce motif est indiqué par l'étiquette symver. Les bibliothèques bien gérées utilisent des symboles
versionnés où chaque version correspond à la version amont à laquelle le symbole a été ajouté. Si
c'est le cas, il est possible d'utiliser un motif symver pour faire correspondre chaque symbole
associé à la version spécifique. Par exemple :
libc.so.6 libc6 #MINVER#
(symver)GLIBC_2.0 2.0
[...]
(symver)GLIBC_2.7 2.7
access@GLIBC_2.0 2.2
Tous les symboles associés avec les versions GLIBC_2.0 et GLIBC_2.7 conduiront respectivement à des
versions minimales de 2.0 et 2.7, à l'exception du symbole access@GLIBC_2.0. Ce dernier amène à une
dépendance minimale sur la version 2.2 de libc6 bien qu'il soit dans le scope de
« (symvar)GLIBC_2.0 ». Cela est dû au fait que les symboles spécifiques prennent le pas sur les
motifs.
Veuillez noter que les anciens motifs avec caractères génériques (indiqués sous la forme
« *@version ») dans le champ de nom de symbole sont toujours gérés. La nouvelle syntaxe
« (symver|optional)version » doit toutefois leur être préférée. Par exemple, « *@GLIBC_2.0 2.0 »
devrait être écrit sous la forme « (symver|optional)GLIBC_2.0 2.0 » si un comportement analogue est
recherché.
regex
Les motifs d'expressions rationnelles sont indiqués par l'étiquette expression-rationnelle. La
correspondance se fait avec une expression rationnelle Perl sur le champ de nom de symbole. La
correspondance est faite telle quelle et il ne faut donc pas oublier le caractère ^, sinon la
correspondance est faite sur n'importe quelle partie du symbole réel name@version. Par exemple :
libdummy.so.1 libdummy1 #MINVER#
(regex)"^mystack_.*@Base$" 1.0
(regex|optional)"private" 1.0
Les symboles tels que « mystack_new@Base », « mystack_push@Base », « mystack_pop@Base », etc., seront
en correspondance avec le premier motif alors que, par exemple, « ng_mystack_new@Base » ne le sera
pas. Le deuxième motif correspondra pour tous les symboles qui comportent la chaîne « private » dans
leur nom et les correspondances hériteront de l'étiquette optional depuis le motif.
Les motifs de base indiqués précédemment peuvent être combinés au besoin. Dans ce cas, ils sont traités
dans l'ordre où les étiquettes sont indiquées. Par exemple, les deux motifs
(c++|regex)"^NSA::ClassA::Private::privmethod\d\(int\)@Base" 1.0
(regex|c++)N3NSA6ClassA7Private11privmethod\dEi@Base 1.0
seront en correspondance avec les symboles « _ZN3NSA6ClassA7Private11privmethod1Ei@Base" » et
« _ZN3NSA6ClassA7Private11privmethod2Ei@Base ». Lors de la correspondance avec le premier motif, le
symbole brut est d'abord rétabli d’origine en tant que symbole C++, puis comparé à l'expression
rationnelle. D'un autre côté, lors de la correspondance avec le deuxième motif, l'expression rationnelle
est comparée au nom de symbole brut, puis le symbole est testé en tant que symbole C++ en tentant de le
rétablir d’origine. L'échec de n'importe quel motif basique provoquera l'échec de l'ensemble du motif.
Ainsi, par exemple, « __N3NSA6ClassA7Private11privmethod\dEi@Base » ne correspondra à aucun des motifs
car ce n'est pas un symbole C++ valable (NdT : j'ai l'impression de traduire du Klingon !).
En général, les motifs sont divisés en deux groupes : les alias (c++ et symver basique) et les motifs
génériques (expression-rationnelle et toutes les combinaisons de motifs basiques multiples). La
correspondance de motifs basés sur des alias est rapide (O(1)) alors que les motifs génériques sont O(N)
(N étant le nombre de motifs génériques) pour chaque symbole. En conséquence, il est déconseillé d'abuser
des motifs génériques.
Lorsque plusieurs motifs correspondent pour le même symbole réel, les alias (d'abord c++, puis symver)
sont privilégiés par rapport aux motifs génériques. Ceux-ci sont essayés dans l'ordre où ils apparaissent
dans le modèle de fichier de symboles, en s'arrêtant à la première correspondance. Veuillez noter,
cependant, que la modification manuelle de l'ordre des entrées de fichiers n'est pas recommandée car
dpkg-gensymbols crée des fichiers de différences d'après l'ordre alphanumérique de leur nom.
Utilisation des inclusions
Lorsqu'un jeu de symboles exportés varie selon les architectures, il est souvent peu efficace d'utiliser
un seul fichier de symboles. Pour couvrir ces cas, une directive d'inclusion peut devenir utile dans
certains cas :
• Il est possible de factoriser la partie commune dans un fichier externe donné et l'inclure dans le
fichier paquet.symbols.arch avec une directive « include » utilisée de la manière suivante :
#include "paquets.symbols.common"
• La directive d'inclusion peut également être étiquetée comme tout autre symbole :
(étiquette|...|étiquetteN)#include "fichier_à_inclure"
Le résultat sera que tous les symboles inclus depuis fichier_à_inclure seront considérés comme
étiquetés par défaut avec etiq ... etiqN. Cela permet de créer un fichier paquet.symbols commun qui
inclut les fichiers de symboles spécifiques des architectures :
symbole_commun1@Base 1.0
(arch=amd64 ia64 alpha)#include "package.symbols.64bit"
(arch=!amd64 !ia64 !alpha)#include "package.symbols.32bit"
symbole_commun2@Base 1.0
Les fichiers de symboles sont lus ligne par ligne et les directives d'inclusion sont traitées dès
qu'elles sont trouvées. En conséquence, le contenu du fichier d'inclusion peut remplacer une définition
qui précède l'inclusion et ce qui suit l'inclusion peut remplacer une définition qu'elle ajoutait. Tout
symbole (ou même une autre directive d'inclusion) dans le fichier inclus peut définir des étiquettes
supplémentaires ou remplacer les valeurs d'étiquettes héritées, dans sa définition d'étiquettes.
Cependant, pour un symbole donné, il n'existe pas de méthode permettant de remplacer une de ses
étiquettes héritées.
Un fichier inclus peut reprendre la ligne d'en-tête qui contient le « SONAME » de la bibliothèque. Dans
ce cas, cela remplace toute ligne d'en-tête précédente. Il est cependant déconseillé de dupliquer les
lignes d'en-tête. Une façon de le faire est la méthode suivante :
#include "libmachin1.symbols.common"
symboles_specifique_architecture@Base 1.0
Bonnes pratiques de gestion des bibliothèques
Une bibliothèque bien maintenue offre les possibilités suivantes :
• son interface de programmation (API) est stable (les symboles publics ne sont jamais supprimés et les
changements ne concernent que des ajouts de nouveaux symboles publics) et les modifications
provoquant une incompatibilité doivent être combinés avec un changement de SONAME ;
• idéalement, elle utilise le versionnage des symboles pour garantir la stabilité de l'interface
applicative binaire (ABI) malgré ses modifications internes et l'extension de son API ;
• elle n'exporte pas les symboles privés (afin de contourner cela, de tels symboles peuvent être
étiquetés comme optionnels).
En maintenant le fichier de symboles, il est facile d'en voir apparaître et disparaître. Cependant, il
est plus difficile de contrôler la présence d'éventuelles modifications d'API ou ABI. En conséquence, le
responsable doit contrôler soigneusement le journal des modifications amont, à la recherche de cas où une
saine gestion des bibliothèques peut avoir été omise. Si des problèmes potentiels sont découverts,
l'auteur amont doit être averti(e) car une correction en amont est meilleure qu'un travail spécifique au
paquet Debian.
OPTIONS
-Prépertoire-construction-paquet
Analyse de répertoire-construction-paquet, plutôt que debian/tmp.
-ppaquet
Définit le nom du paquet. Requis si plus d'un paquet binaire est indiqué dans debian/control (ou
s'il n'y a pas de fichier debian/control).
-vversion
Définit la version du paquet. La valeur par défaut est la version extraite de debian/changelog. Ce
paramètre est requis si le programme est lancé en dehors de l'arborescence source d'un paquet.
-efichier-bibliothèque
N'analyse que les bibliothèques explicitement mentionnées au lieu de rechercher toutes les
bibliothèques publiques. Les motifs du shell peuvent être utilisés pour l'expansion des chemins
d'accès (voir la page de manuel de File::Glob(3perl) pour plus d'informations) dans
fichier-bibliothèque pour établir une correspondance avec plusieurs bibliothèques avec un seul
paramètre (afin d'éviter d'utiliser plusieurs options -e).
-lrépertoire
Ajoute répertoire au début de la liste des répertoires où chercher des bibliothèques partagées
privées (depuis dpkg 1.19.1). Cette option peut être utilisée plusieurs fois.
Note : Utilisez cette option plutôt que le réglage de LD_LIBRARY_PATH, parce que cette variable
d'environnement est utilisée pour contrôler l'éditeur de liens d'exécution et se servir d'elle
pour définir les chemins des bibliothèques partagées au moment de la construction peut être
problématique, par exemple, lors d'une compilation croisée.
-Inom-de-fichier
Utilise nom-de-fichier comme fichier de référence pour créer le fichier de symboles à intégrer
dans le paquet lui-même.
-O[nom-de-fichier]
Affiche le fichier de symboles créé sur la sortie standard ou dans le nom-de-fichier, si spécifié,
plutôt que dans debian/tmp/DEBIAN/symbols (ou répertoire-construction-paquet/DEBIAN/symbols si -P
est présent). Si nom-de-fichier existe déjà, son contenu sera utilisé comme base pour le fichier
créé. Cette fonctionnalité permet de mettre à jour le fichier de symboles pour qu'il corresponde à
une nouvelle version amont de la bibliothèque.
-t Écrit le fichier de symboles en mode modèle plutôt que dans un format compatible avec
deb-symbols(5). La différence majeure réside dans le fait que les noms de symboles et les
étiquettes sont écrits dans leur forme d'origine au lieu d'être interprétés, avec réduction des
étiquettes en mode de compatibilité. De plus, certains symboles peuvent être omis lors de
l'écriture d'un fichier deb-symbols(5) standard (selon les règles de traitement des étiquettes)
alors que tous les symboles sont écrits lors de la création d'un modèle de fichier de symboles.
-c[0-4]
Définit les contrôles à effectuer lors de la comparaison du fichier de symboles créé en utilisant
le fichier de modèle comme point de départ. Le niveau par défaut est 1. Plus le niveau est
augmenté, plus le nombre de contrôles effectués est important. Chaque niveau de contrôle comporte
les contrôles effectués pour les niveaux inférieurs. Le niveau 0 n'échoue jamais. Le niveau 1
échoue si certains symboles ont disparu. Le niveau 2 échoue si de nouveaux symboles ont été
ajoutés. Le niveau 3 échoue si certaines bibliothèques ont disparu. Le niveau 4 échoue si des
bibliothèques ont été ajoutées.
Cette valeur peut être remplacée par la valeur de la variable d'environnement
DPKG_GENSYMBOLS_CHECK_LEVEL.
-q Fonctionne en mode silencieux et ne crée jamais de fichier de différences entre le fichier de
symboles créé et le fichier modèle utilisé comme point de départ. N'affiche également aucun
avertissement à propos de bibliothèques nouvelles ou disparues ou de symboles nouveaux ou
disparus. Cette option ne désactive que l'affichage informatif, mais pas les contrôles eux-mêmes
(voir l'option -c).
-aarch Définit arch comme architecture lors du traitement des fichiers de symboles. Cette option permet
de créer un fichier de symboles ou un fichier de différences pour n'importe quelle architecture, à
condition que les fichiers binaires correspondants soient déjà disponibles.
-d Active le mode bavard. De nombreux messages sont affichés pour expliquer ce que dpkg-gensymbols
fait.
-V Active le mode bavard. Le fichier de symboles créé contiendra les symboles dépréciés sous forme de
commentaires. De plus, en mode modèle, les motifs de symboles seront suivis de commentaires
affichant les symboles réels qui correspondent au motif.
-?, --help
Affiche un message d'aide puis quitte.
--version
Affiche le numéro de version puis quitte.
ENVIRONNEMENT
DPKG_GENSYMBOLS_CHECK_LEVEL
Remplace le niveau de vérification de commande, même si l'argument en ligne de commande -c a été
donné (notez que cela va à l'encontre de la convention générale qui veut que les arguments en
ligne de commande ont la préséance sur les variables d'environnement).
DPKG_COLORS
Définit le mode de couleur (depuis dpkg 1.18.5). Les valeurs actuellement acceptées sont auto (par
défaut), always et never.
DPKG_NLS
Si cette variable est définie, elle sera utilisée pour décider l'activation de la prise en charge
des langues (NLS – Native Language Support), connu aussi comme la gestion de
l'internationalisation (ou i18n) (depuis dpkg 1.19.0). Les valeurs permises sont : 0 et 1 (par
défaut).
VOIR AUSSI
https://people.redhat.com/drepper/symbol-versioning
https://people.redhat.com/drepper/goodpractice.pdf
https://people.redhat.com/drepper/dsohowto.pdf
deb-symbols(5), dpkg-shlibdeps(1).
TRADUCTION
Ariel VARDI <ariel.vardi@freesbee.fr>, 2002. Philippe Batailler, 2006. Nicolas François, 2006. Veuillez
signaler toute erreur à <debian-l10n-french@lists.debian.org>.
1.19.7 2022-05-25 dpkg-gensymbols(1)