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