Как сделать обновление оборотов в минуту, которые ничего не дозируют, кроме запуска команды оболочки?

Я создаю rpm с именем rsv-1.0, он автоматически установит файл rsv.cfg в /etc при установке rsv-1.0.rpm

пакет содержит только один файл etc/rsc.cfg

Что делать, если я хочу внести изменения в файл rsv.cfg для обновленного rpm, скажем rsv-2.0.rpm

Затем я создал пустой каталог и включил его в rsv-2.0.tar.gz, включив его в новый файл SPEC.

%post
if [ -f /etc/rsv.cfg ]; then
    /bin/echo "hello-2.0" > /etc/rsv.cfg
fi

в качестве команды оболочки

но я считаю, что это работает только при использовании rpm -ivh rsv-2.0.rpm

если вы используете rpm -Uvh rsv-2.0.rpm, файл в /etc/rsv.cfg исчезнет

поэтому мой вопрос, как сделать обновление об / мин, которое ничего не дает, кроме запуска команды оболочки?

обновить файл спецификации для v2

Name: rsv
Version: 2.0
Release: 1
Summary: rsv rpm

Group:  rsv
License: GPL+
URL: 
Source0: %{name}-%{version}.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root

#BuildRequires:
#Requires:

%description
%{summary}

%prep
%setup -q


%build


%install
rm -rf %{buildroot}
mkdir -p  %{buildroot}

#cp -a * %{buildroot}


%clean
rm -rf %{buildroot}

%post
if [ -f /etc/rsv.cfg ]; then
    /bin/echo "hello-2.0" > /etc/rsv.cfg
fi


%files
%defattr(-,root,root,-)
%doc

#%config %{_sysconfdir}/%{name}.cfg

%changelog

файл спецификации для v1.0 просто uncomment %config и #cp

1 ответ

Потому что оригинал spec Файл был неверным и явно не перечислял файл как файл конфигурации, я думаю, это то, что его стирает.

Возможное исправление для этого - иметь версию 2 %pre раздел посмотреть, если он существует, и скопировать его куда-нибудь.

Сценарий заказа для обновления может сбивать с толку. Вторая копия установлена, с их %pre/%post называется, а затем первый экземпляр %preun/%postun называется.

Другие вопросы по тегам