Apt

apt 如何跟踪 BUILD(源)依賴項?

  • January 6, 2022

我想下載所有(遞歸)建構依賴項,以便能夠從原始碼建構 apt(debian)包。但是,當我apt-get install path/*.debs使用我通過apt build-dep --download-only --assume-yes <package>apt 獲得的 debs 時,發現要安裝的其他軟體包並失敗,即使使用--no-install-recommends --ignore-missing. 我的具體問題沒有得到答案 SO。然後我進一步調查,我沒有在成功執行的輸出中看到那些額外的包apt build-dep <package>,因此我意識到(顯然)**應該以不同的方式跟踪建構依賴項。**如何?

我的意思是 deb 文件中有Depends/Suggests/Recommends欄位,但我沒有看到與採購相關的其他欄位。build-dep導致找到約 150 個 deb 文件,但在將它們作為包安裝期間,apt發現了其他依賴項。

我嘗試閱讀 Packaging/SourcePackage - 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 <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Ben Pfaff <pfaffben@debian.org>
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-recommends在is期間仍列為“附加”的兩個包之一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

vlookup在 LibreOffice Calc 中使用發現它反向依賴於安裝pulseaudio,並pulseaudio-module-bluetooth通過例如大約 rdepends 的第 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 &lt;package&gt;),也許我在另一個系統上執行該命令,因為我的錯誤假設蒙蔽了我意識到它們之間的差異很重要。

建構依賴項由包維護者在源包的debian/control文件中使用Build-Depends:(有時Build-Depends-Indep:)設置。

Depends, Recommends, 和Suggestions在安裝(或即將安裝)包時需要,以便數據位於 Packages 文件中。 Build-Depends*僅在建構軟體包時才需要,因此不需要。

順便說一句,正如您從下載源包或使用包跟踪器(例如https://tracker.debian.org/media/packages/a/autoconf/control-2.71-2)中看到的那樣,Build-Depends*設置autoconf是:

Build-Depends-Indep: texinfo (&gt;= 4.6), m4 (&gt;= 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 包”資訊。

引用自:https://unix.stackexchange.com/questions/684121