如果我有一个带有debian/controlBuild-Depends条目的Depends文件。

如何安装两组依赖项?

目前,我正在使用以下命令来创建一个 stub 包,该 stub 包取决于Build-Depends而不是Depends

$ mk-build-deps --build-dep \
&& dpkg -i *.deb \
|| apt-get update && apt-get install --fix-broken --yes \

最佳答案

假设这是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

09-28 02:20