1 votes

start-stop-daemon : erreur de commande non trouvée dans Debian

Je suis un noob linux et je fais mes premiers pas sur debian. J'essaie d'exécuter un simple script Python en tant que service, et j'ai essayé d'exécuter ce code (copié sur le web) afin de le faire.

DIR=/usr/local/bin/myservice
DAEMON=$DIR/myservice.py
DAEMON_NAME=myservice

# Add any command line options for your daemon here
DAEMON_OPTS=""

# This next line determines what user the script runs as.
# Root generally not recommended but necessary if you are using the Raspberry Pi GPIO from Python.
DAEMON_USER=root

# The process ID of the script when it runs is stored here:
PIDFILE=/var/run/$DAEMON_NAME.pid

. /lib/lsb/init-functions

do_start () {
    log_daemon_msg "Starting system $DAEMON_NAME daemon"
    start-stop-daemon --start --background --pidfile $PIDFILE --make-pidfile --user $DAEMON_USER --chuid $DAEMON_USER --startas $DAEMON -- $DAEMON_OPTS
    log_end_msg $?
}
do_stop () {
    log_daemon_msg "Stopping system $DAEMON_NAME daemon"
    start-stop-daemon --stop --pidfile $PIDFILE --retry 10
    log_end_msg $?
}

case "$1" in

    start|stop)
        do_${1}
        ;;

    restart|reload|force-reload)
        do_stop
        do_start
        ;;

    status)
        status_of_proc "$DAEMON_NAME" "$DAEMON" && exit 0 || exit $?
        ;;

    *)
        echo "Usage: /etc/init.d/$DAEMON_NAME {start|stop|restart|status}"
        exit 1
        ;;

esac
exit 0

de toute façon quand j'essaie de lancer l'init script il dit :

bash: start-stop-daemon: command not found

J'ai donc essayé de le localiser en utilisant la commande which mais je n'ai eu aucun résultat. Il n'est pas non plus dans /usr/bin. Qu'est-ce qui me manque ? Je travaille sous Debian 10 (nouvelle installation sur une boîte virtuelle).

1voto

Someguy123 Points 370

J'ai rencontré ce problème lors de la création d'une image live Ubuntu en utilisant live-build .

Dans mon cas, start-stop-daemon avait ont été supprimés ou corrompus d'une manière ou d'une autre et cela ne signifie ni apt ni apt-get étaient utilisables.

Il s'avère également que dpkg ne joue pas gentiment quand il est absent.

Le programme provient de la dpkg qui est l'outil sous-jacent qui apt utilise pour installer .deb des fichiers. J'ai donc parcouru archive.ubuntu.com pour Ubuntu Focal et j'ai trouvé exactement la même version de dpkg qui était déjà installée, je pouvais donc l'installer sans aucun conflit de bibliothèque.

Les fichiers de paquets de Dpkg sont stockés ici sur le dépôt officiel d'Ubuntu : http://archive.ubuntu.com/ubuntu/pool/main/d/dpkg/

Vérifiez la version de votre dpkg existant en utilisant :

apt show dpkg

Ensuite, téléchargez le .deb pour dpkg, assurez-vous d'obtenir la même version et la même architecture (e.g. 1.9.7_amd64), ou si ce n'est pas disponible, une version très proche (e.g. 1.9.9).

wget http://archive.ubuntu.com/ubuntu/pool/main/d/dpkg/dpkg_1.19.7ubuntu3_amd64.deb

Desde dpkg dépend de start-stop-daemon pour s'installer, nous devons créer un binaire factice qui n'entrera pas en conflit. avec le nouveau qui sera installé. Le binaire factice retournera simplement 0 (succès), et rien de plus.

Mettez-le dans /usr/bin/ o /bin/ - mais PAS /sbin/ o /usr/sbin/ . L'exécutable réel sera installé à /sbin o /usr/sbin .

# We use the very simple program /bin/true as the shebang, so that
# start-stop-daemon simply returns 0 (success) when ran.
echo '#!/bin/true' > /usr/bin/start-stop-daemon
# Make the file executable
chmod +x /usr/bin/start-stop-daemon

Maintenant, nous devrions être en mesure de réinstaller dpkg qui devrait réinstaller start-stop-daemon :

dpkg -i dpkg_1.19.7ubuntu3_amd64.deb

En supposant qu'il s'installe avec succès, vous devez maintenant supprimer l'exécutable factice, pour éviter qu'il ne soit préféré au vrai :

rm -f /usr/bin/start-stop-daemon

Vous devriez maintenant être prêt à partir :)

NOTE : Si vous utilisez zsh alors vous devez vous assurer d'exécuter rehash maintenant, pour mettre à jour le cache des emplacements binaires.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X