描述

描述

描述

举例说明:

  1. 我将从源代码构建my-app
  2. 它需要一些依赖关系。安装它们apt-get install foo bar baz
  3. 构建应用程序。
  4. 安装另一个hello.deb依赖于foo.
  5. my-app一段时间后通过删除整个源文件夹来删除。
  6. 删除 的依赖项my-app

但是,在步骤 6 中,您不能简单地发布apt-get remove foo bar baz依赖项,因为hello.deb仍然需要foo包,因此只应删除bar和包。baz

提议

为了解决这个问题,可以创建一个虚拟包,声明 , , 的依赖关系,foo并且我们可以简单地安装这个虚拟包。稍后,我们可以通过卸载这个虚拟包来安全地卸载所有这些依赖项。包装器脚本将动态构建这样的包并安装它:barbaz

$ apt-get-named install foo bar baz
Intention: for-myapp

问题

这种方法能解决问题吗?对于这样的问题有任何实施的解决方案吗?我们如何为此目的创建一个虚拟包?

答案1

没有现成的工具可以准确地提供这一点,因为 Debian 中的普遍期望是有人会打包my-app,并且这将是真正的包,确保只要my-app安装(独立于hello),依赖项就保持可用。

然而,有两种工具在这种情况下可以派上用场。我怀疑与您最相关的是equivs,它提供了一种创建具有依赖项的虚拟包的快速方法;看创建仅包含依赖项的 .deb 包了解详情。另一个工具是mk-build-deps,它用于生成反映另一个包的构建依赖关系的虚拟包,并且在稍微不同的场景中很有用:目标是使给定包的构建依赖关系作为一个单元进行管理。看自动安装 dpkg-checkbuilddeps 检测到的未满足的构建依赖项了解详情。

相关内容