dpkg-gensymbols(1) | dpkg suite | dpkg-gensymbols(1) |
dpkg-gensymbols - Création des fichiers de symboles (information de dépendances de bibliothèques partagées)
dpkg-gensymbols [option...]
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é) :
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).
This program was introduced in dpkg 1.14.8.
The base interchange format of the symbols file is described in deb-symbols(5), which is used by the symbols files included in binary packages. These are generated from template symbols files with a format based on the former, described in deb-src-symbols(5) and included in source packages.
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é, mais en plus, le mainteneur doit s'assurer que le comportement de ces symboles n'a pas changé d'une manière qui pourrait faire que tout ce qui utilise ces symboles et qui est lié à la nouvelle version cesse de fonctionner avec l'ancienne version.
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.
Notez qu'il est possible d'introduire des commentaires dans les fichiers de symboles.
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).
Une bibliothèque bien maintenue offre les possibilités suivantes :
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.
Note: Use this option instead of setting LD_LIBRARY_PATH, as that environment variable is used to control the run-time linker and abusing it to set the shared library paths at build-time can be problematic when cross-compiling for example.
Cette valeur peut être remplacée par la valeur de la variable d'environnement DPKG_GENSYMBOLS_CHECK_LEVEL.
<https://people.redhat.com/drepper/symbol-versioning>, <https://people.redhat.com/drepper/goodpractice.pdf>, <https://people.redhat.com/drepper/dsohowto.pdf>, deb-src-symbol(5), deb-symbols(5), dpkg-shlibdeps(1).
Ariel VARDI <ariel.vardi@freesbee.fr>, 2002. Philippe Batailler, 2006. Nicolas François, 2006. Veuillez signaler toute erreur à <debian-l10n-french@lists.debian.org>.
2024-09-26 | 1.22.6 |