%config(noreplace) 是否足以指示 RPM 在升级时不要触及配置文件?
Is %config(noreplace) enough to instruct an RPM not to touch a config file in an upgrade?
在我的 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"
)
但是,当我执行 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)
指令,我还需要做些什么吗?
rpm
配置文件的行为理解起来相当复杂。
%config(noreplace)
不会替换您的配置文件如果您更改了它。如果您没有修改配置文件,它将总是被新的配置文件覆盖。
为了更透彻的了解;看到这个优秀的页面:http://people.ds.cam.ac.uk/jw35/docs/rpm_config.html
在我的 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"
)
但是,当我执行 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)
指令,我还需要做些什么吗?
rpm
配置文件的行为理解起来相当复杂。
%config(noreplace)
不会替换您的配置文件如果您更改了它。如果您没有修改配置文件,它将总是被新的配置文件覆盖。
为了更透彻的了解;看到这个优秀的页面:http://people.ds.cam.ac.uk/jw35/docs/rpm_config.html