Se você tiver controle sobre as dependências (ou seja, eles são o seu software), faça-os instalar um arquivo drop-in para o arquivo de unidade em questão. Ou seja, digamos que você tenha foo.service
, que precisa depender de bar.service || baz.service
.
Em seguida, o pacote bar
pode instalar um arquivo /usr/lib/systemd/system/foo.service.d/50-bar-baz.conf
com este conteúdo:
[Unit]
Requires=bar.service
Similarmente para baz
package.
Se você não tiver controle sobre as dependências, basta criar um script "dispatcher" que verifica a existência dos arquivos da unidade e, em seguida, faz um exec systemctl start
no arquivo de unidade escolhido. Em seguida, escreva uma unidade separada e solicite / após a unidade principal:
[Unit]
# inexistent unit names are ignored here
After=bar.service baz.service
[Service]
Type=oneshot
ExecStart=/path/to/dispatcher