安装 rpm 包时替换现有目录及其所有内容

Replace existing directory and all of its content when rpm package is installed

我创建了一个 rpm 包,在安装它时我想用 rpm 包数据替换所有现有目录及其内容

假设我有一个名为 config/ 的目录,其中包含一些配置文件(a.config、b.config 等),现在 a.config 已被弃用,我也没有想要它了。所以我创建了一个新的 rpm 包,其中包含除 a.config 之外的所有文件,但是当我安装该包时,它会更新 b.config 和目录中的所有其他文件,但它不会删除或删除 a.config.

我正在使用以下命令安装 rpm 包

rpm -Uvh --force package.rpm

我只想保留包中包含的文件和目录,删除其他文件和文件夹

回答我自己的问题,

无论你想在 rpm 包安装开始之前执行什么步骤,你都需要在 rpm spec 文件的 %pre 脚本中定义。

所以我写了

%pre
rm -f a.config

在我的规范文件中,它在 rpm 包安装开始之前删除了配置文件

如果您的第一个 rpm 包在 %files 部分中正确包含 a.config,并且它保持原样,并且没有在您的第二个版本的包中列出 %files 部分,那么它应该在升级过程中自动删除。您的 b.config 将是唯一保留的文件,是在安装第二个软件包期间添加的。

保留 a.config 的唯一方法是,如果它从未与 %files 一起列出。