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

时间:2017-12-04 11:11:04

标签: dependencies debian package build-dependencies

如果我的debian/control文件包含Build-DependsDepends条。

如何安装这两组依赖项?

目前我正在使用以下命令创建一个取决于Build-Depends但不取决于Depends的存根包。

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

1 个答案:

答案 0 :(得分:4)

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