ubuntu - found - install.deb debian
dpkg-shlibdeps: error: no se encontró información de dependencia para (8)
En lugar de simplemente ignorar el error, es posible que también desee corregir el origen del error, que generalmente es un archivo package.shlibs
o package.symbols
faltante o incorrecto en el paquete que contiene la biblioteca compartida que desencadena el error.
[1] documenta cómo dpkg-shlibdeps
usa el package.shlibs
resp. package.symbols
, files, [2] documenta el formato de los archivos package.shlibs
y package.symbols
.
Estoy compilando un paquete Deb y cuando ejecuto dpkg-buildpackage obtengo:
dpkg-shlibdeps: error: no dependency information found for /usr/local/lib/libopencv_highgui.so.2.3
...
make: *** [binary-arch] Error 2
Esto sucede porque instalé la dependencia manualmente. Sé que el problema se solucionará si instalo la dependencia (o uso la instalación de verificación), y quiero generar el paquete de todos modos porque no estoy interesado en la verificación de la dependencia. Sé que puedo dar a dpkg-shlibdeps la opción --ignore-missing-info
que evita un error si no se puede encontrar la información de dependencia. Pero no sé cómo pasar esta opción a dpkg-shlibdeps ya que estoy usando dpkg-buildpackage y las llamadas a dpkg-buildpackage dpkg-shlibdeps ...
Ya lo he intentado:
sudo dpkg-buildpackage -rfakeroot -d -B
Y con:
export DEB_DH_MAKESHLIBS_ARG=--ignore-missing-info
como root
¿Algunas ideas?
Finalmente lo hice de la manera brutal:
Edité el script / usr / bin / dpkg-shlibdeps, cambiando esto:
my $ignore_missing_info = 0;
a
my $ignore_missing_info = 1;
Otra forma más, sin modificar los scripts de construcción, simplemente creando un archivo.
Puede especificar anulaciones shlib locales creando debian/shlibs.local
con el siguiente formato: library-name soname-version dependencies
Por ejemplo, dado el siguiente (recortado) ldd /path/to/binary
salida ldd /path/to/binary
libevent-2.0.so.5 => /usr/lib/libevent-2.0.so.5 (0x00007fc9e47aa000)
libgcrypt.so.20 => /usr/lib/libgcrypt.so.20 (0x00007fc9e4161000)
libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007fc9e3b1a000)
El contenido de debian/shlibs.local
sería:
libevent-2.0 5 libevent-2.0
libgcrypt 20 libgcrypt
libpthread 0 libpthread
La lista de "dependencias" (tercera columna) no necesita ser 100% precisa, solo uso el nombre de la biblioteca de nuevo.
Por supuesto, esto no es necesario en un sistema de Debian que tenga estas cosas definidas en /var/lib/dpkg/info
(que puede usarse como inspiración para estas anulaciones). El mío no es un sistema de Debian sano.
Puedes usar esto:
dh_makeshlibs -a -n
exactamente después de dh_install
Si desea que simplemente ignore ese indicador, cambie la línea debian / rules de:
dh_shlibdeps
a:
dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info
Usted acaba de escribir mal su exportación. Debería ser así:
export DEB_DH_SHLIBDEPS_ARGS_ALL=--dpkg-shlibdeps-params=--ignore-missing-info
dpkg-buildpackage usa make para procesar debian / rules. en este proceso, dpkg-buildpackage podría llamar a dpkg-shlibdeps.
por lo tanto, la forma correcta de aprobar modificar una parte del proceso de creación de paquetes es editar debian / rules. es difícil darle más pistas, sin ver las debian / rules reales.
utilizar:
override_dh_shlibdeps:
dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info
si su archivo de reglas no tiene la llamada dh_shlibdeps en él. Ese suele ser el caso si has
%:
dh $@
como única regla en él.