Оставшиеся файлы после деинсталляции пакета Debian с собственным механизмом обновления

У меня есть пакет Debian, который должен обновить некоторые файлы. Эти файлы будут существовать после удаления пакета Debian. Я хочу удалить их вместе с моим пакетом, когда я вызываю apt-get remove.

Если я добавлю обновленные файлы в

/var/lib/dpkg/info/<package>.list

они будут удалены.

Обновление: я удалю папку в скрипте postrm.debhelper с

папка rm -rf

Но это не правильно.;)

1 ответ

Решение

Во-первых, я бы сказал, что это звучит как несколько неправильное поведение для пакета, удаляя файлы при удалении, которые существовали до установки, и я настоятельно рекомендую не делать ничего подобного в пакете, предназначенном для широкой публики. Однако, если это для частного использования, и соответствующие люди понимают, что он делает, это должно быть хорошо.

Удаление файлов в prerm или postrm звучит как лучший ответ. Но убедитесь, что вы не выполняете rm безусловно; prerm и postrm могут вызываться при нескольких обстоятельствах, кроме полного удаления пакета.

Postrm предпочтительнее, чем prerm, если только вы не хотите полностью убедиться, что файлы будут удалены до того, как собственное содержимое пакета будет удалено из файловой системы.

В пострме я бы предложил сделать что-то вроде

case "$1" in
    purge|disappear)
        rm -rf $your_folder
esac

Вы могли бы добавить remove в purge а также disappear там, если вы хотите, чтобы файлы были удалены, даже когда пакет "удален", а не "очищен" ("удалить" означает, что файлы конфигурации пакета будут сохранены; это обычно подразумевает возможность повторной установки пакета позже),

Postrm также будет вызываться при обычном обновлении пакета или при сбое обновления или начальной установки (действия upgrade, failed-upgrade, abort-install, а также abort-upgrade). См. Политику Debian для подробного описания того, как и когда они используются. Вы почти наверняка не хотите выполнять rm в тех случаях.

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