Почему postrm запускается дважды при чистке?

Я создал пакет со скриптом postrm, который удаляет пользователя. При запуске sudo apt-get remove ... сценарий postrm ведет себя так, как ожидается:

vagrant@vagrant-ubuntu-trusty-64:~$ sudo apt-get -y remove datim4u-auto-cert-updater
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
  datim4u-auto-cert-updater
0 upgraded, 0 newly installed, 1 to remove and 32 not upgraded.
After this operation, 18.4 kB disk space will be freed.
(Reading database ... 70225 files and directories currently installed.)
Removing datim4u-auto-cert-updater (1.0.1~trusty) ...
Removing user datim4u_auto_cert_updater and its home directory...
Looking for files to backup/remove ...
Removing files ...
Removing user `datim4u_auto_cert_updater' ...
Warning: group `datim4u_auto_cert_updater' has no more members.
Done.

Однако при запуске sudo apt-get purge ... сценарий postrm запускается дважды, что приводит к ошибке /usr/sbin/deluser: The user '...' does not exist.:

vagrant@vagrant-ubuntu-trusty-64:~$ sudo apt-get -y purge datim4u-auto-cert-updater
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
  datim4u-auto-cert-updater*
0 upgraded, 0 newly installed, 1 to remove and 32 not upgraded.
After this operation, 18.4 kB disk space will be freed.
(Reading database ... 70225 files and directories currently installed.)
Removing datim4u-auto-cert-updater (1.0.1~trusty) ...
Removing user datim4u_auto_cert_updater and its home directory...
Looking for files to backup/remove ...
Removing files ...
Removing user `datim4u_auto_cert_updater' ...
Warning: group `datim4u_auto_cert_updater' has no more members.
Done.
Purging configuration files for datim4u-auto-cert-updater (1.0.1~trusty) ...
Removing user datim4u_auto_cert_updater and its home directory...
/usr/sbin/deluser: The user `datim4u_auto_cert_updater' does not exist.
2
задан 17 February 2018 в 07:08

1 ответ

Это ожидается и обычно. Обслуживающие сценарии, возможно, звонили многократно во время конфигурации пакета, и их называют с аргументом, указывающим, какое действие они вызываются. Вы видите процесс на странице Debian Wiki на Обслуживающих Сценариях, включая эту блок-схему для процесса удаления и чистки (в противоположность сначала удаляемому пакету и затем очищенному в другой операции):

<code>postrm remove</code>, then <code>postrm purge</code>

Все Ваши обслуживающие сценарии ({pre,post}{inst,rm}) как ожидают, будут принимать во внимание аргументы, переданные им и будут действовать соответственно.

3
ответ дан 2 December 2019 в 02:46

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

Похожие вопросы: