Достаточно ли% config (noreplace), чтобы указать RPM не трогать файл конфигурации при обновлении? - PullRequest
0 голосов
/ 23 ноября 2018

На моем RedHat 7.4 я создаю RPM с CMake, и одна из инструкций, которые я хочу дать 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)?

1 Ответ

0 голосов
/ 23 ноября 2018

Поведение rpm с файлами конфигурации довольно сложно понять.

%config(noreplace) не заменит ваш файл конфигурации , если вы изменили его .Если вы не трогали файл конфигурации, он всегда будет перезаписан новым файлом конфигурации.

Для более глубокого понимания;см. эту превосходную страницу: http://people.ds.cam.ac.uk/jw35/docs/rpm_config.html

...