web-dev-qa-db-fra.com

dpkg-shlibdeps: erreur: aucune information de dépendance trouvée pour

Je compile un paquet deb et lorsque je lance dpkg-buildpackage, je reçois:

dpkg-shlibdeps: error: no dependency information found for /usr/local/lib/libopencv_highgui.so.2.3 

    ...
    make: *** [binary-Arch] Error 2

Cela se produit parce que j'ai installé la dépendance manuellement. Je sais que le problème sera résolu si j'installe la dépendance (ou que j'utilise checkinstall), et je souhaite néanmoins générer le package car je ne suis pas intéressé par la vérification des dépendances. Je sais que je peux donner à dpkg-shlibdeps l'option --ignore-missing-info qui empêche un échec si les informations de dépendance ne peuvent pas être trouvées. Mais je ne sais pas comment passer cette option à dpkg-shlibdeps puisque j'utilise dpkg-buildpackage et dpkg-buildpackage appelle dpkg-shlibdeps ... 

J'ai déjà essayé:

Sudo dpkg-buildpackage -rfakeroot -d -B

Et avec:

export DEB_DH_MAKESHLIBS_ARG=--ignore-missing-info

en tant que racine.

Des idées?

34
user1370912

utilisation:

override_dh_shlibdeps:
    dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info

si votre fichier de règles n'a pas l'appel dh_shlibdeps. C'est généralement le cas si vous avez

%:
    dh $@

comme seule règle en elle. 

46
buzz

Si vous voulez simplement ignorer cet indicateur, changez la ligne debian/rules de:

dh_shlibdeps

à:

dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info
15
Wes Hardaker

Encore une autre façon, sans modifier les scripts de construction, il suffit de créer un fichier.

Vous pouvez spécifier les substitutions de shlib locales en créant debian/shlibs.local au format suivant: library-name soname-version dependencies

Par exemple, étant donné la sortie (ajustée) ldd /path/to/binary suivante

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)

Le contenu de debian/shlibs.local serait:

libevent-2.0 5 libevent-2.0
libgcrypt 20 libgcrypt
libpthread 0 libpthread

La liste des "dépendances" (troisième colonne) n'a pas besoin d'être précise à 100% - je viens d'utiliser à nouveau le nom de la bibliothèque elle-même.

Bien sûr, cela n'est pas nécessaire dans un système Debian sain qui a ce genre de choses défini dans /var/lib/dpkg/info (qui peut être utilisé comme source d'inspiration pour ces substitutions). Le mien n'est pas un système Debian sain d'esprit.

8
dequis

Au lieu de simplement ignorer l'erreur, vous pouvez également vouloir corriger la source de l'erreur, qui est généralement un fichier manquant ou incorrect package.shlibs ou package.symbols dans un package contenant la bibliothèque partagée qui a provoqué l'erreur.

[1] explique comment dpkg-shlibdeps utilise le package.shlibs, respectivement. package.symbols, files, [2] documente le format des fichiers package.shlibs et package.symbols.

5
smani

Vous venez de mal orthographier votre exportation. Cela devrait être comme ça:

export DEB_DH_SHLIBDEPS_ARGS_ALL=--dpkg-shlibdeps-params=--ignore-missing-info
4
Rkshvch

dpkg-buildpackage utilise make pour traiter debian/rules. Dans ce processus, dpkg-buildpackage pourrait appeler dpkg-shlibdeps.

ainsi, le moyen approprié pour passer à modifier une partie du processus de construction du paquet est d’éditer debian/rules . Il est difficile de vous donner des indices supplémentaires sans voir les règles debian/rules.

3
umläute

Vous pouvez utiliser ceci:

dh_makeshlibs -a -n

exactement après dh_install

0