在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)
指令之外,我还需要做其他事情吗?
答案 0 :(得分:4)
rpm
与配置文件的行为相当难以理解。
%config(noreplace)
不会替换您的配置文件(如果您更改了)。如果您未触摸配置文件,则该文件将始终被新的配置文件覆盖。
更全面的了解;看到这个很棒的页面:http://people.ds.cam.ac.uk/jw35/docs/rpm_config.html