Provided by: dpkg-dev_1.22.6ubuntu6.5_all 

NOM
dpkg-shlibdeps - Générateur de variables de substitution de dépendances pour bibliothèques partagées
SYNOPSIS
dpkg-shlibdeps [option...] [-e] exécutable [option...]
DESCRIPTION
dpkg-shlibdeps calcule, pour les exécutables indiqués dans ses paramètres, les dépendances envers les
bibliothèques partagées. Ces dépendances sont ajoutées au fichier de variables de substitution
debian/substvars sous la forme shlibs:champ-dépendance où champ-dépendance est le nom du champ de
dépendance. Toute autre variable après shlibs: est supprimée du fichier.
dpkg-shlibdeps a deux sources possibles pour créer les informations concernant les dépendances, soit les
fichiers symbols, soit les fichiers shlibs. Pour chaque fichier binaire qu'il analyse, dpkg-shlibdeps
recherche la liste des bibliothèques partagées qui lui sont liées. Puis, pour chacune d'elles il analyse
soit le fichier symbols, soit le fichier shlibs (si le premier n'existe pas ou si debian/shlibs.local
contient les dépendances appropriées). Ces deux fichiers sont censés être fournis par le paquet de la
bibliothèque et disponibles dans /var/lib/dpkg/info/paquet.symbols ou /var/lib/dpkg/info/paquet.shlibs.
Le nom du paquet est trouvé en deux étapes : en cherchant le fichier de la bibliothèque sur le système,
dans le répertoire que ld.so utiliserait, puis en utilisant dpkg -S fichier-bibliothèque pour trouver le
paquet qui fournit cette bibliothèque.
Fichiers symboles
Les fichiers symboles contiennent des informations de dépendances plus fines en fournissant les
dépendances minimales pour chaque symbole de la bibliothèque exportée. Le script essaie de trouver un
fichier de symboles associé à un paquet de bibliothèque dans les emplacements suivants (le premier trouvé
est utilisé) :
debian/*/DEBIAN/symbols
Shared library information generated by the current build process that also invoked dpkg-shlibdeps.
They are generated by dpkg-gensymbols(1). They are only used if the library is found in a package's
build tree. The symbols file in that build tree takes precedence over symbols files from other binary
packages.
/etc/dpkg/symbols/paquet.symbols.architecture
/etc/dpkg/symbols/paquet.symbols
Les informations de dépendance de bibliothèque partagée principales par système. arch est
l'architecture du système actuel (obtenue par dpkg-architecture -qDEB_HOST_ARCH).
Affichage de “dpkg-query --control-path paquet symbols”
Les informations de dépendance de bibliothèque partagée fournies par le paquet. Sauf indication
contraire par le biais de --admindir, ces fichiers sont par défaut dans /var/lib/dpkg.
Lors de l'analyse des symboles utilisés par tous les binaires, dpkg-shlibdeps retient la (plus grande)
version minimale nécessaire pour chaque bibliothèque. À la fin du processus, il est capable d'écrire la
dépendance minimale pour toutes les bibliothèques utilisées (à condition que l'information des fichiers
symbols soit exacte).
As a safe-guard measure, a symbols file can provide a Build-Depends-Package or Build-Depends-Packages
meta-information field and dpkg-shlibdeps will extract the minimal version required by the corresponding
package in the Build-Depends field and use this version if it's higher than the minimal version computed
by scanning symbols.
Fichiers Shlibs
Les fichiers Shlibs associent directement une bibliothèque à une dépendance (sans regarder les symboles).
C'est donc souvent plus puissant que les besoins réels mais cela reste très sûr et facile à manipuler.
Les dépendances d'une bibliothèque sont recherchées à plusieurs endroits. Le premier fichier
d'informations trouvé qui concerne la bibliothèque est utilisé :
debian/shlibs.local
Fichier particulier à un paquet remplaçant les informations qui concernent les dépendances envers des
bibliothèques partagées.
/etc/dpkg/shlibs.override
Fichier système remplaçant les informations qui concernent les dépendances envers des bibliothèques
partagées.
debian/*/DEBIAN/shlibs
Information sur la bibliothèque partagée générée par le processus actuel de construction qui invoque
aussi dpkg-shlibdeps. Il n'est utilisé que si la bibliothèque se trouve dans l'arbre de construction
du paquet. Le fichier shlibs qui construit l'arbre a priorité sur les fichiers shlibs des autres
paquets binaires.
Affichage de « dpkg-query --control-path paquet shlibs »
Les informations de dépendance de bibliothèque partagée fournies par le paquet. Sauf indication
contraire par le biais de --admindir, ces fichiers sont par défaut dans /var/lib/dpkg.
/etc/dpkg/shlibs.default
Fichier système par défaut concernant les informations de dépendance envers des bibliothèques
partagées.
Les dépendances trouvées sont ensuite directement utilisées (sauf si elles sont filtrées parce qu'elles
ont été identifiées comme étant en double, ou d'un niveau plus faible qu'une autre dépendance).
OPTIONS
dpkg-shlibdeps interprète des arguments sans option comme des commandes exécutables, comme si on avait
simplement donné -eexécutable.
-eexécutable
Cette option inclut les bonnes dépendances envers les bibliothèques partagées que demande exécutable.
Cette option peut être utilisée plusieurs fois.
-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.17.0). Cette option peut être utilisée plusieurs fois.
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.
-dchamp-dépendance
Cette option ajoute les dépendances destinées au champ « dépendance » du fichier de contrôle
champ-dépendance. (Les dépendances pour ce champ sont dans la variable shlibs:champ-dépendance.)
L'option -dchamp-dépendance concerne tous les exécutables qui suivent l'option, jusqu'à la prochaine
option -dchamp-dépendance. Par défaut, champ-dépendance vaut Depends.
Quand, dans plusieurs champs reconnus ayant trait aux dépendances comme les champs Pre-Depends,
Depends, Recommends, Enhances ou Suggests apparaît la même entrée (ou bien un ensemble
d'alternatives), dpkg-shlibdeps supprime automatiquement les dépendances dans tous les champs sauf
celui qui représente les dépendances les plus importantes.
-ppréfixe-pour-le-nom-des-variables
Fait commencer les variables de substitution par préfixe-pour-le-nom-des-variables: au lieu de
shlibs:. De même, toute variable de substitution commençant par préfixe-pour-le-nom-des-variables:
(au lieu de shlibs:) est enlevée du fichier de substitution des variables.
-O[nom-de-fichier]
Affiche les définitions des variables de substitution sur la sortie standard (ou nom-de-fichier si
spécifié, depuis dpkg 1.17.2), plutôt que de les ajouter dans le fichier de substitution des
variables qui est par défaut debian/substvars.
-ttype
Préférer les informations sur les dépendances des bibliothèques partagées qui sont étiquetées pour un
type de paquet donné. Si aucune information de type n'est donnée, il n'utilisera pas d'information.
Par défaut, le type de paquet est deb. On peut créer une étiquette pour ces informations en les
préfixant par le nom du type, un deux-points et une espace.
-Lfichier-local-shlibs
Lire les informations de remplacement concernant les dépendances envers les bibliothèques partagées
dans fichier-local-shlibs au lieu de debian/shlibs.local.
-Tfichier-substvars
Écrire les variables de substitution dans fichier-substvars ; le fichier par défaut est
debian/substvars.
-v Active le mode bavard (depuis dpkg 1.14.8). De nombreux messages sont affichés pour expliquer ce que
dpkg-shlibdeps fait.
-xpackage
Exclut le paquet des dépendances générées (depuis dpkg 1.14.8). Cela évite les auto-dépendances pour
les paquets fournissant des exécutables ELF (exécutables ou modules complémentaires de bibliothèque)
qui utilisent une bibliothèque incluse dans ce même paquet. Cette option peut être utilisée plusieurs
fois pour exclure plusieurs paquets.
-Srépertoire-construction-paquet
Recherche dans répertoire-construction-paquet en premier et essaie de trouver une bibliothèque
(depuis dpkg 1.14.15). C'est utile lorsque le paquet source construit plusieurs saveurs de la même
bibliothèque et que vous voulez vous assurer que vous obtiendrez la dépendance d'un paquet binaire
donné. Cette option peut être utilisée plusieurs fois : les répertoires seront examinés dans le même
ordre avant les répertoires d'autres paquets binaires.
-Irépertoire-construction-paquet
Ignore répertoire-construction-paquet lors de la recherche des fichiers shlibs, de symboles et des
bibliothèques partagées (depuis dpkg 1.18.5). Cette option peut être utilisée plusieurs fois.
--ignore-missing-info
Pas d'échec si l'information de dépendance ne peut pas être trouvée pour une bibliothèque partagée
(depuis dpkg 1.14.8). L'utilisation de cette option est déconseillée, toutes les bibliothèques
devraient fournir leurs informations de dépendance (que ce soit avec les fichiers shlibs, ou avec les
fichiers symboles), même si elles ne sont pas encore utilisées par d'autres paquets.
--warnings=valeur
valeur est un champ de « bit » définissant l'ensemble des avertissements qui peuvent être émis par
dpkg-shlibdeps (depuis dpkg 1.14.17). Le bit 0 (valeur = 1) active l'avertissement « symbole sym
utilisé par le binaire trouvé dans aucune des bibliothèques ». Le bit 1 (valeur = 2) active
l'avertissement « le paquet pourrait éviter une dépendance inutile ». Le bit 2 (valeur = 4) active
l'avertissement « Le binaire ne devrait pas être lié à bibliothèque ». La valeur par défaut est 3 :
les deux premières mises en garde sont actives par défaut, la dernière ne l'est pas. Positionnez la
valeur à 7 si vous souhaitez que tous les avertissements soient actifs.
--admindir=répertoire
Changer l'endroit où se trouve la base de données de dpkg (depuis dpkg 1.14.0). Par défaut, c'est
/var/lib/dpkg.
-?, --help
Afficher un message d'aide puis quitter.
--version
Afficher le numéro de version puis quitter.
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).
DIAGNOSTICS
Avertissements
Depuis que dpkg-shlibdeps analyse l'ensemble des symboles utilisés par chaque binaire généré par le
paquet, il est en mesure d'émettre des avertissements dans plusieurs cas. Ils vous informent des choses
qui peuvent être améliorées dans le paquet. Dans la plupart des cas, ces améliorations concernent
directement les sources amont. Dans l'ordre d'importance décroissant, voici les différents avertissements
que vous pouvez rencontrer :
symbole sym utilisé par binaire trouvé dans aucune des bibliothèques.
Le symbole indiqué n'a pas été trouvé dans les bibliothèques liées au binaire. Le binaire est
probablement plutôt une bibliothèque et il doit être lié avec une bibliothèque supplémentaire durant
le processus de construction (l'option -lbibliothèque de l'éditeur de liens).
binary contient une référence non résolue au symbole sym : il s'agit probablement d'un greffon (plugin)
Le symbole indiqué n'a pas été trouvé dans les bibliothèques liées avec le fichier binaire. Le
binaire est très probablement un greffon (plugin) et le symbole est probablement fourni par le
programme qui charge ce greffon. En théorie, un greffon n'a pas de « SONAME » mais ce binaire en
possède un et n'a pas pu être identifié en tant que tel. Cependant, le fait que le binaire soit
stocké dans un répertoire non public est une indication forte qu'il ne s'agit pas d'une bibliothèque
partagée normale. Si le binaire est vraiment un greffon, vous pouvez ignorer cet avertissement. Il
existe cependant une possibilité qu'il s'agisse d'un vrai binaire et que les programmes avec lequel
il est lié utilisent un RPATH afin que le chargeur dynamique le trouve. Dans ce cas, la bibliothèque
est incorrecte et doit être corrigée.
paquet pourrait éviter une dépendance inutile si le binaire n'était pas lié avec bibliothèque (il ne fait
usage d'aucun de ses symboles)
Aucun des binaires liés à la bibliothèque n'utilise les symboles qu'elle fournit. En corrigeant tous
les binaires, vous éviteriez la dépendance associée à cette bibliothèque (à moins que la même
dépendance soit également liée à une autre bibliothèque qui est elle réellement utilisée).
paquet pourrait éviter une dépendance inutile si les binaires n'étaient pas liés avec bibliothèque (ils
ne font usage d'aucun de ses symboles)
Identique à l'avertissement précédent, pour des binaires multiples.
le binaire ne devrait pas être lié avec la bibliothèque (il ne fait usage d'aucun de ses symboles)
Le binaire est lié à une bibliothèque dont il n'a pas besoin. Ce n'est pas un problème, mais de
petites améliorations de performance dans le temps de chargement de celui-ci peuvent être obtenues en
ne le liant pas à cette bibliothèque. Cet avertissement vérifie la même information que la précédente
mais elle le fait pour tous les binaires au lieu de ne faire le contrôle qu'au niveau global sur tous
les binaires analysés.
Erreurs
dpkg-shlibdeps échouera s'il ne peut pas trouver de bibliothèque publique utilisée par un binaire ou si
cette bibliothèque n'a pas d'informations sur les dépendances associées (soit le fichier shlibs, soit le
fichier des symboles). Une bibliothèque publique a un SONAME et un numéro de version (libsomething.so.X).
Une bibliothèque privée (comme un module additionnel) ne devrait pas avoir de SONAME et n'a pas besoin
d'avoir de version.
impossible de trouver la bibliothèque library-soname demandée par le binaire (son RPATH est « rpath »)
Le binaire utilise une bibliothèque appelée library-soname mais dpkg-shlibdeps n'a pas été en mesure
de trouver cette bibliothèque. dpkg-shlibdeps crée une liste de répertoires à vérifier de la manière
suivante : les répertoires énumérés dans le RPATH du binaire, les répertoires ajoutés par l'option
-l, les répertoires listés dans la variable d'environnement LD_LIBRARY_PATH, les répertoires croisés
multi-architerctures (par exemple, /lib/arm64-linux-gnu, /usr/lib/arm64-linux-gnu), les répertoires
publics standard (/lib, /usr/lib), les répertoires listés dans /etc/ld.so.conf et les répertoires
obsolètes multilib (/lib32, /usr/lib32, /lib64, /usr/lib64). Ensuite, il vérifie les répertoires qui
sont dans l'arbre de construction du paquet binaire en cours d'analyse, dans l'arbre de construction
du paquet indiqué avec l'option de ligne de commande -S, dans les autres arbres de paquets qui
contiennent un fichier DEBIAN/shlibs ou DEBIAN/symbols et enfin dans le répertoire racine. Si la
bibliothèque n'est pas trouvée dans l'un de ces répertoires, alors ce message d'erreur est obtenu.
Si la bibliothèque non trouvée est cependant disponible dans le répertoire privé de ce même paquet,
alors il vous faut ajouter ce répertoire avec -l. S'il est dans un autre paquet binaire en cours de
construction, alors assurez-vous que le fichier shlibs/symbols de ce paquet a déjà créé et que -l
contient le répertoire approprié si c'est aussi un répertoire privé.
aucune information de dépendance trouvée pour la bibliothèque (utilisée par le binaire).
La bibliothèque nécessaire au binaire a été trouvée par dpkg-shlibdeps dans fichier-bibliothèque mais
dpkg-shlibdeps n'a pas été en mesure de trouver d'informations de dépendance pour cette bibliothèque.
Pour trouver la dépendance, il a essayé de lier la bibliothèque à un paquet Debian avec l'aide de
dpkg -S fichier-bibliothèque. Puis, il a vérifié les shlibs correspondants et les fichiers symboles
de /var/lib/dpkg/info/ et enfin les différents arbres des paquets construits (debian/*/DEBIAN/).
This failure can be caused by a bad or missing shlibs or symbols file in the package of the library.
It might also happen if the library is built within the same source package and if the shlibs files
has not yet been created (in which case you must fix debian/rules to create the shlibs before calling
dpkg-shlibdeps). Bad RPATH can also lead to the library being found under a non-canonical name
(example: /usr/lib/openoffice.org/../lib/libssl.so.0.9.8 instead of /usr/lib/libssl.so.0.9.8) that's
not associated to any package, dpkg-shlibdeps tries to work around this by trying to fallback on a
canonical name (using realpath(3)) but it might not always work. It's always best to clean up the
RPATH of the binary to avoid problems.
L'appel de dpkg-shlibdeps en mode bavard (-v) fournira beaucoup plus d'informations sur l'endroit où
il a essayé de trouver l'information sur les dépendances. Cela peut être utile si vous ne comprenez
pas pourquoi vous obtenez cette erreur.
VOIR AUSSI
deb-substvars(5), deb-shlibs(5), deb-symbols(5), dpkg-gensymbols(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.22.6 2025-09-18 dpkg-shlibdeps(1)