aptはBUILD(ソース)依存関係をどのように追跡しますか?

aptはBUILD(ソース)依存関係をどのように追跡しますか?

ソースから適切な(debian)パッケージをビルドできるように、すべてのビルド依存関係を(再帰的に)ダウンロードしたいと思います。ところで、aptで取得したdebsをapt-get install path/*.debs使ってみると、apt build-dep --download-only --assume-yes <package>追加パッケージをインストールする必要があります--no-install-recommends --ignore-missing私の特定の質問に対する答えはありません。。その後、より詳細に調査した結果、成功した実行結果に追加のパッケージが表示されなかったことにapt build-dep <package>気づきました(明らかに)。ビルドの依存関係は異なる方法で追跡する必要があります。どのように?

debファイルにフィールドがありますが、Depends/Suggests/Recommends調達に関連する他のフィールドは表示されません。build-dep約150個のdebファイルが見つかりましたが、パッケージとしてインストール中に追加の依存apt関係が見つかりました。

読んでみました。 パッケージ/ソースパッケージ - Debian Wiki


ソースパッケージは、目的のソフトウェアをコンパイルまたはビルドするために必要なすべてのファイルを提供します。最も簡単な形式で、
これは3つのファイルで構成されています。つまり、.tar.gzで終わり、.dscで終わる
アップストリームtarballの説明ファイルです。

apt source cinnamon-settings-daemon 

わかりました。cinnamon-settings-daemon_5.0.4+uma.tar.xz.検索でファイルが見つかりません.dsc。おそらく、Linux Mint(私が使用しているOS)が修正されたDebian実装を実装している可能性があります。

ビルドチュートリアル - Debian Wiki

aptは、必要なすべての依存関係を簡単にインストールする方法を提供します。
例 1: node-pretty-ms
sudo apt build-dep node-pretty-ms しかし、システムがこれらの依存関係を追跡する方法の説明が見つかりませんでした。

ダウンロードしたdebファイルの1つに、apt build-depビルド/ソースの依存関係を含む追加のセクションは表示されません。

$ apt show /media/ramdrive/debs/cinnamon-settings-daemon/autoconf_2.69-11.1_all.deb
Package: autoconf
Version: 2.69-11.1
Priority: optional
Section: devel
Origin: Ubuntu
Maintainer: Ubuntu Developers <[email protected]>
Original-Maintainer: Ben Pfaff <[email protected]>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 1905 kB
Depends: perl (>> 5.005), m4 (>= 1.4.13), debianutils (>= 1.8)
Recommends: automake | automaken
Suggests: autoconf-archive, gnu-standards, autoconf-doc, libtool, gettext
Breaks: gettext (<< 0.10.39), pkg-config (<< 0.25-1.1)
Homepage: http://www.gnu.org/software/autoconf/
Task: ubuntustudio-video
Download-Size: 321 kB
APT-Sources: http://archive.ubuntu.com/ubuntu focal/main amd64 Packages
Description: automatic configure script builder
 The standard for FSF source packages.  This is only useful if you
 write your own programs or if you extensively modify other people's
 programs.
 .
 For an extensive library of additional Autoconf macros, install the
 `autoconf-archive' package.
 .
 This version of autoconf is not compatible with scripts meant for
 Autoconf 2.13 or earlier.  

1を追加:

この期間中に「追加」とマークされている2つのパッケージのうちの1つapt-get install --no-install-recommendsはですlibpulse0:i386。行為

~$ apt-cache rdepends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances libpulse0:i386 # got ~ 1000 lines

find /path_to_debs/cinnamon-settings-daemon -name *.deb | xargs apt-cache show | grep Package | awk '{print $2}' # ~ 160 debs

LibreOffice Calcを使用すると、インストールによって逆vlookupに変わり、pulseaudioたとえばpulseaudio-module-bluetoothライン300によって異なります。

libcanberra-pulse:i386
ReverseDepends:
pulseaudio

2022/01/06 追加:

元の問題の原因を理解します。興味があれば、ご覧ください。https://stackoverflow.com/a/70601238/14557599そしてhttps://unix.stackexchange.com/a/684975/446998。この質問に対する私の主張を再現することはできません(成功した実行の出力に追加のパッケージは表示されませんapt build-dep <package>)。間違った仮定により、他のシステムでコマンドを実行している可能性があります。違いが重要です。

答え1

ビルドの依存関係は、パッケージマネージャによって使用されますBuild-Depends:(時々Build-Depends-Indep:)、次の設定を使用して設定されます。Debian/コントロールソースパッケージファイル。

Depends、およびは、データがパッケージファイルにあるようにパッケージをインストールするとき(またはインストールしようとするとき)に必要ですRecommends。パッケージをビルドする場合にのみ必要なので、必要ありません。SuggestionsBuild-Depends*

ところで、ソースパッケージをダウンロードしたり、パッケージトラッカーを使って見ることができます。https://tracker.debian.org/media/packages/a/autoconf/control-2.71-2)はBuild-Depends*次のように設定されますautoconf

Build-Depends-Indep: texinfo (>= 4.6), m4 (>= 1.4.13),
 texlive-base, texlive-plain-generic, texlive-latex-base,
 texlive-latex-recommended, texlive-fonts-recommended, help2man, cm-super
Build-Depends: debhelper-compat (= 13)

また、btw、これは単純化です。これはほとんどのパッケージには十分ですが、一部のパッケージにはBuild-Conflicts*:ビルドを正常に実行するためにパッケージをインストールできない設定もあります。

まだ読んでいない場合は、必ずお読みください。Debian 新しいメンテナンスガイド- これらのいくつかはDebianパッケージマネージャにのみ当てはまりますが、ほとんどは一般的な「.debパッケージのビルド方法」情報です。

関連情報