47

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 を使用する) と問題が解決することはわかっていますが、依存関係のチェックには興味がないので、とにかくパッケージを生成したいと考えています。--ignore-missing-infodpkg-shlibdeps に、依存関係情報が見つからない場合の失敗を防ぐオプションを与えることができることを知っています 。しかし、dpkg-buildpackage を使用していて、dpkg-buildpackage が dpkg-shlibdeps を呼び出しているため、このオプションを dpkg-shlibdeps に渡す方法がわかりません...

私はすでに試しました:

sudo dpkg-buildpackage -rfakeroot -d -B

そして:

export DEB_DH_MAKESHLIBS_ARG=--ignore-missing-info

ルートとして。

何か案は?

4

8 に答える 8

58

使用する:

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

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

%:
    dh $@

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

于 2013-09-13T18:42:09.700 に答える
18

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

dh_shlibdeps

に:

dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info
于 2013-02-21T00:10:12.240 に答える
12

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

次の形式で作成することにより、ローカルの shlib オーバーライドを指定できます。debian/shlibs.locallibrary-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% 正確である必要はありません。ライブラリ名自体を使用するだけです。

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

于 2015-08-08T02:09:51.617 に答える
8

エラーを単に無視するのではなく、エラーの原因を修正することもできます。通常、エラーの原因は、欠落しているか正しくないか、package.shlibsまたはpackage.symbolsエラーをトリガーする共有ライブラリを含むパッケージ内のファイルです。

[1]はrespdpkg-shlibdepsの使用方法を文書化しています。、ファイル、[2] はおよびファイルの形式を文書化しています。package.shlibspackage.symbolspackage.shlibspackage.symbols

于 2014-02-11T19:10:57.300 に答える
4

エクスポートのスペルが間違っています。次のようになります。

export DEB_DH_SHLIBDEPS_ARGS_ALL=--dpkg-shlibdeps-params=--ignore-missing-info
于 2013-10-16T06:17:19.100 に答える
4

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

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

于 2012-06-28T19:56:10.503 に答える
0

最後に、私は野蛮な方法でそれを行いました:

スクリプト /usr/bin/dpkg-shlibdeps を編集して、次のように変更しました。

my $ignore_missing_info = 0;

my $ignore_missing_info = 1;
于 2012-06-28T15:21:14.713 に答える