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_build
e 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_build
e preenchaoverride_dh_auto_install
.