特殊な用途かもしれないけど、Ubuntuのパッケージインストールをする時に自動でデーモンを起動したくない場合があります。
ipv6を完全無効化している場合に、nginxをでインストールするとデーモンが起動されるときに、
/etc/nginx/site-enabled/default
listen [::]:80 default_server;
に引っかかってしまって、エラーになってしまいます。(ipv6のloopbackをbindできない。)
これを回避するには、パッケージインストール時にデーモンの起動が抑制できれば良いのですが、なかなか方法が見つからなかったので個人的備忘録。
結論から言えば方法は簡単。以下のファイルを作成して実行属性をつけておくだけです。
/usr/sbin/policy-rc.d
#!/bin/sh
exit 101
こうすると、パッケージインストール時にデーモンが起動されません。
なんでこれで抑制できるか? ですが、Debian/UbuntuのSysVinitの invoke-rc.d
が policy-rc.d
を呼び出したときのリターンコードで制御しているみたいです。
101
という定数がポイントのようですが、詳しいところまではわかりませんでした。
とりあえず手元の環境では期待通り動いているので良しとします。
Ansibleでプロビジョニングするときのにパッケージインストール時にデーモンが自動起動してしまって、変な副作用が発生してコケることがあるのですが、これで解決できそうです。