如果我有一个带有debian/control
和Build-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
。