Я создал пакет со скриптом 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.
Это ожидается и обычно. Обслуживающие сценарии, возможно, звонили многократно во время конфигурации пакета, и их называют с аргументом, указывающим, какое действие они вызываются. Вы видите процесс на странице Debian Wiki на Обслуживающих Сценариях, включая эту блок-схему для процесса удаления и чистки (в противоположность сначала удаляемому пакету и затем очищенному в другой операции):
Все Ваши обслуживающие сценарии ({pre,post}{inst,rm}
) как ожидают, будут принимать во внимание аргументы, переданные им и будут действовать соответственно.