ตามที่คุณอาจทราบแล้วตามค่าเริ่มต้นเมื่อคุณติดตั้งแพคเกจบนระบบที่ใช้ 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 daemon ดังนั้นฉันจึงติดตั้ง:
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
หรือ
ในกรณีที่ไม่ชัดเจนฉันต้องการเก็บอะไรที่เกี่ยวข้องกับการจัดการแม่แบบไว้นอกแม่แบบถ้าเป็นไปได้