В настоящее время я тестирую установку RPM с файлом конфигурации, используя config(noreplace)
директиву.
Согласнос помощью конфигурации(noreplace)мой файл спецификаций помечает один файл как файл конфигурации:
%config(noreplace) /opt/lm/dest/conf/db.xml
Я внес изменения на диске в файл для версии 1 и приступил к обновлению до версии 2. Я ожидал, что подробный вывод (при использовании -Uvh
) укажет на то, что он создал , но db.xml.rpmnew
этого не произошло, однако внесенные мной изменения на диске остались нетронутыми.
Кто-нибудь знает, почему это может быть так?
Немного справочной информации: я использую один и тот же tar-файл для создания версий 1 и 2, что не должно иметь значения, но я все равно подумал, что стоит об этом упомянуть.
ПРАВКА 1:
Если не ясно, db.xml.rpmnew
файл не был создан.
решение1
То, что вы наблюдаете, — это ожидаемое поведение..rpmnew
Пакет создается только при выполнении обоих следующих условий:
- Файл конфигурации по умолчанию в новом пакете RPM отличается от файла конфигурации, который изначально был включен в текущую/предыдущую версию пакета RPM. (Изменения в значениях по умолчанию были внесены сопровождающим пакета.)
- Фактический файл конфигурации на диске был изменен по сравнению с файлом по умолчанию, который был включен в текущую/предыдущую версию пакета. (Изменения по сравнению с файлами по умолчанию были внесены администратором.)
Согласно журналу изменений:
коммит e64bf5b93ab689e6031fce4489e4ae38ebaebef1
Автор: Пану Матилайнен
Дата: Вт Авг 28 09:04:09 2007 +0300Избегайте .rpmnew, если файл в пакете не изменился (rhbz#194246)
Текущее поведение %config(noreplace) создает .rpmnewfile, если тип текущего файла был изменен на тот, который был изначально установлен.
Патч изменяет это поведение, так что когда старый и новый (в БД и в пакете) идентичны -> не изменены, функция возвращает FA_SKIP -> она ничего не затирает, она просто пропускает установку файла из пакета. Этот патч обрабатывает также противоположный случай, когда старый и новый пакеты содержат
%config
символическую ссылку, а у нас есть обычный файл на диске.Patch from Tomas Mraz.