web-dev-qa-db-fra.com

Insserv manquant sur Ubuntu 18

Certains de mes scripts d'installation utilisent insserv, ce qui fonctionnait bien pour Ubuntu 16. Désormais, sous Ubuntu 18, l'insserv binaire est manquant, même si le paquet lui-même (bien que très équilibré) existe déjà.

Est-ce un changement difficile vers le système systemd init? Étrange que je n'ai trouvé aucune annonce concernant la non disponibilité d'Inserv sur Ubuntu 18.

3
Felix B

Il n'est pas trop difficile d'utiliser des scripts d'initialisation hérités avec systemd. Voici un exemple. Étant donné le script SysV init suivant dans /etc/init.d/mylittledaemon:

#!/bin/bash

### BEGIN INIT INFO
# Provides: littledaemon
# Required-Start: $remote_fs
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 1
# Description: My little daemon
### END INIT INFO

case "$1" in
    start)
        (sleep 5000) </dev/null >/dev/null 2>&1 &
        ;;
    stop)
        pkill -f "sleep 5000"
        ;;
esac

vous pouvez l'activer en utilisant systemd comme ceci:

$ Sudo chmod +x /etc/init.d/mylittledaemon
$ Sudo systemctl enable mylittledaemon
mylittledaemon.service is not a native service, redirecting to systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable mylittledaemon

et ensuite le démarrer en utilisant

$ Sudo systemctl start mylittledaemon

Cela examinera les commentaires d’informations LSB et appellera le update-rc.d, comme l’a fait Insserv. Il générera également une unité de service systemd transitoire utilisant systemd-sysv-generator.

Voir aussi: http://manpages.ubuntu.com/manpages/bionic/man8/systemd-sysv-generator.8.html

La meilleure approche à long terme serait de convertir vos scripts d’initialisation en unités de service Systemd. Il existe de nombreux tutoriels sur le net, par exemple celui-ci: http://0pointer.de/blog/projects/systemd-for-admins-3.html

2
Sebastian Stark