如何在 RPM 中模拟 Debian 软件包的“替换:”功能?

如何在 RPM 中模拟 Debian 软件包的“替换:”功能?

我需要使用 NSCD(名称服务缓存守护进程)来减少 SLES10 系统上 LDAP 服务器的负载。根据我的经验,作为 GNU LibC 一部分提供的默认 nscd 是垃圾,每隔几个小时就会严重崩溃。因此,必须使用替代品,例如 unscd 或 gnscd。

SLES10 中没有针对这两者的软件包,因此需要编译一个软件包。然而,AppArmor 存在一个问题 - 在 SLE10 中,每个应用程序都将其 AppArmor 配置文件合并到一个大的“apparmor-profiles”包中,而不是让每个包提供自己的配置文件 - 并且 unscd/gnscd 无法使用apparmor-profiles 中的配置文件。

在制作 Debian 软件包时,可以指定一个名为 Replaces: 的关系,它表示“我知道我包含与另一个软件包相同的文件,但只要它们的版本与此检查匹配,我就可以覆盖它们的文件”。因此,我可以在规范文件中说“替换:apparmor-profiles (<= 2.0.1-20.20.16)”之类的内容,并且我可以干净地替换 apparmor-profiles 包中的任何文件。

我该如何对 RPM 执行相同的操作,而不是重新编译我自己的 apparmor-profiles 软件包并删除文件,或者通过 rpm 命令强制该软件包(这会在将来出现问题)?

答案1

我不认为 RPM 具有模拟功能。 RPM 具有“过时”功能,但这是用另一个名称不同的包替换一个包。您可以让多个 RPM 拥有一个对象,但这主要用于目录,例如 /etc/bash_completion.d,具体取决于您使用的发行版:它们的打包准则都略有不同。

相关内容