dpkg-shlibdeps

Autres langues

Langue: fr

Version: 2008\-08\-18 (debian - 07/07/09)

Section: 1 (Commandes utilisateur)

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:dependencyfielddependencyfield est le nom du champ de «dépendance ». Toute autre variable après shlibs: est supprimée du fichier.

dpkg-shlibdeps has two possible sources of information to generate dependency information. Either symbols files or shlibs files. For each binary that dpkg-shlibdeps analyzes, it finds out the list of libraries that it's linked with. Then, for each library, it looks up either the symbols file, or the shlibs file (if the former doesn't exist or if debian/shlibs.local contains the relevant dependency). Both files are supposed to be provided by the library package and should thus be available as /var/lib/dpkg/info/package.symbols or /var/lib/dpkg/info/package.shlibs. The package name is identified in two steps: find the library file on the system (looking in the same directories that ld.so would use), then use dpkg -S library-file to lookup the package providing the library.

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 contains an unresolvable reference to symbol sym: it's probably a plugin
The indicated symbol has not been found in the libraries linked with the binary. The binary is most likely a plugin and the symbol is probably provided by the program that loads this plugin. In theory a plugin doesn't have any SONAME but this binary does have one and as such it could not be clearly identified as such. However the fact that the binary is stored in a non-public directory is a strong indication that's it's not a normal shared library. If the binary is really a plugin, then disregard this warning. But there's always the possibility that it's a real library and that programs linking to it are using an RPATH so that the dynamic loader finds it. In that case, the library is broken and needs to be fixed.
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>.