Libzypp/Dependencies

跳转到:导航搜索

支持的依赖关系

所有可解析项在依赖关系解析期间都被视为相同。不同类型的可解析项之间没有语义上的区别。

此页面描述了一个可解析项可以表达的可能的依赖关系及其语义。

它很大程度上基于 rpm(对于强依赖关系)和 debian(对于弱依赖关系)。
反向依赖关系是在 Michael Schroeder 的建议下创建的。

如有疑问,请参阅 RPMDebian

术语定义

  • 版本:纪元、版本和发布的组合。就像 RPM 一样,例如 1.0-421:1.47-11
  • 能力:一个名称,带有可选的操作符和版本,例如 foofoo = 1.0-42bar > 1.47
  • 依赖关系:能力和什么(例如,Requires、Provides、...)的组合。

强依赖关系

  • Requires:绝对依赖关系。所有要求必须得到满足。
  • Provides:此可解析项提供的能力。它们可用于匹配其他可解析项的Requires
    每个可解析项默认都有一个自提供,即它自己的名称和版本,例如,包 bar-1.42-1 提供能力 bar = 1.42-1
  • Conflicts:如果另一个可解析项已安装并提供匹配的能力,则此可解析项将无法安装。
  • Obsoletes:当此可解析项安装时,它将卸载任何具有匹配名称的其他可解析项。

另请参阅 RPM 依赖关系的事实

弱依赖关系

  • Recommends:弱Requires。会尽最大努力满足 Recommends,但如果无法找到匹配项,则会被静默丢弃。
  • Suggests:Suggests 只是对应用程序的提示,在依赖关系解析期间不处理。
    类似于亚马逊风格的购买此商品的顾客也查看了

条件依赖关系

  • Freshens:Freshens 定义了未安装的可解析项和已安装的可解析项之间的关系。如果未安装的可解析项定义了freshen 依赖关系,则仅当已安装的可解析项匹配时才考虑安装它。它的主要用途是补丁,它们通过 freshen 表达何时应该考虑它们。

反向依赖关系

与上述依赖关系不同,上述依赖关系是自上而下的,以下依赖关系则以相反的方式工作。请继续阅读。

  • Supplements:反向 Recommends。如果已安装的可解析项提供此能力,则此可解析项将被安装。依赖关系解析器将安装它。卸载它是被静默接受的。
  • Enhances:反向 Suggests。如果已安装的可解析项提供此能力,则此可解析项可以被安装。它只是对应用程序的提示。例如,SuSEplugger 可以在找到特定硬件时建议安装软件包。

特殊的 libsolv 可解析项

注意:rpm 4.14 及更高版本支持 布尔依赖关系。这些 已过时 下面的旧版 libsolv 语法; spec-cleaner 将替换 packageand 并删除 otherproviders 结构。libsolv 知道两种特殊情况

  • packageand(A:B)。通常与反向依赖关系一起使用,例如 Supplements: packageand(A:B) 仅在同时安装/要安装 A 和 B 时才建议 T。
  • otherproviders(S)。通常与 Provides/Conflicts 一起使用,例如 Provides: smtp_daemonConflicts: otherproviders(smtp_daemon)。这是为了防止由于它自身提供的可解析项而导致软件包与自身冲突。在当前的 RPM 版本中,此关键字不是必需的,因此只需使用 Conflicts: name 即可达到相同的效果。

RPM (4.13) 本身了解特殊含义,并将其视为普通可解析项。实际上,这些会被忽略,因为没有实际的软件包会具有“Provides: packageand(A:B)”或“Provides: otherproviders(S)”。