web-dev-qa-db-fra.com

Pourquoi postrm s'exécute deux fois lors de la purge?

J'ai créé un package qui a un script postrm qui supprime un utilisateur. Lors de l'exécution Sudo apt-get remove ..., le script postrm se comporte comme prévu:

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.

Cependant, lors de l'exécution de Sudo apt-get purge ..., le script postrm est exécuté deux fois, ce qui entraîne l'erreur /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
Ulad Kasach

Ceci est attendu et habituel. Les scripts du responsable peuvent être appelés plusieurs fois pendant la configuration du package, et ils sont appelés avec un argument indiquant quelle action ils sont appelés. Vous pouvez voir le processus dans la page Wiki Debian sur les scripts de maintenance , y compris cet organigramme pour le processus de suppression et purge ( par opposition à un paquet étant d'abord retiré puis purgé dans une opération différente):

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

Tous vos scripts de responsable ({pre,post}{inst,rm}) devraient prendre note des arguments qui leur ont été transmis et agir en conséquence.

3
muru