在Debian或Ubuntu(apt)中只安装指定软件包的依赖关系

有没有更好的方法来安装一个包只需要的依赖关系,而不是直接用apt-get(或任何其他的dpkg前端)安装,然后立即删除它,而不依赖?

提前致谢,

    apt-cache depends pkgname会显示一个包的依赖关系。

    如果你想要一个命令,你可能会做得比:

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

    apt-get提供了一个正确的命令…

     apt-get build-dep <package name> 

    从你得到的手册页

    build-dep会导致apt-get安装/删除软件包,以满足源软件包的构build依赖关系。 默认情况下,依赖性被满足,以生成本地包。 如果需要,可以使用–host-architecture选项指定主机体系结构。

    aptitude会让你在安装时指定一个查询,而不是一个包名。 如果要安装名为foo的软件包的依赖关系,则可以安装与foo具有反向依赖关系的软件包:

     aptitude install '?reverse-depends(foo)' 

    要么

     aptitude install '~Rfoo' 

    安装软件包然后将其删除的问题是,所有作为依赖项安装的软件包将被标记为“自动安装”,并且将通过aptitude的任何安装/删除/升级操作或运行apt-get autoclean除非你使用aptitude mark或者apt-mark命令将它们标记为手动安装,否则请使用apt-get autoclean

    然而,这引出了你为什么要这么做的问题。我最好的猜测是你正在试图安装一些你要手动编译的软件的依赖关系。 在这种情况下,你可以先用apt-get build-dep packagename来安装构build依赖关系,但是你应该创build一个虚拟包,它具有运行时依赖(通常不同于构build依赖),通过使用equiv包构build一个虚拟软件包,用于您手动编译的程序的正确的依赖关系。 在APT HOWTO中查看有关equivs信息

    在从源中构buildpkgname的情况下

     apt-get build-dep pkgname