Uninstall script (Выполнить скрипт при удалении пакета)

SLAX, Deep Style, ZenWalk

Модератор: Модераторы разделов

Ответить
FlySnake
Сообщения: 992
ОС: openSUSE
Контактная информация:

Uninstall script

Сообщение FlySnake »

Всем привет
Подскажите как без костылей выполнить скрипт при удалении своего пакета? При установке выполняется единтсвенный в слако-пакете скрипт doinst.sh. Предположим что он "гадит" в некоторые системные файлы и нужно чтобы при удалении этого пакета он подчистил за собой. В rpm для этого целый набор скриптов, а как быть в слаке?. Не могу ничего путного найти, либо неправильно ищу.
Спасибо сказали:
FlySnake
Сообщения: 992
ОС: openSUSE
Контактная информация:

Re: Uninstall script

Сообщение FlySnake »

ОК, уточню суть проблемы.
Устанавливаемый пакет - это демон, который должен стартовать при загрузке системы. Сею фишку можно реализовать в родном для слаки BSD-стиле, но для этого нужно сделать запись непосредственно в стартовых скриптах и при удалении пакета как-то удалить эту запись (в теме собственно изложено). Ещё можно использовать совместимость с System V и накидать симлинков на стартовый скрипт софтины в соответствующие каталоги. Но тогда вопрос в корректности размещения симлинков в пакете. Ведь не зря в man makepkg написано что по умолчанию он игнорирует симлинки в собираемом каталоге и это рекомендуется. А если делать симлинки с помощью doinst.sh, то удалить их при удалении пакета как и в первом случае не получится, а если размещать непосредственно в пакете, то фиг его знает насколько это корректно будет работать. Как их тогда нужно делать чтобы разместить в пакете и они правильно работали?
Спасибо сказали:
Аватара пользователя
bormant
Сообщения: 1354

Re: Uninstall script

Сообщение bormant »

FlySnake писал(а):
05.07.2011 13:10
А если делать симлинки с помощью doinst.sh, то
... достаточно почитать less /sbin/removepkg, чтобы перестать беспокоиться именно об этом случае.
Или ещё более стандартно: включить в пакет /etc/rc.d/rc.daemon и написать в документации про то, что нужно сделать его исполняемым и добавить в стартовый скрипт (например, /etc/rc.d/rc.local)
if [ -x /etc/rc.d/rc.daemon ] ; then
/etc/rc.d/rc.daemon
fi

Точнее, размещать симлинки нужно в каталоге пакета перед его сборкой, но makepkg -l y ... добавит их в doinst.sh в нужном виде, а removepkg приберёт при удалении пакета.

FlySnake писал(а):
05.07.2011 13:10
Ведь не зря в man makepkg написано что по умолчанию он игнорирует симлинки в собираемом каталоге и это рекомендуется.
Там похожими словами написано совсем другое.
If symbolic links exist, they will be converted to script code to recreate them when the package is installed. This code will be appended to the primary installation script ( install/doinst.sh ) , or, if that script does not exist it will be created with those contents.
То есть, существующие ссылки будут помещены в doinst.sh. Если только такое поведение не будет отменено при помощи ключа -l n.
Спасибо сказали:
FlySnake
Сообщения: 992
ОС: openSUSE
Контактная информация:

Re: Uninstall script

Сообщение FlySnake »

Спасибо! Как всегда всё проще чем казалось
Спасибо сказали:
Ответить