在 Debian 或 Ubuntu 中仅安装给定包的依赖项(apt)

在 Debian 或 Ubuntu 中仅安装给定包的依赖项(apt)

有没有更好的方法可以仅安装包所需的依赖项,而不是直接使用 apt-get(或 dpkg 的任何其他前端)进行安装,然后立即删除它并忽略其依赖项?

答案1

apt-cache depends pkgname将显示包的依赖关系。

如果你想用一个命令完成所有操作,那么你可能会做比这更糟糕的事情:

apt-get install `apt-cache depends pkgname | awk '/Depends:/{print$2}'`

答案2

apt-get 提供了一个专门用于此目的的命令......

apt-get build-dep <package name>

从手册页中你可以看到

build-dep 使 apt-get 安装/删除软件包,以尝试满足源软件包的构建依赖关系。默认情况下,依赖关系得到满足,以便本地构建软件包。如果需要,可以使用 --host-architecture 选项指定主机架构。

答案3

aptitude 允许您在安装时指定查询而不是软件包名称。如果您想要安装名为 的软件包的依赖项foo,您可以安装对 具有反向依赖性的软件包foo

aptitude install '?reverse-depends(foo)'

或者

aptitude install '~Rfoo'

安装一个软件包然后删除它的问题是,所有作为依赖项安装的软件包都将被标记为“自动安装”,并且将被 aptitude 的任何安装/删除/升级操作或在您运行时删除,除非您使用或命令apt-get autoclean将它们标记为手动安装。aptitude markapt-mark

但是,这引出了一个问题:你为什么要这样做?我最好的猜测是,你正在尝试为要手动编译的某些软件安装依赖项。在这种情况下,你首先要使用 安装构建依赖项apt-get build-dep packagename,但随后你应该创建一个具有运行时依赖项(通常与构建依赖项不同)的虚拟包,方法是使用包equiv为手动编译的程序构建具有正确依赖项的虚拟包。有关信息,请equivs参阅APT 指南

答案4

如果从源构建 pkgname

apt-get build-dep pkgname

相关内容