Có một cách hơi khó tin, nhưng khá đáng tin cậy để làm điều này mà tôi đã sử dụng một thời gian trong một kịch bản cài đặt tự động.
Đầu tiên tạo một thư mục, ví dụ /root/fake
, có chứa các liên kết tượng trưng để /bin/true
gọi:
initctl
invoke-rc.d
restart
start
stop
start-stop-daemon
service
deb-systemd-helper
Bạn cũng có thể làm cho chúng bash script không làm gì và trả lại thành công.
Sau đó bao gồm thư mục đó ở phía trước $PATH
khi cài đặt gói:
PATH=/root/fake:$PATH apt-get install whatever
Điều này chỉ ngăn daemon bắt đầu / khởi động lại, trong khi những việc như tạo initramfs vẫn đang được thực hiện.
Giải trình
Các tập lệnh đang được thực thi khi cài đặt và gỡ bỏ gói thực thi invoke-rc.d
hoặc các lệnh khác được đề cập để bắt đầu và dừng dịch vụ. Tuy nhiên, họ không gọi họ bằng những con đường tuyệt đối (ít nhất là tôi chưa gặp phải điều đó).
Vì vậy, bằng cách chèn các lệnh "không hoạt động" giả mạo vào đầu $PATH
, các lệnh thực không bao giờ được gọi.
Vì chỉ các lệnh được sử dụng để bắt đầu / dừng dịch vụ đang bị làm giả, mọi thứ khác, đặc biệt là các tác vụ quan trọng như cập nhật / tạo initramfs-hình ảnh vẫn hoạt động.