Ada sedikit peretasan, tetapi cara yang cukup andal untuk melakukan ini yang telah saya gunakan untuk sementara waktu dalam skrip instalasi otomatis.
Pertama buat direktori, misalnya /root/fake
, yang berisi symlink untuk /bin/true
dipanggil:
initctl
invoke-rc.d
restart
start
stop
start-stop-daemon
service
deb-systemd-helper
Anda juga bisa membuatnya bash script yang tidak melakukan apa pun dan mengembalikan kesuksesan.
Kemudian sertakan direktori itu di bagian depan $PATH
saat menginstal paket:
PATH=/root/fake:$PATH apt-get install whatever
Ini hanya mencegah daemon memulai / memulai ulang, sementara hal-hal seperti membuat initramfs masih dilakukan.
Penjelasan
Skrip yang sedang dieksekusi di instalasi paket dan penghapusan mengeksekusi invoke-rc.d
atau orang lain dari perintah yang disebutkan untuk memulai dan menghentikan layanan. Namun mereka tidak memanggil mereka dengan jalur absolut (setidaknya saya belum menemukan yang benar).
Jadi dengan memasukkan perintah "tidak ada operasi" yang dipalsukan di awal $PATH
, perintah yang sebenarnya tidak pernah dipanggil.
Karena hanya perintah yang digunakan untuk memulai / menghentikan layanan yang dipalsukan, yang lainnya, terutama tugas-tugas penting seperti memperbarui / membuat initramfs-gambar masih berfungsi.