man-pages/fr/man1/dpkg-gensymbols.1.html
2021-03-31 01:06:50 +01:00

638 lines
39 KiB
HTML

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