Provided by:
dpkg-dev_1.15.5.6ubuntu4_all 
NOM
dpkg-shlibdeps - générateur de variables de substitution de dépendances
pour bibliothèques partagées
SYNOPSIS
dpkg-shlibdeps [options] exécutable|-eexécutable [options]
DESCRIPTION
dpkg-shlibdeps calcule, pour les exécutables nommés dans ses arguments,
les dépendances envers les bibliothèques partagées. Ces dépendances
sont ajoutées au fichier debian/substvars sous la forme
shlibs:dependencyfield où dependencyfield 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 sensé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 les fichiers de la bibliothèque sur le système,
dans le répertoire que ld.so utiliserait, puis un 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
L’information des bibliothèques partagées générée par l’actuel
processus de construction qui invoque aussi dpkg-shlibdeps.
Elles sont générées par dpkg-gensymbols(1) et ne sont utilisées
que si la bibliothèque se trouve dans l’arbre de construction
d’un paquet. Le fichier des symboles qui construit l’arbre
s’appuie sur les fichiers de symboles d’autres paquets binaires.
/etc/dpkg/symbols/paquet.symbols.architecture
/etc/dpkg/symbols/paquet.symbols
L’information de dépendance des bibliothèques partagées associée
aux systèmes. arch est l’architecture du système actuel (obtenu
par dpkg-architecture -qDEB_HOST_ARCH).
admindir/info/paquet.symbols
Paquet fournissant des informations concernant les dépendances
envers des bibliothèques partagées. Sauf indication contraire,
admindir est par défaut « /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).
Comme garde-fou, un fichier de symboles peut fournir un champ
Build-Depends-Package de méta-information et dpkg-shlibdeps en extraira
la version minimale requise par le paquet correspondant depuis ce champ
Build-Depends et utiliser cette version si elle est supérieure à la
version minimale calculée par l’examen des symboles.
Fichiers Shlibs
Les fichiers Shlibs associent directement une bibliothèque à une
dépendance (sans regarder les symboles). Il agit donc souvent plus
fortement que ce dont on aurait besoin mais il 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é 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.
admindir/info/paquet.shlibs
Paquet fournissant des informations concernant les dépendances
envers des bibliothèques partagées. Sauf indication contraire,
admindir est par défaut « /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.
-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 Affiche les définitions des variables de substitution sur la
sortie standard, 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 verbeux. De nombreux messages sont affichés pour
expliquer ce que dpkg-shlibdeps fait.
-xpackage
Exclut le paquet des dépendances générées. 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.
-Spkgbuilddir
Recherche dans pkgbuilddir en premier et essaie de trouver une
bibliothèque. 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.
--ignore-missing-info
Pas d’échec si l’information de dépendance ne peut pas être
trouvée pour une bibliothèque partagée. 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. 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 « la dépendance à la
bibliothèque pourrait être évitée\ ». Le bit 2 (valeur = 4)
active l’avertissement « Le binaire ne devrait pas être lié à la
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=dir
Change l’endroit où se trouve la base de données de dpkg. Par
défaut, c’est /var/lib/dpkg.
-h, --help
Affiche un message d’aide puis quitte.
--version
Affiche le numéro de version puis quitte.
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 elle doit être liée 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 bilbiohtèques
liées avec le fichier binaire. Le binaire es très probablement
un greffon (plugin) et le symbole est probablement fourni par le
programme qui charge ce greffon. En théori, 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.
la dépendance sur la bibliothèque pourrait être évitée si les binaires
inutiles nâ€â€™Ã©taient pas liés à celle-ci (ils nâ€â€™utilisent aucun de ses
symboles).
Aucun des binaires liés à la bibliothèque 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).
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 les 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 listés dans
/etc/ld.so.conf, les répertoires listés dans la variable
d’environnement LD_LIBRARY_PATH, et les répertoires publics
standard (/lib, /usr/lib, /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 paquets indiqué avec l’option de
ligne de commande -S, dans les autres arbres de paquets qui
contiennent des fichiers DEBIAN/shlibs ou un 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 dans LD_LIBRARY_PATH. S’il est dans un autre
paquet binaire en cours de construction, alors assurez-vous que
le fichier shlibs/symbols de ce paquet est déjà créé et que
LD_LIBRARY_PATH contient le répertoire approprié si c’est aussi
un répertoire privé.
aucune information de dépendance trouvé 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/).
Cet échec peut être causé par un shlibs ou un fichier de
symboles qui serait mauvais ou manquant dans le paquet. Une
autre cause serait que la bibliothèque soit construite au sein
du même paquet source et que les fichiers shlibs n’aient pas
encore été créés (dans ce cas debian/rules doit être modifié
pour créer le shlibs avant l’appel de dpkg-shlibdeps). Un
mauvais RPATH peut aussi conduire à ce que la bibliothèque soit
trouvée sous un nom non-canonique (comme:
/usr/lib/gcc/i486-linux-gnu/4.2.3/../../../../lib/libssl.so.9.8
au lieu de /usr/lib/libssl.so.0.9.8) qui n’est associé à aucun
paquet, dpkg-shlibdeps essaie de travailler sur ce nom
non-canonique (en utilisant realpath(3)), mais cela ne
fonctionne pas toujours. Il est toujours préférable de bien
nettoyer le RPATH du binaire afin d’éviter ces problèmes.
L’appel de dpkg-shlibdeps en mode verbeux (-v) fournira beaucoup
plus informations sur l’endroit où il a essayé de trouver
l’information sur les dépendances. Ceci peut être utile si vous
ne comprenez pas pourquoi vous obtenez cette erreur.
VOIR AUSSI
deb-shlibs(5), deb-symbols(5), dpkg-gensymbols(1).
AUTEURS
Copyright © 1995-1996 Ian Jackson
Copyright © 2000 Wichert Akkerman
Copyright © 2006 Frank Lichtenheld
Copyright © 2007-2008 Raphaël Hertzog
Ce programme est un logiciel libre\ ; voyez la « GNU General Public
Licence\ » version 2 ou supérieure pour le copyright. Il n’y a PAS de
garantie.
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>.