转自这里
RPM spec文件有个名为 %config 的宏,它可以标识配置文件, 这样在升级时用户对配置文件做过的修改就不会丢失。 没有它,用户千辛万苦修改过的配置文件会在升级过程中被覆盖。
%config也可以写成%config(noreplace),不过网上关于它的说明却屈指可数。 下面是关于这两者的一些实验,都是在RedHat 9的RPM(rpm-4.2-0.69)上进行的, 其他版本有可能不同。
RPM中的文件的制约条件有三个:
1. 该文件在spec中如何标识(默认,%config或者%config(noreplace));
2. 在rpm升级包中该文件是否被更新;
3. 该文件是否被用户编辑过。
下表就是各个条件的组合结果。
文件标识 | 在RPM升级包中是否更新 |