Por que o postrm é executado duas vezes na limpeza?

2

Eu criei um pacote que tem um script postrm que remove um usuário. Ao executar sudo apt-get remove ... , o script postrm se comporta conforme o esperado:

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.

No entanto, ao executar sudo apt-get purge ... , o script postrm é executado duas vezes, resultando no erro /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.
    
por Ulad Kasach 07.07.2017 / 22:14

1 resposta

3

Isso é esperado e usual. Os scripts do mantenedor podem ser chamados várias vezes durante a configuração do pacote e são chamados com um argumento que indica qual ação eles são chamados. Você pode ver o processo na página Debian Wiki nos Scripts do Mantenedor , incluindo este fluxograma para o processo de remoção e remoção (em oposição a um pacote sendo removido pela primeira vez e, em seguida, removido em uma operação diferente):

Todos os scripts do mantenedor ( {pre,post}{inst,rm} ) devem tomar nota dos argumentos passados para eles e agir de acordo.

    
por muru 17.02.2018 / 03:41