打开一个 rpm spec 文件,在 %files
段有一个指令很常见:%config(noreplace)
,这个指定到底是干什么用的呢?
答案是,该指令决定如果一个文件被管理员修改过后,下次更新该文件所在的rpm包时,该文件的存在状态。例如,一般升级软件时,配置文件是不会变化的,而主程序则一般需要被升级(替换)。
对于 spec 文件中在 %files
段的某一个文件,我们要讨论三种情况:
- 没有带
%config
指令。例如:%{_sbindir}/redis-server
- 带了
%congfig
指令。例如:%config %{_sysconfdir}/redis/redis.conf
- 带了
%config(noreplace)
指令。例如:%config(noreplace) %{_sysconfdir}/redis/redis.conf