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?
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.
Si vous voulez simplement ignorer cet indicateur, changez la ligne debian/rules de:
dh_shlibdeps
à:
dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info
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.
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
.
Vous venez de mal orthographier votre exportation. Cela devrait être comme ça:
export DEB_DH_SHLIBDEPS_ARGS_ALL=--dpkg-shlibdeps-params=--ignore-missing-info
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.
Vous pouvez utiliser ceci:
dh_makeshlibs -a -n
exactement après dh_install