如何在不修改现有 rpm 的规范文件的情况下使现有的 rpm 废弃新的 rpm
How to make an existing rpm obsolete a new rpm without modify the existing rpm's spec file
我的团队将向用户领域添加一个新的 RPM Y。已经有一个 RPM,X,它必须与 Y 互斥。换句话说,X 和 Y 不能共存。
因此,在 Y 的 spec 文件中,有一行说 "Obsolete: X."
问题是我们不能修改X的spec文件。写的时候没有这个名为Y的包。因此,它既不是"Obsoletes"也不是"Conflicts" Y。
我们可能会向用户领域添加更多 fake/virtual/meta 包。无论如何,现有的包 X 是否也有效地淘汰了新的包 Y?
yum install X
如果安装了 Y,则必须将其删除。
我不知道如何做到这一点,但你可以添加
Conflicts: X
在 Y 的规范文件中。这样它们就不能安装在一起。
参见Fedora Guidelines for obsoleting packages。它提供了全面的描述。
但是根据您的描述您不想使用'obsoletes'。当您将一个包替换为另一个包时会使用它。例如,当项目更改名称并因此包更改名称并且您想将 old-name-2.0
替换为 new-name-3.0
甚至 new-name-1.0
.
您想使用 Conflicts
并且将此标签放入其中一个包中就足够了。当 Y 规范将具有:
Conflicts: X
那么你不需要改变X,你不能同时安装X和Y。
我的团队将向用户领域添加一个新的 RPM Y。已经有一个 RPM,X,它必须与 Y 互斥。换句话说,X 和 Y 不能共存。
因此,在 Y 的 spec 文件中,有一行说 "Obsolete: X."
问题是我们不能修改X的spec文件。写的时候没有这个名为Y的包。因此,它既不是"Obsoletes"也不是"Conflicts" Y。
我们可能会向用户领域添加更多 fake/virtual/meta 包。无论如何,现有的包 X 是否也有效地淘汰了新的包 Y?
yum install X
如果安装了 Y,则必须将其删除。
我不知道如何做到这一点,但你可以添加
Conflicts: X
在 Y 的规范文件中。这样它们就不能安装在一起。
参见Fedora Guidelines for obsoleting packages。它提供了全面的描述。
但是根据您的描述您不想使用'obsoletes'。当您将一个包替换为另一个包时会使用它。例如,当项目更改名称并因此包更改名称并且您想将 old-name-2.0
替换为 new-name-3.0
甚至 new-name-1.0
.
您想使用 Conflicts
并且将此标签放入其中一个包中就足够了。当 Y 规范将具有:
Conflicts: X
那么你不需要改变X,你不能同时安装X和Y。