it-swarm.com.de

dpkg-shlibdeps: Fehler: Es wurden keine Abhängigkeitsinformationen gefunden

Ich kompiliere ein Deb-Paket und wenn ich dpkg-buildpackage starte, bekomme ich:

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

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

Dies geschieht, weil ich die Abhängigkeit manuell installiert habe. Ich weiß, dass das Problem behoben wird, wenn ich die Abhängigkeit installiere (oder checkinstall verwende), und ich möchte das Paket trotzdem generieren, da ich nicht an der Abhängigkeitsprüfung interessiert bin. Ich weiß, dass ich dpkg-shlibdeps die Option --ignore-missing-info geben kann, die einen Fehler verhindert, wenn keine Abhängigkeitsinformationen gefunden werden können. Aber ich weiß nicht, wie ich diese Option an dpkg-shlibdeps übergeben kann, da ich dpkg-buildpackage und dpkg-buildpackage-Aufrufe dpkg-shlibdeps benutze. 

Ich habe schon versucht:

Sudo dpkg-buildpackage -rfakeroot -d -B

Und mit:

export DEB_DH_MAKESHLIBS_ARG=--ignore-missing-info

als Wurzel.

Irgendwelche Ideen?

34
user1370912

benutzen:

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

wenn in Ihrer Regeldatei der Aufruf dh_shlibdeps nicht enthalten ist. Das ist normalerweise der Fall, wenn Sie haben

%:
    dh [email protected]

als einzige Regel darin. 

46
buzz

Wenn Sie möchten, dass das Flag einfach ignoriert wird, ändern Sie die Zeile debian/rules von

dh_shlibdeps

zu:

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

Noch eine andere Möglichkeit, ohne die Build-Skripts zu ändern, sondern nur eine Datei zu erstellen.

Sie können local shlib überschreiben angeben, indem Sie debian/shlibs.local mit dem folgenden Format erstellen: library-name soname-version dependencies

Zum Beispiel die folgende (getrimmte) ldd /path/to/binary-Ausgabe

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)

Der Inhalt von debian/shlibs.local wäre:

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

Die "Abhängigkeiten" -Liste (dritte Spalte) muss nicht 100% ig genau sein - ich verwende einfach nur den Bibliotheksnamen.

Natürlich ist dies in einem vernünftigen Debian-System nicht erforderlich, in dem dieses Material in /var/lib/dpkg/info definiert ist (das als Inspiration für diese Überschreibungen verwendet werden kann). Meines ist kein vernünftiges Debian-System.

8
dequis

Anstatt den Fehler lediglich zu ignorieren, möchten Sie möglicherweise auch die Fehlerquelle beheben. Dies ist in der Regel eine fehlende oder falsche package.shlibs- oder package.symbols-Datei im Paket, die die gemeinsam genutzte Bibliothek enthält, die den Fehler auslöst.

[1] dokumentiert, wie dpkg-shlibdeps den package.shlibs verwendet. package.symbols, files, [2] dokumentiert das Format der package.shlibs- und package.symbols-Dateien.

5
smani

Sie haben gerade Ihren Export falsch geschrieben. Es sollte so sein:

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

dpkg-buildpackage verwendet make, um Debian/Regeln zu verarbeiten. In diesem Prozess könnte dpkg-buildpackage dpkg-shlibdeps heißen.

daher ist es am besten, wenn Sie einen Teil des Paketerstellungsprozesses modifizieren, indem Sie debian/rules bearbeiten.

3
umläute

Sie können dies verwenden:

dh_makeshlibs -a -n

genau nach dh_install

0