Para o debian, você pode fazer isso com policy-rc.d . Aqui está uma explicação :
A package’s maintainer scripts are supposed to only interface with the init system by means of invoke-rc.d, update-rc.d and the LSB init script headers... invoke-rc.d will, before taking its action, check whether /usr/sbin/policy-rc.d is executable, will call it with the respective service name and the current runlevel number on its command line and act according to its exit code. For example, a return value of 101 will prevent the planned action from being taken. This includes the automated start of the service upon package installation as well as the stop of the service on package removal and reduces the stop-upgrade-restart ritual during package upgrades to just performing the upgrade which might leave the old version of the service running
Como você não deseja que nenhum serviço seja iniciado, seu script policy-rc.d pode ser simplesmente
#!/bin/sh
exit 101
Esta é a técnica usada por ferramentas como o mkimage-debootstrap .
Infelizmente, essa técnica não funciona com o chroots do Ubuntu . Os pacotes que se integram ao sistema init de inicialização chamam / usr / sbin / initctl em vez de invoke-rc.d durante a instalação, e o initctl não consulta o policy-rc.d. De acordo com o autor do upstart , a solução é substituir / sbin / initctl por um link simbólico para / bin / true em um chroot. Você pode ver isso no mkimage-debootstrap também, eles fazem
dpkg-divert --local --rename --add /sbin/initctl
ln -sf /bin/true sbin/initctl