有没有更好的方法可以仅安装包所需的依赖项,而不是直接使用 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 mark
apt-mark
但是,这引出了一个问题:你为什么要这样做?我最好的猜测是,你正在尝试为要手动编译的某些软件安装依赖项。在这种情况下,你首先要使用 安装构建依赖项apt-get build-dep packagename
,但随后你应该创建一个具有运行时依赖项(通常与构建依赖项不同)的虚拟包,方法是使用包equiv
为手动编译的程序构建具有正确依赖项的虚拟包。有关信息,请equivs
参阅APT 指南
答案4
如果从源构建 pkgname
apt-get build-dep pkgname