AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 684121
Accepted
Martian2020
Martian2020
Asked: 2021-12-28 16:39:41 +0800 CST2021-12-28 16:39:41 +0800 CST 2021-12-28 16:39:41 +0800 CST

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

  • 772

我想下载所有(递归)构建依赖项,以便能够从源代码构建 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 <[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-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 <package>),也许我在另一个系统上运行该命令,因为我的错误假设蒙蔽了我意识到它们之间的差异很重要。

apt package-management
  • 1 1 个回答
  • 250 Views

1 个回答

  • Voted
  1. Best Answer
    cas
    2021-12-28T19:00:14+08:002021-12-28T19:00:14+08:00

    构建依赖项由包维护者在源包的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 (>= 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 包”信息。

    • 2

相关问题

  • 了解 apt 列表输出

  • 尝试安装 debian 软件包 npm,使 apt-get 删除 libssl-dev

  • 使用 shell 脚本安装 ncdf4 R 包

  • 如何下载软件包而不是使用 apt-get 命令安装它?

  • /etc/apt/sources.list.d 比 /etc/apt/sources.list 有什么好处

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve