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

时间:2018-11-22 22:41:22

标签: cmake redhat rpm

在RedHat 7.4上,我正在使用CMake创建一个RPM,而我要给出的RPM的指示之一是-如果操作是升级,则要保留某个配置文件。

我认为我可以使用({mcve)在CMakeLists.txt中完成此操作:

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"
  )

但是,当我执行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)指令之外,我还需要做其他事情吗?

1 个答案:

答案 0 :(得分:4)

rpm与配置文件的行为相当难以理解。

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

更全面的了解;看到这个很棒的页面:http://people.ds.cam.ac.uk/jw35/docs/rpm_config.html