J'ai une application Java - bien que la réponse ici devrait être la même, que ce soit en Java, Ruby, Python, etc. installez-le, il fonctionne automatiquement comme un démon, avec zéro config de leur côté. Mon inspiration pour cela vient du démon Docker , qui est écrit en Go mais qui se configure automatiquement comme un démon sur les machines Ubuntu. Je veux faire la même chose, mais je ne sais pas par où commencer.
Je voudrais imaginer que soit:
deb
; ouinit
/systemd
/upstart
/etc. Nécessaires. les scripts qui sont en quelque sorte installés localement sans que l'utilisateur final ait à les exécuter. Cependant, dans ce cas, je ne sais pas comment sélectionner les scripts à installer, car l’utilisateur peut utiliser un des nombreux outils de type init
-.Des idées?
Sur Ubuntu (et Debian), la création d'un paquetage deb
serait la meilleure solution, car tout peut être automatisé, de sorte qu'aucune intervention de l'utilisateur final n'est nécessaire. Les seuls cas dans lesquels l'installation ou les mises à niveau du package ne sont pas automatisées sont les cas où le package comporte certaines options de configuration nécessitant une intervention de l'utilisateur (principalement lors de l'installation uniquement) ou si un fichier de configuration a été modifié par l'utilisateur et est également modifié par une version plus récente de le paquet (lors de la mise à niveau). En outre, après l’installation/la mise à niveau d’un package, les scripts de démarrage qu’il installe sont automatiquement démarrés.
Vous pouvez installer plusieurs scripts init
et tout fonctionne encore. Dans le cas où systemd
est installé et utilisé sur l'ordinateur de l'utilisateur, s'il existe un script init
et un script systemd
pour le même service, le script init
est ignoré et le script systemd
est utilisé.
En ce qui concerne le packaging, Debian fournit des scripts d'assistance qui (entre autres choses) installent automatiquement tous les scripts de démarrage que vous fournissez (je ne pense pas que upstart
soit pris en charge par leurs scripts d'assistance, car il n'est utilisé que sur Ubuntu) et démarrez le service. Pour un exemple d’emballage, voir le dossier thisdebian
du paquet dump1090-mutability
. (Avertissement: ceci est mon compte Github) Notez que le fichier dump1090-mutability.init
contient le script init
tandis que le fichier dump1090-mutability.service
contient le script systemd
. Notez que les noms de ces fichiers doivent être package-name.init
et package-name.service
, où package-name
est le nom du package binaire en cours de création. (Voir man dh_systemd_enable
et man dh_systemd_start
pour le cas systemd.)
Lors du conditionnement, ces deux fichiers sont placés dans les répertoires appropriés du système de l'utilisateur, puis le service est démarré. Pour le fichier rules
, il est recommandé d'utiliser le système suivant pour vous permettre de bénéficier de l'automatisation (voir this pour la partie --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.
override_dh_auto_build
(où les fichiers source sont compilés et empaquetés dans un JAR) et override_dh_auto_install
(où le JAR est installé). .install
, supprimez la cible override_dh_auto_build
et remplissez override_dh_auto_install
.install
(pouvant être utilisée), supprimez les deux cibles.override_dh_auto_build
et remplissez override_dh_auto_install
.