Eu tenho um problema ao tentar construir um pacote que depende de vários outros pacotes, alguns dos quais incluem um serviço. O referido serviço tenta iniciar no script postinst e, como resultado, falha na compilação porque, dentro do ambiente de compilação, systemd
não está instalado.
Eu gostaria de ver alguns pacotes oficiais que têm um problema semelhante. Neste ponto, não preciso que o serviço da dependência esteja rodando, mas o script postinst ainda precisa funcionar (obviamente?!) e neste caso, ele tenta iniciar o serviço manualmente porque o nome não bate com o nome do pacote (além disso, na verdade existem 2 serviços nesse pacote, mas estou divagando).
Meu script como está tenta fazer:
systemctl enable ipload
systemctl start ipload
que funciona muito bem ao instalar o pacote em qualquer sistema Ubuntu, mas falha na compilação do sistema que depende de seu -dev
pacote.
Minha pergunta é:
Quais são os pacotes Debian oficiais existentes que têm um problema semelhante: dependem de outros pacotes que normalmente iniciam um serviço e são necessários em uma compilação?
Dessa forma, posso fazer meu próprio pacote funcionar de maneira semelhante.
Você deve usar
dh_installsystemd
em sua construção de pacote para configurar seus serviços; isso irá gerar snippets adequadamente robustos em seus scripts de manutenção. Veja por exemplog810-led
'sdebian/rules
; isso mostra como lidar com unidades que não correspondem ao nome do pacote:(Você não deve usar
--no-stop-on-upgrade
ou--no-start
.)O resultante
postinst
contémIsso usa
deb-systemd-helper
o que lida com a instalação com ou semsystemd
.Você também verá um correspondente
prerm
epostrm
.No entanto, é incomum (mas não inédito) que um
-dev
pacote acabe dependendo dos serviços de remessa de pacotes; você pode querer dividir as coisas ainda mais (por exemplo, um-dev
pacote, um pacote de biblioteca e um pacote contendo os serviços).