打开一个 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