web-dev-qa-db-ja.com

パージ時にpostrmが2回実行されるのはなぜですか?

ユーザーを削除する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スクリプトが2回実行され、エラー/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

これは予想通りであり、通常のことです。メンテナースクリプトは、パッケージの構成中に複数回呼び出される場合があり、どのアクションが必要かを示す引数とともに呼び出されます。プロセスは Debian Wikiページのメンテナースクリプト で見ることができます。これには、削除およびパージのプロセスのフローチャートが含まれます(パッケージが最初に削除されてから別の操作でパージされるのとは対照的に):

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

Allメンテナースクリプト({pre,post}{inst,rm})は、渡された引数に注意して、それに応じて動作することが期待されています。

3
muru