Como probablemente ya sepa, de manera predeterminada cuando instala un paquete en un sistema basado en Debian o Ubuntu, si el paquete contiene un servicio, ese servicio generalmente se habilitará y se iniciará automáticamente cuando instale el paquete.
Esto es un problema para mi.
Me encontré necesitando administrar plantillas para construir contenedores LXC. Hay varios contenedores, cada uno correspondiente a una versión de Debian o Ubuntu. (También hay contenedores basados en Red Hat, pero no son relevantes aquí).
/var/lib/libvirt/filesystems/debian6_template
/var/lib/libvirt/filesystems/debian7_template
/var/lib/libvirt/filesystems/ubuntu1004_template
/var/lib/libvirt/filesystems/ubuntu1204_template
Ocasionalmente, encontraré que las plantillas tienen un paquete faltante o que necesitan algún otro cambio, por lo que las utilizaré para instalar el paquete. ¡Desafortunadamente cuando hago eso, termino con varias copias del servicio del paquete ejecutándose!
A modo de ejemplo, descubrí que las plantillas no tenían un demonio syslog, así que instalé uno:
for template in /var/lib/libvirt/filesystems/{debian,ubuntu}*_template; do
chroot $template apt-get install rsyslog
done
Y rápidamente terminó con cuatro copias de rsyslog ejecutándose. Sin mencionar dos copias de exim4. ¡Uy!
Leí en alguna parte (aunque no puedo encontrarlo de nuevo ahora) que no se supone que inicie los servicios cuando se ejecuta en un chroot, pero eso claramente no está sucediendo aquí.
Un truco desagradable potencialmente viable requiere reemplazar temporalmente los diversos comandos que realmente inician servicios, como start-stop-daemon
y initctl
, aunque esto es mucho más trabajo de lo que realmente quería hacer. Si no tengo otra opción, sin embargo ...
La solución ideal aquí sería que los sistemas basados en Debian dejen de hacer esta basura, pero en su defecto, ¿tal vez una opción de línea de comando oscura o indocumentada apt-get
?
En caso de que no estuviera claro, realmente quiero mantener todo lo relacionado con la administración de las plantillas fuera de las plantillas, si es posible.