如何安装 Debian 软件包的 Build-Depends 和 Depends

问题描述 投票:0回答:1

如果我有一个包含

debian/control
Build-Depends
条目的
Depends
文件。

如何安装两组依赖项?

目前我正在使用以下命令创建一个依赖于

Build-Depends
但不依赖于
Depends
的存根包。

$ mk-build-deps --build-dep \
&& dpkg -i *.deb \
|| apt-get update && apt-get install --fix-broken --yes \
dependencies debian package build-dependencies
1个回答
7
投票

假设这是您的 apt 存储库中的标准包,您应该能够简单地运行

apt-get build-dep PACKAGE [PACKAGE…]

一般来说,最好的解决方案是找到一个具有相同依赖项的包(更好的是,同一包的相同但不同版本),然后

build-dep
它。根据我的经验,这可以解决 99% 以上的问题。


我根本不知道

mk-build-deps
,但你可以运行它来查看包“PACKAGE”中的
debian/control
文件中调用了哪些依赖项:

echo $(awk '
  /^(Build-)?Depends:/ || /^ / && deps {
    sub(/^[^ ]+: /, "")
    deps = 1
    dep_str = dep_str ", " $0
    next
  }
  { deps=0 }
  END {
    split(dep_str, dep_array, /[,|] */)
    for (d in dep_array) {
      dep = dep_array[d]
      gsub(/[^a-z0-9_.-].*$/, "", dep)
      if (dep && !seen[dep]++) print dep
    }
  }' PACKAGE/debian/control)

(这会检查 Debian 控制文件中的 Build-Depends 和 Depends 行,并仅显示列出的依赖项,不包括任何变量(我相信这些变量已包含在文件的其他命中中)。

AWK 代码演练:如果它是 Build-Depends 或 Depends 行,或者是此类行后面的空白缩进行,请删除行标签,注意我们处于依赖行中 (

dep = 1
),然后保存它进入
dep_str
。在其他行中,删除表示我们正在继续依赖行的标记。解析输入后,将依赖项字符串
dep_str
拆分为一个由逗号和可选尾随空格分隔的数组,然后迭代该数组。从依赖项名称末尾擦除无效字符(这些是版本信息),如果还有任何内容并且之前(此处)未见过,请将其打印在自己的行上。

如果您愿意,可以将

echo
替换为
apt-get install
,但您可能需要先删除要自定义和/或手动安装的项目。

之后,您应该可以更轻松地使用

dpkg -i *.deb
。如果您遇到困难,请随时尝试
apt-get  install --fix-broken

© www.soinside.com 2019 - 2024. All rights reserved.