Provided by: dpkg-dev_1.17.5ubuntu5.8_all 

NOMBRE
dpkg-shlibdeps - Genera dependencias de bibliotecas compartidas de sustitución de variables
SINOPSIS
dpkg-shlibdeps [opción...] [-e]ejecutable [opción...]
DESCRIPCIÓN
dpkg-shlibdeps calcula las dependencias de bibliotecas compartidas de los ejecutables suministrados en
sus argumentos. Las dependencias se añaden al fichero de sustitución de variables debian/substvars como
nombres de variable shlibs:campo-dependencia, donde campo-dependencia es un nombre de campo de
dependencia. Cualquier otra variable que empiece con shlibs: se elimina del fichero.
dpkg-shlibdeps tiene dos posibles fuentes de información para generar la información de dependencias.
Estos son los ficheros symbols y shlibs. Por cada binario que dpkg-shlibdeps analiza, busca la lista de
bibliotecas enlazadas con éste. Entonces, por cada biblioteca, busca el fichero symbols o el fichero
shlibs (en caso de que el primero no exista, o si «debian/shlibs.local» contiene la dependencia
relevante). Se asume que el paquete de la biblioteca proporciona ambos ficheros, y por ello debería estar
disponible como «/var/lib/dpkg/info/paquete.symbols» o «/var/lib/dpkg/info/package.shlibs». El nombre del
paquete se identifica en dos pasos: búsqueda en el sistema del fichero de la biblioteca (buscando en los
mismos directorios que usaría ld.so), y ejecución de dpkg -S library-file para conocer el paquete que
proporciona la biblioteca.
Ficheros de símbolos
Los ficheros de símbolos contienen una información más precisa de las dependencias, proporcionando la
dependencia mínima de cada símbolo que la biblioteca exporta. El script intenta encontrar un fichero de
símbolos asociado al paquete de la biblioteca en las siguientes ubicaciones (se usa la primera
coincidencia):
debian/*/DEBIAN/symbols
La información de biblioteca compartida generada por el proceso de construcción actual, que
también ejecuta dpkg-shlibdeps. Se generan mediante dpkg-gensymbols(1). Sólo se usan en caso de
encontrar la biblioteca en la árbol de construcción del paquete. El fichero de símbolos de ese
árbol de construcción tiene prioridad sobre los ficheros de símbolos de otros paquetes binarios.
/etc/dpkg/symbols/paquete.symbols.arquitectura
/etc/dpkg/symbols/paquete.symbols
Información de redefinición de bibliotecas compartidas por cada sistema. arquitectura es la
arquitectura del sistema actual (obtenido mediante dpkg-architecture - qDEB_HOST_ARCH).
Salida de “dpkg-query --control-path package symbols”
Package-provided shared library dependency information. Unless overridden by --admindir, those
files are located in /var/lib/dpkg.
dpkg-shlibdeps recuerda la versión mínima (más grande) necesaria para cada biblioteca al analizar los
símbolos usados por todos los binarios. Al finalizar el proceso, puede escribir la dependencia mínima
para cada biblioteca usada (siempre que la información de los ficheros symbols sea precisa).
As a safe-guard measure, a symbols file can provide a Build-Depends-Package 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.
Ficheros «shlibs»
Los ficheros «shlibs» asocian de forma directa una librería con una dependencia (sin analizar «symbols»).
Por ello, es más sólido que necesario, pero sencillo y seguro de manipular.
Las dependencias de una biblioteca se buscan en varias ubicaciones. Se usará el primer fichero que
proporcione información de la biblioteca relevante.
debian/shlibs.local
Información acerca de redefinición de dependencias de bibliotecas compartidas específicas al
paquete local.
/etc/dpkg/shlibs.override
Información acerca de redefinición de dependencias de bibliotecas compartidas para cada sistema.
debian/*/DEBIAN/shlibs
La información de bibliotecas compartidas generada por el proceso de construcción actual, que
dpkg-shlibdeps también ejecuta. Sólo se usa si la biblioteca se encuentra en el árbol de
construcción del paquete. El fichero «shlibs» en el árbol de construcción tiene prioridad sobre
otros ficheros «shlibs» de otros paquetes binarios.
Salida de “dpkg-query --control-path package shlibs”
Package-provided shared library dependency information. Unless overridden by --admindir, those
files are located in /var/lib/dpkg.
/etc/dpkg/shlibs.default
Información del sistema acerca de las dependencias predefinidas de bibliotecas compartidas.
Tras ello, se usan las dependencias extraídas directamente (a menos que se hayan omitido debido que se
les identifique como duplicados, o como más débiles que otra dependencia).
OPCIONES
dpkg-shlibdeps interpreta cualquier argumento que no sea una opción como el nombre de un fichero
ejecutable, igual que si se hubiesen proporcionado con -eejecutable.
-eejecutable
Include dependencies appropriate for the shared libraries required by executable. This option can
be used multiple times.
-ldirectory
Add directory to the list of directories to search for private shared libraries (since dpkg
1.17.0). This option can be used multiple times.
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.
-dcampo-dependencias
Añade dependencias al campo campo-dependencias del fichero de control. (Las dependencias para este
campo se ubican en la variable shlibs:campo-dependencias).
La opción -dcampo-dependencias tiene efecto para todos los ejecutables después de dicha opción,
hasta el siguiente -dcampo-dependencias. Por omisión el campo-dependencias es Depends.
Si la misma dependencia (o un conjunto de alternativas) aparece en más de uno de los nombres de
campo de dependencias reconocidos: Pre-Depends, Depends, Recommends, Enhances o Suggests,
dpkg-shlibdeps eliminará automáticamente la dependencia de todos los campos, exceptuando aquél que
contenga las dependencias más importantes.
-pprefijo-de-variable
Provoca que las variables de sustitución empiecen por prefijo-de-variable: en vez de shlibs:.
Asimismo, cualquier variable de sustitución ya existente que empiece por prefijo-de-variable: (en
vez de shlibs:) se eliminará del fichero de sustitución de variables.
-O[filename]
Print substitution variable settings to standard output (or filename if specified), rather than
being added to the substitution variables file (debian/substvars by default).
-ttipo Da prioridad a la información de dependencia de bibliotecas compartidas etiquetada para el tipo de
paquete dado. En caso de no existir ninguna información etiquetada, usa información sin etiquetar
por omisión. El tipo de paquete predefinido es «deb». La información de dependencia de bibliotecas
compartidas se etiqueta para un tipo dado prefijando éste con el nombre del tipo, dos puntos, y un
espacio.
-Lfichero-shlibs-local
Provoca que dpkg-shlibs lea la información sobre dependencias con bibliotecas compartidas desde
fichero-shlibs-local en vez de debian/shlibs.local.
-Tfichero-variables-sustitución
Escribe las variables de sustitución en fichero-sustitución-variables; por omisión
debian/substvars.
-v Activa el modo informativo. Se muestran numerosos mensajes que explican las acciones de
dpkg-shlindeps.
-xpaquete
Excluye el paquete de las dependencias generadas. Es útil para evitar auto-dependencias de
paquetes que proporcionan binarios ELF (ejecutables o extensiones de bibliotecas) y que usan una
biblioteca contenida en el mismo paquete. Esta opción se puede utilizar varias veces para excluir
varios paquetes.
-Sdirectorio-compilación-paquete
Analiza el directorio-compilación-paquete primero al buscar una biblioteca. Es útil cuando el
paquete fuente genera distintas variantes de la misma biblioteca, y quiere asegurar que obtiene la
dependencia de un paquete binario dado. Puede utilizar esta opción varias veces: los directorios
se analizan en el mismo orden antes de analizar los directorios de otros paquetes binarios.
--ignore-missing-info
No devuelve un fallo en caso de no encontrar la información de dependencia de una biblioteca
compartida. No se recomienda utilizar esta opción ya que todas las bibliotecas deberían
proporcionar información de dependencia (mediante los ficheros «shlibs», o ficheros de símbolos),
incluso cuando otros paquetes no los usan actualmente.
--warnings=valor
valor es un campo de bit que define el conjunto de avisos que dpkg-shlibdeps puede mostrar. Bit 0
(valor=1) activa el aviso «symbol sym used by binary found in none of the libraries», el bit 1
(valor=2) activa el aviso «package could avoid a useless dependency», y bit 2 (valor=4) activa el
aviso «binary shouldn't be linked with library». El valor predefinido es 3: los dos primeros
avisos están activados por omisión, y no el último. Defina el valor con 7 si desea que todos los
avisos estén activos.
--admindir=directorio
Cambia el directorio con la base de datos de dpkg. Por omisión es /var/lib/dpkg.
-?, --help
Muestra el modo de uso y termina.
--version
Muestra la versión y termina.
DIAGNÓSTICOS
Warnings
Debido a que dpkg-shlibdeps analiza el conjunto de símbolos usado por cada binario del paquete generado,
puede mostrar avisos en varias situaciones. Éstos informan de aspectos mejorables del paquete. En la
mayoría de los casos, conciernen directamente a las fuentes original. A continuación se muestran los
varios mensajes de advertencia que pueden aparecer, por orden de importancia decreciente.
symbol sym used by binary found in none of the libraries.
El símbolo indicado no se encontró en las bibliotecas enlazadas con el binario. Posiblemente,
binario es una biblioteca, y necesita estar enlazado con una biblioteca adicional durante el
proceso de construcción (opción -lbiblioteca del enlazador).
binary contains an unresolvable reference to symbol sym: it's probably a plugin
El símbolo indicado no se ha encontrado en las bibliotecas enlazadas con el binario.
Probablemente, el binario es una extensión, y cabe que el programa que carga tal extensión
proporciona el símbolo. Teóricamente, una extensión no tiene ningún «SONAME», pero sí este
binario, y por ello no se le puede identificar claramente como tal. Aún así, el hecho de que el
binario se guarda en un directorio no público es una indicación de que no es una biblioteca
compartida normal. Si el binario es realmente una extensión, no haga caso de este aviso. Siempre
cabe la posibilidad de que es una biblioteca real, y que los programas que enlazan con el usan un
«RPATH» para que el cargador dinámico lo encuentre. En tal caso, la biblioteca está rota y precisa
un arreglo.
package could avoid a useless dependency if binary was not linked against library (it uses none of the
library's symbols)
Ninguno de los binarios enlazados con la biblioteca usan símbolos que proporciona la biblioteca.
Al arreglar todos los binarios, evitaría la dependencia asociada a esta biblioteca (a menos que la
dependencia se genere también para otra biblioteca que sí la usa).
package could avoid a useless dependency if binaries were not linked against library (they uses none of
the library's symbols)
Idéntico al aviso anterior, pero para varios binarios.
binary should not be linked against library (it uses none of the library's symbols)
El binario está enlazado con una biblioteca que no necesita. No es un problema, pero puede
optimizar levemente el tiempo de carga del binario si no enlaza tal binario a la biblioteca. Este
aviso revisa la misma información que el anterior, pero lo hace para cada binario, en lugar de una
revisión global de todos los binarios.
Errors
dpkg-shlibdeps fallará si no puede encontrar ninguna biblioteca pública usada por un binario, o si no
existe ninguna información de dependencia asociada a esta biblioteca (el fichero «shlibs», o el fichero
«symbols»). Una biblioteca pública tiene un «SONAME», el cual tiene información de versión
(biblioteca.so.x). Una biblioteca privada (como una extensión) no debería tener un «SONAME», y por ello
no necesita información de versión.
couldn't find library library-soname needed by binary (its RPATH is 'rpath')
The binary uses a library called library-soname but dpkg-shlibdeps has been unable to find the
library. dpkg-shlibdeps creates a list of directories to check as following: directories listed
in the RPATH of the binary, directories listed in /etc/ld.so.conf, directories added by the -l
option, directories listed in the LD_LIBRARY_PATH environment variable, and standard public
directories (/lib, /usr/lib, /lib32, /usr/lib32, /lib64, /usr/lib64). Then it checks those
directories in the package's build tree of the binary being analyzed, in the packages' build trees
indicated with the -S command-line option, in other packages' build trees that contains a
DEBIAN/shlibs or DEBIAN/symbols file and finally in the root directory. If the library is not
found in any of those directories, then you get this error.
If the library not found is in a private directory of the same package, then you want to add the
directory with -l. If it's in another binary package being built, you want to make sure that the
shlibs/symbols file of this package is already created and that -l contains the appropriate
directory if it also is in a private directory.
no dependency information found for library-file (used by binary).
dpkg-shlibdeps encontró la biblioteca que binario necesita en fichero-biblioteca, pero no ha sido
capaz de encontrar ninguna información de dependencia para esta biblioteca. Para encontrar la
dependencia, intentó establecer una correlación de la biblioteca con el paquete Debian con la
ayuda de dpkg -S fichero-biblioteca. Después revisó los correspondientes ficheros «shlibs» y
«symbols» en «/var/lib/dpkg/info/», y en los distintos árboles de construcción del paquete
(«debian/*/DEBIAN/»).
Este fallo puede estar causado por un fichero «shlibs» o «symbols» incorrecto o ausente en el
paquete de la biblioteca. También cabe que la biblioteca se construya dentro del mismo paquete
fuente, y que aún no se haya creado el fichero «shlibs» (en cuyo caso debería arreglar
«debian/rules» para crear «shlibs» antes de ejecutar dpkg-shlibdeps). Un incorrecto «RPATH»
también puede llevar a encontrar la biblioteca bajo un nombre no canónico (por ejemplo,
«/usr/lib/openoffice.org/../lib/libssl.so.0.9.8» en lugar de «/usr/lib/libssl.so.0.9.8») que no
esté asociado a ningún paquete. dpkg-shlibdeps intenta evitar esto usando un nombre canónico (con
realpath(3)), pero no siempre funciona. Siempre es mejor limpiar el «RPATH» del binario para
evitar problemas.
Calling dpkg-shlibdeps in verbose mode (-v) will provide much more information about where it
tried to find the dependency information. This might be useful if you don't understand why it's
giving you this error.
VÉASE TAMBIÉN
deb-shlibs(5), deb-symbols(5), dpkg-gensymbols(1).
TRADUCTOR
Rudy Godoy <rudy@kernel-panik.org>, Rubén Porras <nahoo@inicia.es>, Bruno Barrera C.
<bruno.barrera@igloo.cl>, Carlos Izquierdo <gheesh@ertis.net>, Esteban Manchado y NOK. Debian L10n
Spanish <debian-l10n-spanish@lists.debian.org>.
Revisiones por Santiago Vila <sanvila@unex.es>, Javier Fernández-Sanguino, Rubén Porras, Luis Uribe y
Omar Campagne.
Proyecto Debian 2013-09-06 dpkg-shlibdeps(1)