Eu perguntei para a lista de discussão e Lennart Poettering respondeu com o seguinte conselho:
Citando aqui a posteridade:
Portanto, a maneira correta de lidar com isso é garantir que os pacotes pergunta contém os scriplets certas que terminam todas as unidades que incluir antes da desinstalação. Claro, sempre vai estar quebrado pacotes como este eu temo, portanto, eu posso ver totalmente o seu usecase.
Atualmente, não há uma maneira legal de lidar com isso, mas o que você pode fazer é:
$ systemctl --all --type=not-found --type=error
Isso listará todas as unidades em que o estado de carregamento é "erro" ou "não encontrado" (note que "não encontrado" só está disponível em muito recente versões, e em versões mais antigas do systemd era apenas um caso especial de 'erro'. A linha de comando acima funciona para todas as versões). O --type = switch é usado para filtrar tipos de unidades, mas na verdade também pode ser usado para filtrar para o estado de carga.
Em seguida, filtre a primeira coluna:
$ systemctl --no-legend --all --type=not-found --type=error | awk '{ print $1 }'
Isso fornecerá uma lista de arquivos de unidade que foram referenciados ou iniciados mas não tem arquivo de unidade instalado. Então use isso para parar as unidades:
$ systemctl stop 'systemctl --no-legend -all --type=not-found --type=error | awk '{ print $1}''