Comme vous le savez probablement, par défaut lorsque vous installez un paquet sur un système basé sur Debian ou Ubuntu, si le paquet contient un service, ce service sera généralement activé et démarré automatiquement lorsque vous installerez le paquet.
C'est un problème pour moi.
Je me suis retrouvé à devoir gérer des modèles pour construire des conteneurs LXC. Il existe plusieurs conteneurs, chacun correspondant à une version Debian ou Ubuntu. (Il existe également des conteneurs basés sur Red Hat, mais ils ne sont pas pertinents ici.)
/var/lib/libvirt/filesystems/debian6_template
/var/lib/libvirt/filesystems/debian7_template
/var/lib/libvirt/filesystems/ubuntu1004_template
/var/lib/libvirt/filesystems/ubuntu1204_template
Parfois, je constate que les modèles ont un package manquant ou nécessitent d'autres modifications, je vais donc les chrooter pour installer le package. Malheureusement, lorsque je fais cela, je me retrouve avec plusieurs copies du service du package en cours d'exécution!
À titre d'exemple, j'ai trouvé que les modèles n'avaient pas de démon syslog, j'en ai donc installé un:
for template in /var/lib/libvirt/filesystems/{debian,ubuntu}*_template; do
chroot $template apt-get install rsyslog
done
Et rapidement terminé avec quatre copies de rsyslog en cours d'exécution. Sans oublier deux copies d'exim4. Oups!
J'ai lu quelque part (bien que je ne puisse pas le retrouver maintenant) qu'il n'est pas censé démarrer les services lors de l'exécution dans un chroot, mais cela ne se produit clairement pas ici.
Un hack méchant potentiellement viable nécessite le remplacement temporaire des différentes commandes qui démarrent réellement les services, comme start-stop-daemon
et initctl
, bien que ce soit beaucoup plus de travail que je ne voulais vraiment le faire. Si je n'ai pas d'autre choix, cependant ...
La solution idéale ici serait que les systèmes basés sur Debian cessent de faire cette merde, mais à défaut, peut-être une option de ligne de commande obscure ou non documentée pour apt-get
?
Au cas où ce ne serait pas clair, je veux vraiment garder tout ce qui concerne la gestion des modèles en dehors des modèles, si possible.