%config(noreplace) 是否足以指示 RPM 在升级中不要触及配置文件?

boa*_*der 1 redhat rpm cmake

在我的 RedHat 7.4 上,我正在使用 CMake 创建一个 RPM,我想要给 RPM 的指令之一是 - 单独保留某个配置文件,以防操作是升级。

我想我可以在我的 CMakeLists.txt 中使用(mcve)来完成此任务:

cmake_minimum_required(VERSION 3.4.0 FATAL_ERROR)                                                                                                                                                                  
project(MyKibana)

set(kibana_version 6.2.2)
set(kibana_dir /usr/share/mykibana)

list(APPEND CPACK_RPM_USER_FILELIST                                                                                                                                                
  "%config(noreplace) ${kibana_dir}/config/kibana.yml"
  )
Run Code Online (Sandbox Code Playgroud)

然而,当我这样做时sudo yum upgrade /tmp/my-kibana-6.2.2-577-g7cca696.el7.my.x86_64.rpm -y,我发现 处的文件/usr/share/mykibana/config/kibana.yml被RPM 中的文件覆盖。

除了指令之外我还需要做些什么吗%config(noreplace)

Chr*_*aes 5

配置文件的行为rpm很难理解。

%config(noreplace)如果您更改了配置文件,则不会替换它。如果您没有触及配置文件,它将始终被新的配置文件覆盖。

为了更彻底的了解;请参阅这个优秀的页面:http://people.ds.cam.ac.uk/jw35/docs/rpm_config.html