Як ви, напевно, знаєте, за умовчанням під час встановлення пакета в системі на базі 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
Інколи я виявляю, що в шаблонах відсутній пакет або потрібна інша зміна, тому я вступлю в них, щоб встановити пакет. На жаль, коли я це роблю, я завершу кілька запущених копій послуги пакету!
В якості прикладу я виявив, що в шаблонах не було демона syslog, тому я встановив один:
for template in /var/lib/libvirt/filesystems/{debian,ubuntu}*_template; do
chroot $template apt-get install rsyslog
done
І негайно завершили чотири копії rsyslog, що працює. Не кажучи вже про дві копії exim4. На жаль!
Я десь прочитав (хоча я не можу його знову знайти), що це не повинно запускати сервіси під час роботи в chroot, але тут явно цього не відбувається.
Один потенційно життєздатний неприємний злом вимагає тимчасової заміни різних команд, які фактично запускають сервіси, такі як, start-stop-daemon
і initctl
хоча це набагато більше роботи, ніж я дійсно хотів зробити. Якщо у мене немає іншого вибору, хоча ...
Ідеальним рішенням тут було б, щоб системи на базі Debian перестали робити це лайно, але якщо цього не зробити, можливо, незрозумілий або недокументований варіант командного рядка apt-get
?
У випадку, якщо це було не зрозуміло, я дуже хочу , якщо це можливо, тримати щось, що стосується керування шаблонами поза шаблонами.