Você pode usar predefinições do sistema para afetar se um serviço do systemd será padronizado ativado ou desativado no momento da instalação.
O padrão de predefinições do Debian é ativar todos os serviços quando eles são instalados, portanto, você só precisa enviar uma predefinição para as estações de trabalho de desenvolvimento (o comportamento padrão corresponde ao que você quer que aconteça na produção), enviando um arquivo como /etc/systemd/system-preset/80-foo.preset
contendo uma linha que diz
disable foo.service
Se você gerenciar suas estações de trabalho de desenvolvedor usando um sistema como Puppet, Chef, Ansible, etc., você poderá usá-las para enviar uma configuração predefinida do systemd, que facilitará a aplicação da política somente a estações de trabalho do desenvolvedor e não máquinas de produção.
Seu pacote .deb deve usar o comando systemctl preset
para ativar o serviço, já que esse comando respeitará a configuração predefinida.
Como @JdeBP e @ sourcejedi apontam, as macros do Debian em deb-helpers (como dh_systemd_enable
) já fazem isso, elas invocam deb-systemd-helper
que usará systemctl preset
por padrão (com uma pequena advertência que se você remover (mas não purgar) o pacote e depois reinstalá-lo, ele não ativará o serviço, mesmo se você remover o arquivo predefinido.) Consulte este comentário em deb-systemd-helper
' enable
operation :
# We use 'systemctl preset' on the initial installation only. # On upgrade, we manually add the missing symlinks only if the # service already has some links installed. Using 'systemctl # preset' allows administrators and downstreams to alter the # enable policy using systemd-native tools.
Para obter mais informações sobre o recurso systemd de predefinições, consulte a página do manual de predefinições do systemd e do comando systemctl preset
que implementa.