如何找到一个软件包的构建依赖项?

我想了解一下有哪些套餐。
sudo apt-get build-dep <package>

如果我已经安装了一些依赖项,我希望能够看到这些依赖项(所以仅运行或模拟上述命令是不够的)。最好使用命令行。

1我有点困惑,sudo apt-get build-dep <package> 不是应该显示将要安装的软件包的依赖列表(如果有构建依赖)吗? - Isaiah
2很遗憾,这只显示未安装的软件包。 - htorque
3个回答

要获取包括依赖项及其依赖项的完整列表,您可以使用以下命令:
apt-rdepends --build-depends openoffice.org

该命令可能会提醒您先安装apt-rdepends

您可以使用以下命令仅显示未安装的部分:

apt-rdepends --build-depends --print-state openoffice.org | grep NotInstalled

查看所有选项,请参阅apt-rdepends --help
注意:这将生成一个庞大的列表。
apt-rdepends -b xterm,例如,会生成8773行输出,并且需要一些时间来完成。
如果您只想查看构建最顶层软件包所需的软件包,即我需要安装什么来构建nautilus,请运行:
apt-rdepends --build-depends --follow=DEPENDS nautilus

这大致相当于Carsten Thiel的answer将安装以下新软件包),但输出格式更好一些。它只显示顶级软件包,而模拟apt-get还会显示作为这些软件包依赖项安装的软件包。
这也显示已安装的软件包。但它可能还会显示默认安装的软件包。不幸的是,在运行apt-get build-dep后,无论是哪种方法都不太有帮助,当你试图在系统上进行“清理”时。据我所知,除了查看位于/var/log/apt/history.log的apt日志文件之外,没有可靠的方法来找出哪些软件包被安装了。

1谢谢,带有--follow=DEPENDS选项的版本正是我正在寻找的。你还可以在Launchpad上找到构建依赖关系,例如Nautilus:https://launchpad.net/ubuntu/natty/+source/nautilus(向下滚动)。 - htorque
是的,但是 apt-rdepends -b foo 似乎不能"去重",所以列表中会出现多个相同的软件包。 - Levente
1虽然带有--follow=DEPENDS的版本对我来说是有效的,但是DEPENDS似乎利用了apt-rdepends中的一个bug,即在--follow之后接受任何大小写敏感的内容,而DEPENDS不是一个有效的符号。例如,--follow=none--follow=Chuck-Norris都会产生相同的效果。 - Torsten Bronger

apt-cache showsrc <pkgname> | grep ^Build-Depends

showsrc 显示给定源包的 debian/control 文件。然后我们使用 grep 命令查找以 'Build-Depends' 开头的行,该行包含了构建源代码所需的软件包列表。


如果你解释一下apt-cache showsrc和| grep的作用,我会给你加1分。不过,非常感谢你花时间提供答案。 - MadMike
在Ubuntu 18.10中,使用sudo apt-cache showsrc inkscape无法工作 - 返回以下错误信息: W: 无法定位软件包 inkscape N: 找不到任何软件包 - anatoly techtonik
@anatolytechtonik 刚在 Docker 中测试了 Ubuntu 18.10,对我有效。你先执行了 apt-get update 吗? - Stéphane Gourichon
1这应该是被接受的答案,因为它提供了所需的工具,并且不需要任何额外的软件包。 - Stéphane Gourichon
@StéphaneGourichon 很遗憾,它无法解析条件依赖或版本要求,这两者都会影响build-dep命令实际安装的内容。 - ATLief

选项-s--simulate)将输出所有将要执行的操作,而不会实际执行任何操作。即使您没有root权限也可以使用此选项。
apt-get -s build-dep <package>

8请看我上面的评论 - 这不会显示已安装的软件包。对于我的问题没有明确说明,我很抱歉。 - htorque
无法工作 - 失败,显示E: 无法找到 inkscape 的源软件包 - anatoly techtonik