Linux repositories inspector

dpkg-shlibdeps(1) - Français

1.20.0

dpkg-dev

Debian package development tools

dpkg-lang

Translations for package dpkg

dpkg

Debian package management system

NOM

dpkg-shlibdeps - G\(’en\(’erateur de variables de substitution de d\(’ependances pour biblioth\(‘eques partag\(’ees

SYNOPSIS

dpkg-shlibdeps [option...] [-e]ex\(’ecutable [option...]

DESCRIPTION

dpkg-shlibdeps calcule, pour les ex\(’ecutables indiqu\(’es dans ses param\(‘etres, les d\(’ependances envers les biblioth\(‘eques partag\(’ees. Ces d\(’ependances sont ajout\(’ees au fichier de variables de substitution debian/substvars sous la forme shlibs:champ-d\(’ependance o\(‘u champ-d\(’ependance est le nom du champ de d\(’ependance. Toute autre variable apr\(‘es shlibs: est supprim\(’ee du fichier.
dpkg-shlibdeps a deux sources possibles pour cr\(’eer les informations concernant les d\(’ependances, soit les fichiers symbols, soit les fichiers shlibs. Pour chaque fichier binaire qu’il analyse, dpkg-shlibdeps recherche la liste des biblioth\(‘eques partag\(’ees qui lui sont li\(’ees. 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\(’ependances appropri\(’ees). Ces deux fichiers sont cens\(’es \(^etre fournis par le paquet de la biblioth\(‘eque et disponibles dans /var/lib/dpkg/info/paquet.symbols ou /var/lib/dpkg/info/paquet.shlibs. Le nom du paquet est trouv\(’e en deux \(’etapes : en cherchant le fichier de la biblioth\(‘eque sur le syst\(‘eme, dans le r\(’epertoire que ld.so utiliserait, puis en utilisant dpkg -S fichier-biblioth\(‘eque pour trouver le paquet qui fournit cette biblioth\(‘eque.

Fichiers symboles

Les fichiers symboles contiennent des informations de d\(’ependances plus fines en fournissant les d\(’ependances minimales pour chaque symbole de la biblioth\(‘eque export\(’ee. Le script essaie de trouver un fichier de symboles associ\(’e \(‘a un paquet de biblioth\(‘eque dans les emplacements suivants (le premier trouv\(’e est utilis\(’e) :
debian/*/DEBIAN/symbols Les informations de biblioth\(‘eque partag\(’ee g\(’en\(’er\(’ee par l’actuel processus de construction qui invoque aussi dpkg-shlibdeps. Elles sont g\(’en\(’er\(’ees par dpkg-gensymbols(1) et ne sont utilis\(’ees que si la biblioth\(‘eque 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 Les informations de d\(’ependance de biblioth\(‘eque partag\(’ee principales par syst\(‘eme. arch est l’architecture du syst\(‘eme actuel (obtenu par dpkg-architecture -qDEB_HOST_ARCH).
Affichage de \(lqdpkg-query --control-path paquet symbols\(rq Les informations de d\(’ependance de biblioth\(‘eque partag\(’ee fournies par le paquet. Sauf indication contraire par le biais de --admindir, ces fichiers sont par d\(’efaut dans /var/lib/dpkg.
Lors de l’analyse des symboles utilis\(’es par tous les binaires, dpkg-shlibdeps retient la (plus grande) version minimale n\(’ecessaire pour chaque biblioth\(‘eque. \(‘A la fin du processus, il est capable d’\(’ecrire la d\(’ependance minimale pour toutes les biblioth\(‘eques utilis\(’ees (\(‘a 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\(’eta-information et dpkg-shlibdeps en extraira la version minimale requise par le paquet correspondant depuis ce champ Build-Depends et utilisera cette version si elle est sup\(’erieure \(‘a la version minimale calcul\(’ee par l’examen des symboles.

Fichiers Shlibs

Les fichiers Shlibs associent directement une biblioth\(‘eque \(‘a une d\(’ependance (sans regarder les symboles). C’est donc souvent plus puissant que les besoins r\(’eels mais cela reste tr\(‘es s\(^ur et facile \(‘a manipuler.
Les d\(’ependances d’une biblioth\(‘eque sont recherch\(’ees \(‘a plusieurs endroits. Le premier fichier d’informations trouv\(’e qui concerne la biblioth\(‘eque est utilis\(’e :
debian/shlibs.local Fichier particulier \(‘a un paquet rempla\(,cant les informations qui concernent les d\(’ependances envers des biblioth\(‘eques partag\(’ees.
/etc/dpkg/shlibs.override Fichier syst\(‘eme rempla\(,cant les informations qui concernent les d\(’ependances envers des biblioth\(‘eques partag\(’ees.
debian/*/DEBIAN/shlibs Information sur la biblioth\(‘eque partag\(’ee g\(’en\(’er\(’ee par le processus actuel de construction qui invoque aussi dpkg-shlibdeps. Il n’est utilis\(’e que si la biblioth\(‘eque se trouve dans l’arbre de construction du paquet. Le fichier shlibs qui construit l’arbre a priorit\(’e sur les fichiers shlibs des autres paquets binaires.
Affichage de \(Fo dpkg-query --control-path paquet shlibs \(Fc Les informations de d\(’ependance de biblioth\(‘eque partag\(’ee fournies par le paquet. Sauf indication contraire par le biais de --admindir, ces fichiers sont par d\(’efaut dans /var/lib/dpkg.
/etc/dpkg/shlibs.default Fichier syst\(‘eme par d\(’efaut concernant les informations de d\(’ependance envers des biblioth\(‘eques partag\(’ees.
Les d\(’ependances trouv\(’ees sont ensuite directement utilis\(’ees (sauf si elles sont filtr\(’ees parce qu’elles ont \(’et\(’e identifi\(’ees comme \(’etant en double, ou d’un niveau plus faible qu’une autre d\(’ependance).

OPTIONS

dpkg-shlibdeps interpr\(‘ete des arguments sans option comme des commandes ex\(’ecutables, comme si on avait simplement donn\(’e -eex\(’ecutable.
-eex\(’ecutable
Cette option inclut les bonnes d\(’ependances envers les biblioth\(‘eques partag\(’ees que demande ex\(’ecutable. Cette option peut \(^etre utilis\(’ee plusieurs fois.
-lr\(’epertoire
Ajoute r\(’epertoire au d\(’ebut de la liste des r\(’epertoires o\(‘u chercher des biblioth\(‘eques partag\(’ees priv\(’ees (depuis dpkg 1.17.0). Cette option peut \(^etre utilis\(’ee plusieurs fois.
Note : Utilisez cette option plut\(^ot que le r\(’eglage de LD_LIBRARY_PATH, parce que cette variable d’environnement est utilis\(’ee pour contr\(^oler l’\(’editeur de liens d’ex\(’ecution et se servir d’elle pour d\(’efinir les chemins des biblioth\(‘eques partag\(’ees au moment de la construction peut \(^etre probl\(’ematique, par exemple, lors d’une compilation crois\(’ee.
-dchamp-d\(’ependance
Cette option ajoute les d\(’ependances destin\(’ees au champ \(Fo d\(’ependance \(Fc du fichier de contr\(^ole champ-d\(’ependance. (Les d\(’ependances pour ce champ sont dans la variable shlibs:champ-d\(’ependance.)
L’option -dchamp-d\(’ependance concerne tous les ex\(’ecutables qui suivent l’option, jusqu’\(‘a la prochaine option -dchamp-d\(’ependance. Par d\(’efaut, champ-d\(’ependance vaut Depends.
Quand, dans plusieurs champs reconnus ayant trait aux d\(’ependances comme les champs Pre-Depends, Depends, Recommends, Enhances ou Suggests appara\(^it la m\(^eme entr\(’ee (ou bien un ensemble d’alternatives), dpkg-shlibdeps supprime automatiquement les d\(’ependances dans tous les champs sauf celui qui repr\(’esente les d\(’ependances les plus importantes.
-ppr\(’efixe-pour-le-nom-des-variables
Fait commencer les variables de substitution par pr\(’efixe-pour-le-nom-des-variables: au lieu de shlibs:. De m\(^eme, toute variable de substitution commen\(,cant par pr\(’efixe-pour-le-nom-des-variables: (au lieu de shlibs:) est enlev\(’ee du fichier de substitution des variables.
-O[nom-de-fichier]
Affiche les d\(’efinitions des variables de substitution sur la sortie standard (ou nom-de-fichier si sp\(’ecifi\(’e, depuis dpkg 1.17.2), plut\(^ot que de les ajouter dans le fichier de substitution des variables qui est par d\(’efaut debian/substvars.
-ttype Pr\(’ef\(’erer les informations sur les d\(’ependances des biblioth\(‘eques partag\(’ees qui sont \(’etiquet\(’ees pour un type de paquet donn\(’e. Si aucune information de type n’est donn\(’ee, il n’utilisera pas d’information. Par d\(’efaut, le type de paquet est deb. On peut cr\(’eer une \(’etiquette pour ces informations en les pr\(’efixant par le nom du type, un deux-points et une espace.
-Lfichier-local-shlibs
Lire les informations de remplacement concernant les d\(’ependances envers les biblioth\(‘eques partag\(’ees dans fichier-local-shlibs au lieu de debian/shlibs.local.
-Tfichier-substvars
\(’Ecrire les variables de substitution dans fichier-substvars ; le fichier par d\(’efaut est debian/substvars.
-v Active le mode bavard (depuis dpkg 1.14.8). De nombreux messages sont affich\(’es pour expliquer ce que dpkg-shlibdeps fait.
-xpackage
Exclut le paquet des d\(’ependances g\(’en\(’er\(’ees (depuis dpkg 1.14.8). Cela \(’evite les auto-d\(’ependances pour les paquets fournissant des ex\(’ecutables ELF (ex\(’ecutables ou modules compl\(’ementaires de biblioth\(‘eque) qui utilisent une biblioth\(‘eque incluse dans ce m\(^eme paquet. Cette option peut \(^etre utilis\(’ee plusieurs fois pour exclure plusieurs paquets.
-Sr\(’epertoire-construction-paquet
Recherche dans r\(’epertoire-construction-paquet en premier et essaie de trouver une biblioth\(‘eque (depuis dpkg 1.14.15). C’est utile lorsque le paquet source construit plusieurs saveurs de la m\(^eme biblioth\(‘eque et que vous voulez vous assurer que vous obtiendrez la d\(’ependance d’un paquet binaire donn\(’e. Cette option peut \(^etre utilis\(’ee plusieurs fois : les r\(’epertoires seront examin\(’es dans le m\(^eme ordre avant les r\(’epertoires d’autres paquets binaires.
-Ir\(’epertoire-construction-paquet
Ignore r\(’epertoire-construction-paquet lors de la recherche des fichiers shlibs, de symboles et des biblioth\(‘eques partag\(’ees (depuis dpkg 1.18.5). Cette option peut \(^etre utilis\(’ee plusieurs fois.
--ignore-missing-info
Pas d’\(’echec si l’information de d\(’ependance ne peut pas \(^etre trouv\(’ee pour une biblioth\(‘eque partag\(’ee (depuis dpkg 1.14.8). L’utilisation de cette option est d\(’econseill\(’ee, toutes les biblioth\(‘eques devraient fournir leurs informations de d\(’ependance (que ce soit avec les fichiers shlibs, ou avec les fichiers symboles), m\(^eme si elles ne sont pas encore utilis\(’ees par d’autres paquets.
--warnings=valeur
valeur est un champ de \(Fo bit \(Fc d\(’efinissant l’ensemble des avertissements qui peuvent \(^etre \(’emis par dpkg-shlibdeps (depuis dpkg 1.14.17). Le bit 0 (valeur = 1) active l’avertissement \(Fo symbole sym utilis\(’e par le binaire trouv\(’e dans aucune des biblioth\(‘eques \(Fc. Le bit 1 (valeur = 2) active l’avertissement \(Fo le paquet pourrait \(’eviter une d\(’ependance inutile \(Fc. Le bit 2 (valeur = 4) active l’avertissement \(Fo Le binaire ne devrait pas \(^etre li\(’e \(‘a biblioth\(‘eque \(Fc. La valeur par d\(’efaut est 3 : les deux premi\(‘eres mises en garde sont actives par d\(’efaut, la derni\(‘ere ne l’est pas. Positionnez la valeur \(‘a 7 si vous souhaitez que tous les avertissements soient actifs.
--admindir=r\(’epertoire
Changer l’endroit o\(‘u se trouve la base de donn\(’ees de dpkg (depuis dpkg 1.14.0). Par d\(’efaut, c’est /var/lib/dpkg.
-?, --help Affiche un message d’aide puis quitte.
--version
Affiche le num\(’ero de version puis quitte.

ENVIRONNEMENT

DPKG_COLORS
D\(’efinit le mode de couleur (depuis dpkg 1.18.5). Les valeurs actuellement accept\(’ees sont auto (par d\(’efaut), always et never.
DPKG_NLS
Si cette variable est d\(’efinie, elle sera utilis\(’ee pour d\(’ecider 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\(’efaut).

DIAGNOSTICS

Avertissements

Depuis que dpkg-shlibdeps analyse l’ensemble des symboles utilis\(’es par chaque binaire g\(’en\(’er\(’e par le paquet, il est en mesure d’\(’emettre des avertissements dans plusieurs cas. Ils vous informent des choses qui peuvent \(^etre am\(’elior\(’ees dans le paquet. Dans la plupart des cas, ces am\(’eliorations concernent directement les sources amont. Dans l’ordre d’importance d\(’ecroissant, voici les diff\(’erents avertissements que vous pouvez rencontrer :
symbole sym utilis\(’e par binaire trouv\(’e dans aucune des biblioth\(‘eques.
Le symbole indiqu\(’e n’a pas \(’et\(’e trouv\(’e dans les biblioth\(‘eques li\(’ees au binaire. Le binaire est probablement plut\(^ot une biblioth\(‘eque et il doit \(^etre li\(’e avec une biblioth\(‘eque suppl\(’ementaire durant le processus de construction (l’option -lbiblioth\(‘eque de l’\(’editeur de liens).
binary contient une r\(’ef\(’erence non r\(’esolue au symbole sym : il s’agit probablement d’un greffon (plugin)
Le symbole indiqu\(’e n’a pas \(’et\(’e trouv\(’e dans les biblioth\(‘eques li\(’ees avec le fichier binaire. Le binaire est tr\(‘es probablement un greffon (plugin) et le symbole est probablement fourni par le programme qui charge ce greffon. En th\(’eorie, un greffon n’a pas de \(Fo SONAME \(Fc mais ce binaire en poss\(‘ede un et n’a pas pu \(^etre identifi\(’e en tant que tel. Cependant, le fait que le binaire soit stock\(’e dans un r\(’epertoire non public est une indication forte qu’il ne s’agit pas d’une biblioth\(‘eque partag\(’ee normale. Si le binaire est vraiment un greffon, vous pouvez ignorer cet avertissement. Il existe cependant une possibilit\(’e qu’il s’agisse d’un vrai binaire et que les programmes avec lequel il est li\(’e utilisent un RPATH afin que le chargeur dynamique le trouve. Dans ce cas, la biblioth\(‘eque est incorrecte et doit \(^etre corrig\(’ee.
paquet pourrait \(’eviter une d\(’ependance inutile si le binaire n’\(’etait pas li\(’e avec biblioth\(‘eque (il ne fait usage d’aucun de ses symboles)
Aucun des binaires li\(’es \(‘a la biblioth\(‘eque utilise les symboles qu’elle fournit. En corrigeant tous les binaires, vous \(’eviteriez la d\(’ependance associ\(’ee \(‘a cette biblioth\(‘eque (\(‘a moins que la m\(^eme d\(’ependance soit \(’egalement li\(’ee \(‘a une autre biblioth\(‘eque qui est elle r\(’eellement utilis\(’ee).
paquet pourrait \(’eviter une d\(’ependance inutile si les binaires n’\(’etaient pas li\(’es avec biblioth\(‘eque (ils ne font usage d’aucun de ses symboles)
Identique \(‘a l’avertissement pr\(’ec\(’edent, pour des binaires multiples.
le binaire ne devrait pas \(^etre li\(’e avec la biblioth\(‘eque (il ne fait usage d’aucun de ses symboles)
Le binaire est li\(’e \(‘a une biblioth\(‘eque dont il n’a pas besoin. Ce n’est pas un probl\(‘eme mais de petites am\(’eliorations de performance dans le temps de chargement de celui-ci peuvent \(^etre obtenues en ne le liant pas \(‘a cette biblioth\(‘eque. Cet avertissement v\(’erifie la m\(^eme information que la pr\(’ec\(’edente mais elle le fait pour tous les binaires au lieu de ne faire le contr\(^ole qu’au niveau global sur tous les binaires analys\(’es.

Erreurs

dpkg-shlibdeps \(’echouera s’il ne peut pas trouver de biblioth\(‘eque publique utilis\(’ee par un binaire ou si cette biblioth\(‘eque n’a pas d’informations sur les d\(’ependances associ\(’ees (soit le fichier shlibs, soit le fichier des symboles). Une biblioth\(‘eque publique a un SONAME et un num\(’ero de version (libsomething.so.X). Une biblioth\(‘eque priv\(’ee (comme un module additionnel) ne devrait pas avoir de SONAME et n’a pas besoin d’avoir de version.
impossible de trouver la biblioth\(‘eque library-soname demand\(’ee par le binaire (son RPATH est \(Fo rpath \(Fc)
Le binaire utilise une biblioth\(‘eque appel\(’ee library-soname mais dpkg-shlibdeps n’a pas \(’et\(’e en mesure de trouver cette biblioth\(‘eque. dpkg-shlibdeps cr\(’ee une liste de r\(’epertoires \(‘a v\(’erifier de la mani\(‘ere suivante : les r\(’epertoires \(’enum\(’er\(’es dans le RPATH du binaire, les r\(’epertoires ajout\(’es par l’option -l, les r\(’epertoires list\(’es dans la variable d’environnement LD_LIBRARY_PATH, les r\(’epertoires crois\(’es multi-architerctures (par exemple, /lib/arm64-linux-gnu, /usr/lib/arm64-linux-gnu), les r\(’epertoires publics standard (/lib, /usr/lib), les r\(’epertoires list\(’es dans /etc/ld.so.conf et les r\(’epertoires obsol\(‘etes multilib (/lib32, /usr/lib32, /lib64, /usr/lib64). Ensuite, il v\(’erifie les r\(’epertoires qui sont dans l’arbre de construction du paquet binaire en cours d’analyse, dans l’arbre de construction du paquet indiqu\(’e 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\(’epertoire racine. Si la biblioth\(‘eque n’est pas trouv\(’ee dans l’un de ces r\(’epertoires, alors ce message d’erreur est obtenu.
Si la biblioth\(‘eque non trouv\(’ee est cependant disponible dans le r\(’epertoire priv\(’e de ce m\(^eme paquet, alors il vous faut ajouter ce r\(’epertoire 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\(’ej\(‘a cr\(’e\(’e et que -l contient le r\(’epertoire appropri\(’e si c’est aussi un r\(’epertoire priv\(’e.
aucune information de d\(’ependance trouv\(’ee pour la biblioth\(‘eque (utilis\(’ee par le binaire).
La biblioth\(‘eque n\(’ecessaire au binaire a \(’et\(’e trouv\(’ee par dpkg-shlibdeps dans fichier-biblioth\(‘eque mais dpkg-shlibdeps n’a pas \(’et\(’e en mesure de trouver d’informations de d\(’ependance pour cette biblioth\(‘eque. Pour trouver la d\(’ependance, il a essay\(’e de lier la biblioth\(‘eque \(‘a un paquet Debian avec l’aide de dpkg -S fichier-biblioth\(‘eque. Puis, il a v\(’erifi\(’e les shlibs correspondants et les fichiers symboles de /var/lib/dpkg/info/ et enfin les diff\(’erents arbres des paquets construits (debian/*/DEBIAN/).
Cet \(’echec peut \(^etre caus\(’e par un shlibs ou un fichier de symboles qui serait mauvais ou manquant dans le paquet. Une autre cause serait que la biblioth\(‘eque soit construite au sein du m\(^eme paquet source et que les fichiers shlibs n’aient pas encore \(’et\(’e cr\(’e\(’es (dans ce cas debian/rules doit \(^etre modifi\(’e pour cr\(’eer le shlibs avant l’appel de dpkg-shlibdeps). Un mauvais RPATH peut aussi conduire \(‘a ce que la biblioth\(‘eque soit trouv\(’ee sous un nom non canonique (comme : /usr/lib/openoffice.org/../lib/libssl.so.0.9.8 au lieu de /usr/lib/libssl.so.0.9.8) qui n’est associ\(’e \(‘a aucun paquet, dpkg-shlibdeps essaie de contourner cela en se repliant vers un nom canonique (en utilisant realpath(3)), mais cela ne fonctionne pas toujours. Il est toujours pr\(’ef\(’erable de bien nettoyer le RPATH du binaire afin d’\(’eviter ces probl\(‘emes.
L’appel de dpkg-shlibdeps en mode bavard (-v) fournira beaucoup plus d’informations sur l’endroit o\(‘u il a essay\(’e de trouver l’information sur les d\(’ependances. Cela peut \(^etre utile si vous ne comprenez pas pourquoi vous obtenez cette erreur.

TRADUCTION

Ariel VARDI <>, 2002. Philippe Batailler, 2006. Nicolas Fran\(,cois, 2006. Veuillez signaler toute erreur \(&#145;a <>.
⇧ Top