rpm reinstall не переустанавливает файлы конфигурации?

У меня есть rpm с файлом, помеченным как файл конфигурации в разделе %files:

%files
%config /path/to/file.conf

Теперь предположим, что я редактирую этот файл на диске. Я хочу исправить это и повторить чистую установку пакета; тем самым восстанавливая файл конфигурации в исходное состояние; с использованием

zypper in -f my-package

после этого; файл конфигурации все еще находится в отредактированной версии. Если это была не переустановка, а обновление (с rpm-пакетом, содержащим измененную версию!); тогда rpm переместил бы мой отредактированный файл в /path/to/file.conf.rpmsave и переустановил бы новый.

Какие есть варианты обойти эту проблему? Это нормальное поведение? Если бы я использовал rpm; Думаю, я мог бы использовать rpm -if my-package.rpm --replacefiles; но этот вариант не существует для zypper.

PS Я использую эту страницу для справки.


person Chris Maes    schedule 22.09.2016    source источник


Ответы (2)


Да, zypper нужно будет добавить --replacefiles, чтобы перезаписать файлы %config. Более сложной проблемой (для zypper) является область действия --replacefiles: эта опция применяется к транзакции, а не к отдельному пакету в транзакции.

Самое простое решение на сегодняшний день (имхо) - установить пакет вручную, используя --replacefiles в CLI.

person Jeff Johnson    schedule 26.09.2016
comment
полезный; но не реальное решение :) На данный момент я рассматриваю возможность просто удалить тег %config для файлов конфигурации, которые я хочу обязательно заменить их версией пакета при установке... - person Chris Maes; 26.09.2016

Похоже, вы видите разницу между %config и %config(noreplace). Однако, даже если он не заменяет, я думаю, что он должен экспортировать его как file.conf.rpmnew.

Вы всегда можете использовать rpm2cpio для извлечения исходного файла, если он вам действительно нужен.

person Aaron D. Marasco    schedule 23.09.2016
comment
вы не читали страницу, на которую я ссылался, я думаю: я в случае %config, измененный в обновлении RPM (хотя я думаю, что rpm не замечает этого из-за переустановки), поэтому он должен использовать файл из обновления, отредактированный файл в .rpmsave - person Chris Maes; 23.09.2016
comment
и после zypper in -f нет ни файла rpmnew, ни файла rpmsave. - person Chris Maes; 23.09.2016