ご存じのとおり、デフォルトでは、DebianまたはUbuntuベースのシステムにパッケージをインストールするときに、パッケージにサービスが含まれている場合、そのサービスは通常、パッケージのインストール時に有効になり、自動的に開始されます。
これは私にとって問題です。
LXCコンテナを作成するためのテンプレートを管理する必要があることに気付きました。いくつかのコンテナがあり、それぞれがDebianまたはUbuntuリリースに対応しています。(Red Hatベースのコンテナもありますが、ここでは関係ありません。)
/var/lib/libvirt/filesystems/debian6_template
/var/lib/libvirt/filesystems/debian7_template
/var/lib/libvirt/filesystems/ubuntu1004_template
/var/lib/libvirt/filesystems/ubuntu1204_template
テンプレートに不足しているパッケージがあるか、他の変更が必要な場合があるので、それらをchrootしてパッケージをインストールします。残念ながら、それを行うと、パッケージのサービスのコピーがいくつか実行されてしまいます!
例として、テンプレートにsyslogデーモンがないことがわかったため、syslogデーモンをインストールしました。
for template in /var/lib/libvirt/filesystems/{debian,ubuntu}*_template; do
chroot $template apt-get install rsyslog
done
そして、rsyslogの4つのコピーが実行されてすぐに巻き上げられました。exim4の2つのコピーは言うまでもありません。おっとっと!
chrootで実行しているときにサービスを開始することは想定されていませんが、ここでは発生していません。
潜在的に実行可能な厄介なハックの 1つは、start-stop-daemon
やなどの実際にサービスを開始するさまざまなコマンドを一時的に置き換えるinitctl
ことです。他に選択肢がない場合は...
ここでの理想的な解決策は、Debianベースのシステムがこのがらくたの実行を停止することですが、それに失敗するのは、おそらくapt-get
?
明確でない場合は、可能であれば、テンプレートの外部でのテンプレートの管理に関連するものは何でも保持したいと思います。