LINUX.ORG.RU

Как писать postinst/postrm скрипты в deb-пакетах

 


0

1

Привет, ЛОР!

Нужно собрать DEB-пакет руками (без dh_make), и возникает вопрос: как грамотно писать postinst/postrm скрипты?

Нагуглил какие-то примеры типа вот такого вот:

#!/bin/sh
set -e

case "$1" in
    configure)
        # свои команды можно писать тут
    ;;

    abort-upgrade|abort-remove|abort-deconfigure)
    ;;

    *)
        echo "postinst called with unknown argument \`$1'" >&2
        exit 1
    ;;
esac

# а еще свои команды можно писать тут

Или типа вот такого-вот:
#!/bin/sh

# можно командочки писать тут и забить вообще на "$1" == "configure"
# типа просто обычний скрипт


А вопрос таков: обязательно обрабатывать аргументы как в первом примере, или можно забить и писать все как простой скрипт?
Зачем мне обрабатывать все эти аргументы, и вместо скрипта в 10 строк писать скрипт в 20? Тем более, что если кто-то потом будет это подправлять, его скорее всего эти конструкции только запутают.

Задача у меня следующая:
1) postinst: поменять хазяина и скопировать один файлик;
2) prerm: стопнуть сервис если он запущен;
3) postrm: удалить файлик скопированный на этапе 1.

можно забить и писать все как простой скрипт

bass ★★★★★
()

А вопрос таков: обязательно обрабатывать аргументы как в первом примере, или можно забить и писать все как простой скрипт?

Обязательно. Ты же по-разному должен отрабатывать configure и purge.

Зачем мне обрабатывать все эти аргументы, и вместо скрипта в 10 строк писать скрипт в 20? Тем более, что если кто-то потом будет это подправлять, его скорее всего эти конструкции только запутают.

Да все просто, например, логика remove говорит что после удаления пакета все сгенеренные данные остаются на месте(например, базы MySQL), но когда ты вызываешь purge, то нужно почистить эти базы.

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

А у нас особенность в том, что deb пакеты и rpm пакеты должны вести себя совсем одинаково. И поскольку у rpm-ов нету pruge, в deb-ках мы об этом не заботимся.


Ты же по-разному должен отрабатывать configure и purge.

Все просто же:
- configure это postinst файл;
- purge это prerm/postrm.

но когда ты вызываешь purge, то нужно почистить эти базы.

Я описал више, что у меня задачи попроще.

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

Мне тут предложили посмотреть в FPM, и мне понравилось: просто объявить все функциями, а вконце добавить шаблонную обработку аргументов.

sphericalhorse ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.