No Ubuntu (e Debian), criar um pacote deb seria o melhor caminho a ser seguido, já que tudo pode ser automatizado, para que nenhuma intervenção do usuário final seja necessária. Os únicos casos em que a instalação ou upgrades de pacotes não são automatizados são se o pacote tiver algumas opções de configuração que precisem de entrada do usuário (principalmente durante a instalação apenas) ou se um arquivo de configuração foi modificado pelo usuário e também modificado por uma versão mais nova o pacote (durante a atualização). Além disso, depois de instalar / atualizar um pacote, todos os scripts de inicialização que ele instala são iniciados automaticamente.
Você pode ter vários scripts init instalados e ter tudo ainda funcionando. No caso de systemd sendo instalado e usado no computador do usuário, se houver um script init e um systemd para o mesmo serviço, o script init será ignorado e o script systemd é usado.
Em termos de empacotamento em si, o Debian fornece scripts auxiliares que (entre outras coisas) instalam automaticamente quaisquer scripts de inicialização que você forneça (eu não acho que upstart é suportado por seus scripts auxiliares, pois isso é usado apenas no Ubuntu ) e inicie o serviço. Para um exemplo da embalagem, veja esta debian pasta para o pacote dump1090-mutability . (Aviso: esta é minha conta do Github) Observe que o arquivo dump1090-mutability.init contém o script init , enquanto o arquivo dump1090-mutability.service contém o script systemd . Observe que os nomes desses arquivos devem ser package-name.init e package-name.service , em que package-name é o nome do pacote binário sendo criado. (Veja man dh_systemd_enable e man dh_systemd_start para o caso do systemd.)
No empacotamento, esses dois arquivos são colocados nos diretórios apropriados no sistema do usuário e o serviço é iniciado. Para o arquivo rules , eu recomendo que você tenha algo como o seguinte, para que você se beneficie da automação (consulte isto para a parte --with systemd ):
#!/usr/bin/make -f
%:
dh $@ --with systemd
override_dh_auto_build:
# Specify how to build the Java files here, if there is no Makefile provided
override_dh_auto_install:
# Specify how to install the Java files here, if there is no 'install' target in the Makefile. Don't worry about anything in the 'debian' directory unless you need to install some icons.
- Se seu aplicativo não tiver um Makefile e for apenas uma coleção de arquivos de origem Java, preencha
override_dh_auto_build(onde os arquivos de origem são compilados e empacotados em um JAR) eoverride_dh_auto_install(onde o JAR está instalado ). - Se seu aplicativo tiver um Makefile, mas não tiver uma meta
install, remova a metaoverride_dh_auto_builde preenchaoverride_dh_auto_install. - Se seu aplicativo tiver um Makefile e ele tiver uma meta
install(que pode ser usada), remova os dois destinos. - Se o seu aplicativo for apenas um arquivo JAR, remova
override_dh_auto_builde preenchaoverride_dh_auto_install.