web-dev-qa-db-ja.com

dpkg-shlibdeps:エラー:の依存情報が見つかりません

私はdebパッケージをコンパイルしていますが、dpkg-buildpackageを実行すると次のようになります:

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

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

これは、依存関係を手動でインストールしたために発生します。依存関係をインストールする(またはcheckinstallを使用する)と、問題が修正されることを知っています。依存関係のチェックに興味がないので、とにかくパッケージを生成したいと思います。 dpkg-shlibdepsにオプション--ignore-missing-infoこれは、依存関係情報が見つからない場合の失敗を防ぎます。しかし、dpkg-buildpackageとdpkg-buildpackageがdpkg-shlibdepsを呼び出しているので、このオプションをdpkg-shlibdepsに渡す方法がわかりません...

私はすでに試しました:

Sudo dpkg-buildpackage -rfakeroot -d -B

そして:

export DEB_DH_MAKESHLIBS_ARG=--ignore-missing-info

ルートとして。

何か案は?

38
user1370912

使用する:

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

ルールファイルにdh_shlibdeps呼び出しが含まれていない場合。あなたが持っている場合、それは通常の場合です

%:
    dh $@

その唯一のルールとして...上記では、dh_shlibdepsの前にスペースではなくタブを使用する必要があります

50
buzz

そのフラグを単に無視したい場合は、debian/rules行を次のように変更します。

dh_shlibdeps

に:

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

さらに別の方法は、ビルドスクリプトを変更せずに、1つのファイルを作成するだけです。

次の形式で_debian/shlibs.local_を作成することにより、 local shlib overrides を指定できます:_library-name soname-version dependencies_

たとえば、次の(トリミングされた)_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)
_

_debian/shlibs.local_の内容は次のとおりです。

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

「依存関係」リスト(3列目)は100%正確である必要はありません-ライブラリ名自体を再度使用するだけです。

もちろん、これは_/var/lib/dpkg/info_(これらのオーバーライドのインスピレーションとして使用できる)で定義されたこのようなものを持つ健全なdebianシステムでは必要ありません。私のものは、健全なdebianシステムではありません。

9
dequis

エラーを単に無視するのではなく、エラーの原因を修正することもできます。通常、エラーが発生した共有ライブラリを含むパッケージ内のpackage.shlibsまたはpackage.symbolsファイルが見つからないか、正しくありません。 。

[1] dpkg-shlibdepspackage.shlibs応答を使用する方法を文書化します。 package.symbols、files、[2]は、package.shlibsおよびpackage.symbolsファイルの形式を文書化しています。

5
smani

エクスポートのスペルを間違えました。次のようになります。

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

dpkg-buildpackageはmakeを使用してdebian/rulesを処理します。このプロセスでは、dpkg-buildpackageはdpkg-shlibdepsを呼び出す場合があります。

したがって、パッケージ構築プロセスの一部を変更して渡す適切な方法は、debian/rulesを編集することです。実際のdebian/rulesを見ることなく、これ以上ヒントを与えることは困難です。

3
umläute

これを使用できます:

dh_makeshlibs -a -n

dh_installの直後

0