首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

关于RPM的%config跟(noreplace)

2012-12-25 
关于RPM的%config和(noreplace)转自这里?RPM spec文件有个名为 %config 的宏,它可以标识配置文件, 这样在

关于RPM的%config和(noreplace)

转自这里

?

RPM spec文件有个名为 %config 的宏,它可以标识配置文件, 这样在升级时用户对配置文件做过的修改就不会丢失。 没有它,用户千辛万苦修改过的配置文件会在升级过程中被覆盖。

?

%config也可以写成%config(noreplace),不过网上关于它的说明却屈指可数。 下面是关于这两者的一些实验,都是在RedHat 9的RPM(rpm-4.2-0.69)上进行的, 其他版本有可能不同。

?

RPM中的文件的制约条件有三个:

1. 该文件在spec中如何标识(默认,%config或者%config(noreplace));

2. 在rpm升级包中该文件是否被更新;

3. 该文件是否被用户编辑过。

?

下表就是各个条件的组合结果。

保持旧文件,新文件安装为.rpmnew

?

结论:非配置文件或是上次安装后没有被修改的文件会被RPM包内的新文件覆盖。 如果配置文件被修改过,但在新的RPM包中未作更新,则修改过的文件保留。 仅当配置文件被修改并且在新的RPM包中被更新时,具体动作取决于(noreplace)。 %config使得旧文件被改名为.rpmsave并安装新文件,而%config(noreplace)将保持旧文件 并将新文件安装为.rpmnew。

?

建议一般配置文件都标识为(noreplace),除非升级所带来的配置文件变动非常重要, 使用上一版本的配置文件无法正常工作时才使用%config。


?

热点排行