有没有更好的方法来仅安装软件包的必需依赖关系,而不是直接使用apt-get(或dpkg的任何其他前端)直接安装它,然后立即将其删除,而忽略其依赖关系呢?
有没有更好的方法来仅安装软件包的必需依赖关系,而不是直接使用apt-get(或dpkg的任何其他前端)直接安装它,然后立即将其删除,而忽略其依赖关系呢?
Answers:
apt-get提供了一个确切的命令...
apt-get build-dep <package name>
从手册页中您可以获得
build-dep导致apt-get安装/删除软件包,以尝试满足源软件包的构建依赖性。默认情况下,依赖关系可以满足本机构建程序包的需求。如果需要,可以使用--host-architecture选项指定主机架构。
aptitude可让您在安装时指定查询而不是软件包名称。如果要安装名为的软件包的依赖项foo
,则可以安装与以下软件包具有相反依赖性的软件包foo
:
aptitude install '?reverse-depends(foo)'
要么
aptitude install '~Rfoo'
安装软件包然后将其删除的问题是,所有作为依赖项安装的软件包都将被标记为“自动安装”,并且将由任何安装/删除/升级操作根据情况或在您运行时将其删除,apt-get autoclean
除非您使用aptitude mark
或apt-mark
命令将其标记为手动安装。
但是,这引出了一个问题,为什么我最好的猜测是为什么要尝试为要手动编译的某些软件安装依赖项。在这种情况下,您应该先使用来安装构建依赖关系apt-get build-dep packagename
,然后再使用该equiv
包来构建具有运行时依赖关系(通常与构建依赖关系不同)的虚拟包,方法是使用该包来构建具有正确依赖关系的虚拟包。您手动编译的程序。equivs
在APT HOWTO中查看有关的信息
build dependencies
和之间没有区别dependencies
吗?与之类似,如果您通常安装程序,则将获得它实际需要运行的依赖关系,而对于构建依赖关系,我会更多地考虑库,编译器之类的东西。因此,我不确定(此答案确实有争议),但在我看来,获得构建依赖项与获取程序包具有的(运行)依赖项并不无关紧要?