web-dev-qa-db-ja.com

Debianパッケージを作成するときに `$ {shlibs:Depends}`を解決する詳細なプロセスは何ですか?

私の最近の作業には多くのDebianパッケージが含まれており、主な参照として Debian New Maintainers 'Guide を使用しています。

私が完全に理解していないのは、${shlibs:Depends}を特定のパッケージおよびバージョンに解決する方法です。 「方法」とは詳細な手順変数${shlibs:Depends}からDependsフィールドのパッケージの最終リストまでです。

第4章 と言う:

dh_shlibdeps(1)は、バイナリパッケージの共有ライブラリの依存関係を計算します。 ELF実行可能ファイルとバイナリパッケージごとに見つけた共有ライブラリのリストを生成します。このリストは、$ {shlibs:Depends}を置き換えるために使用されます。

私が本当に興味を持っているのは、使用されている情報源のような「ELF実行可能ファイルとバイナリパッケージごとに見つかった共有ライブラリのリストを生成する」の詳細な手順だと思います。

また、Debianポリシーマニュアルのセクション "8.6.4。shlibsシステム" も確認しました。情報源は示されていますが、詳細な手順についても触れられていないようです。

私はきっとdh_shlibdepsスクリプトを調べて、それがどのように行われるかを理解することができますが、Perlをまだ学習していないため、そうすることに消極的です。 m気づいていないので、これはすでにカバーされています。そのような参照がない場合は、必ずコードを読みます。

ありがとう!

3
yaobin

このトピックは私にとっても新しいものですが、ここでは何が収集されるか(正確にソートされない場合があります)、一部のグローバル設定ファイルが省略されています。

ldd
dpkg -S
deb-shlibs

objdump
deb-symbols
dpkg-gensymbols

debian/shlibs.local
dpkg-shlibdeps
debian/substvars .. shlibs:dependency-field

いくつかのツールは、シンボル解決で静かに複雑になり、依存パッケージではなく依存ライブラリで実行されるだけです。Debianパッケージビルダー用のlib Debianパッケージにlib情報を含めるだけです。とにかくあなたはチェックします:

1
user.dz