apt 如何跟踪 BUILD(源)依赖关系?

apt 如何跟踪 BUILD(源)依赖关系?

我想下载所有(递归)构建依赖项,以便能够从源代码构建 apt(debian)包。然而,当我apt-get install path/*.debs使用apt build-dep --download-only --assume-yes <package>apt 获得的 debs 时,发现需要安装其他软件包并失败,即使使用--no-install-recommends --ignore-missing. 我的具体问题没有得到答复。然后我进一步调查,我没有在成功运行的输出中看到那些额外的包apt build-dep <package>,因此我意识到(显然)构建依赖关系应该以不同的方式进行跟踪。如何?

我的意思是 deb 文件中有Depends/Suggests/Recommends字段,但我没有看到与采购相关的其他字段。build-dep结果发现了大约 150 个 deb 文件,但在将它们作为包安装期间,apt发现了其他依赖项。

我尝试过阅读 打包/源码包 - Debian Wiki


源包为您提供了编译或构建所需软件所需的所有文件。它
最简单的形式由三个文件组成:
以 .tar.gz 结尾的上游 tarball
以 .dsc 结尾的描述文件。

apt source cinnamon-settings-daemon 

得到了cinnamon-settings-daemon_5.0.4+uma.tar.xz.,搜索里面没有找到.dsc文件,也许Linux Mint(我使用的操作系统)实现了修改后的Debian实现?

构建教程 - Debian Wiki

apt 提供了一种轻松安装所有所需依赖项的方法:
示例 1:node-pretty-ms
sudo apt build-dep node-pretty-ms 但是,我还没有找到系统如何跟踪这些依赖项的描述。

在我下载的 deb 文件之一中,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:

期间仍列为“附加”的两个软件包之一apt-get install --no-install-recommendslibpulse0: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 行 rdepends:

libcanberra-pulse:i386
ReverseDepends:
pulseaudio

2022/01/06 添加:

我了解最初问题的原因,如果有兴趣,请参阅https://stackoverflow.com/a/70601238/14557599https://unix.stackexchange.com/a/684975/446998。我无法在这个问题中重现我的主张(我没有在成功运行的输出中看到那些附加包apt build-dep <package>),也许我在另一个系统上运行该命令,因为我的错误假设使我意识到它们之间的差异很重要。

答案1

构建依赖项由包维护者使用Build-Depends:(有时Build-Depends-Indep:)中的设置来设置Debian/控制源码包的文件。

Depends安装(或即将安装)软件包时需要 、 、 和 ,以便数据位于 Packages 文件 中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)

另外顺便说一句,这是一种简化。对于大多数软件包来说这已经足够了,但是某些软件包还具有Build-Conflicts*:无法安装以使构建成功的软件包的设置。

如果您还没有阅读过,我建议您阅读Debian 新维护者指南- 其中一些是特定于 Debian 软件包维护者的,但大多数是通用的“如何构建 .deb 软件包”信息。

相关内容