มีวิธีที่แฮ็กเล็กน้อย แต่ค่อนข้างน่าเชื่อถือในการทำสิ่งนี้ซึ่งฉันได้ใช้เป็นระยะเวลานานในสคริปต์การติดตั้งอัตโนมัติ
สร้างไดเรกทอรีเป็นอันดับแรกตัวอย่างเช่น/root/fake
มี symlinks ที่/bin/true
เรียกว่า:
initctl
invoke-rc.d
restart
start
stop
start-stop-daemon
service
deb-systemd-helper
คุณสามารถทำให้พวกเขาทุบตีสคริปต์ที่ไม่ทำอะไรเลยและกลับมาประสบความสำเร็จ
จากนั้นให้รวมไดเรกทอรีนั้นไว้ด้านหน้าของ$PATH
เมื่อติดตั้งแพ็คเกจ:
PATH=/root/fake:$PATH apt-get install whatever
สิ่งนี้จะป้องกันไม่ให้ daemons เริ่มต้น / เริ่มใหม่ในขณะที่สิ่งต่าง ๆ เช่นการสร้าง initramfs ยังคงดำเนินการอยู่
คำอธิบาย
สคริปต์ที่จะถูกดำเนินการในการติดตั้งแพคเกจและลบดำเนินการinvoke-rc.d
หรือคนอื่น ๆ ของคำสั่งที่กล่าวถึงเพื่อเริ่มต้นและหยุดบริการ อย่างไรก็ตามพวกเขาไม่ได้เรียกพวกเขาด้วยเส้นทางที่แน่นอน (อย่างน้อยฉันก็ไม่ได้พบสิ่งที่ทำ)
ดังนั้นโดยการแทรกคำสั่ง "ไม่มีการดำเนินการ" ที่แกล้งทำในตอนต้นของ$PATH
คำสั่งจริงไม่เคยได้รับการเรียก
เนื่องจากเฉพาะคำสั่งที่ใช้ในการเริ่ม / หยุดบริการเท่านั้นที่ถูกแกล้งทำทุกอย่างในงานสำคัญโดยเฉพาะอย่างยิ่งเช่นการอัปเดต / สร้างภาพเริ่มต้นยังคงใช้งานได้