LINUX.ORG.RU

dnf upgrade удаляет файлы

 , , , ,


0

1

Для своего небольшого приложения наваял spec файл. Установка/удалени пакета dnf install/remove работает успешно, однако dnf upgrade каким-то образом удаляет всю директороию %{_sharedstatedir}/my_app вместе с файлами.

Вот фрагмент:

...
%install
mkdir -p %{buildroot}%{_sharedstatedir}/my_app
...

%files
...
%dir %{_sysconfdir}/my_app
%{_sysconfdir}/my_app/file1
%{_sysconfdir}/my_app/file2
%{_sysconfdir}/my_app/file3

%dir %{_sharedstatedir}/my_app


%post

%preun
if [ $1 == 0 ]; then
   # do it only on uninstall
   rm -rf %{_sharedstatedir}/my_app
   rm -rf %{_sysconfigdir}/my_app
fi

%postun

Что здесь не так?

★★

Ответ на: комментарий от t184256

Технически — непонимание порядка выполнения скриптлетов при апдейте.

Именно поэтому я и проверяю в %post секции в каком режиме (install, upgrade, uninstall) выполняемся, чтобы вычистить все только при uninstall.

Глобально — не так само твоё желание удалять %{_sharedstatedir}.

А что грешного в желании подчищать за собой? :)

cruz7 ★★
() автор топика
Ответ на: комментарий от cruz7

А что грешного в желании подчищать за собой? :)

Это представь ты удаляешь mysql сервер (чтоб потом поставить вместо него mariadb, например), а он тебе вместе с ним сносит всю базу.

firkax ★★★★★
()
Ответ на: комментарий от cruz7

поэтому я и проверяю в %post секции в каком режиме

А, точно. Хм.

А что грешного в желании подчищать за собой? :)

Нарушение принципа наименьшей неожиданности? Я, может, джва дня писал конфиг к твоему сервису, а ты вместо бережного %config(noreplace) грохнул мне и /etc/myapp/config, и /etc/myapp/config.bak. И все бесценные данные.

t184256 ★★★★★
()
Последнее исправление: t184256 (всего исправлений: 1)
Ответ на: комментарий от firkax

Это представь ты удаляешь mysql сервер (чтоб потом поставить вместо него mariadb, например), а он тебе вместе с ним сносит всю базу.

Разумно, согласен.

cruz7 ★★
() автор топика
Ответ на: комментарий от t184256

Нарушение принципа наименьшей неожиданности? Я, может, джва дня писал конфиг к твоему сервису, а ты вместо бережного %config(noreplace) грохнул мне и /etc/myapp/config, и /etc/myapp/config.bak. И все бесценные данные.

Имеет смысл, спасибо, буду переписывать свой .spec-файл.

cruz7 ★★
() автор топика