如何在 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,具體取決於您使用的發行版:它們的打包準則都略有不同。

相關內容