7.8. 解决软件包依赖项

在 Satellite 中,您可以使用软件包依赖项解析功能来确保软件包在内容视图中具有的任何依赖项作为内容视图的一部分添加到相依存储库中。

您可以选择解析您想要的任何内容视图的软件包依赖项,或者更改默认设置以启用或禁用所有新内容视图的解析软件包依赖项。

在大多数简单且常见情况下,存储库的正确功能不需要依赖项解析,并可省略。请注意,解决软件包依赖项可能非常昂贵,可能会导致内容视图提升造成大量延迟。软件包依赖项解析功能还不考虑在独立于内容视图的系统上安装的软件包,因此即使依赖项被解析启用,也可以使用 Content View 过滤器,它为哪些 satellite-maintain 软件包更新 生成存储库无法保证。因此,在使用复杂的过滤器组合时要小心,即使与依赖项解析结合使用也很有用。

解决软件包依赖项和过滤器

默认情况下,过滤器无法解析过滤器中列出的软件包的任何依赖项。这可能需要一定级别的测试来确定需要哪些依赖项。

如果您添加一个过滤器,排除需要的一些软件包,且 Content View 启用了依赖项解析,卫星会忽略您在过滤器中创建的规则,以改为解析软件包依赖项。

如果您为安全起见创建内容过滤器,为了解决软件包依赖项,卫星可以添加您可能认为不安全的软件包。

流程

要默认解析软件包依赖项,请完成以下步骤:

  1. 在 Satellite Web UI 中,导航到 Administer > Settings,再点击 Content 选项卡。
  2. 找到 Content View Dependency Solving Default,然后选择 Yes

注意事项

  1. 可使用过滤器以某种方式使用过滤器,生成的内容视图有损坏依赖项,且依赖项解析并不总是保证可以解决这个问题。这是因为软件包依赖项解析功能并不考虑在独立于内容视图的系统上安装的软件包。
  2. 内容视图中的软件包可以有冲突的依赖关系。

    例如,想象一个情况:A、B 和 C 是示例软件包,其中软件包 A 依赖于软件包 B 的版本 1.1,软件包 C 依赖于软件包 1.2。B(1.1)和 B(1.2)由在内容视图中解析以满足 A 和 C 的依赖关系而引入。

  3. 如果存储库中的软件包依赖于存储库以外的软件包,且未同步或添加到内容视图中,依赖项解决不会解决该软件包的依赖项。
  4. 如果您在内容视图上使用 exclude 过滤器并开启依赖项,则依赖项将按照优先级解决,即使它们被过滤,也会出现任何必要的软件包。
  5. 依赖项解析和过滤器会显著增加发布时间。