Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[Runscript] Mise au point (Résolu)
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index French
View previous topic :: View next topic  
Author Message
jaypeche
Apprentice
Apprentice


Joined: 13 Jun 2007
Posts: 171
Location: France

PostPosted: Fri Dec 02, 2011 5:58 pm    Post subject: [Runscript] Mise au point (Résolu) Reply with quote

Bonjour à tous,

Je cherche à créer un fichier runscript pour démarrer un service nommé "Openplacos", qui est en fait un serveur capable de gérer des cartes Arduino, Phidgets et autres.. Ceçi afin de réaliser un petit automate pour pas cher, ce logiciel est écrit en RUBY.

Le fichier d'origine et fonctionnel est le suivant :


Fichier original : /etc/init.d/openplacos

Code:
#!/bin/bash

case "$1" in
        start)
                echo "Starting OpenplacOS"
                export RUBYOPT="rubygems"
                su -l openplacos -s /bin/sh -c "/usr/bin/openplacos-server /etc/default/openplacos > /tmp/openplacos.log &"
    if [ $? -gt 0 ]; then
                    exit 1
                else
                    exit 0
                fi
        ;;
        stop)
                echo "Stopping OpenplacOS"
                pkill openplacos -u openplacos
                if [ $? -gt 0 ]; then
                    exit 1
                else
                    exit 0
                fi
   
        ;;
        restart)
                $0 stop
                sleep 1
                $0 start
        ;;
        *)
                echo "usage: $0 {start|stop|restart}"
esac
exit 0


Je souhaiterais me tourner vers un fichier runscript disons plus standard, pour une meilleure intégration Gentoo :

Fichier runscript à dévelloper : /etc/init.d/openplacos

Code:
#!/sbin/runscript
# Copyright 1999-2011 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $

USER=openplacos
CONFIG=/etc/conf.d/openplacos
LOGFILE=/tmp/openplacos.log
DAEMON=/usr/bin/openplacos-server

depend() {
        need dbus mysql
        after logger
}

start() {
        ebegin "Starting openplacos"
        start-stop-daemon --start --quiet \
        --user ${USER}:${USER} \
        --exec ${DAEMON} \
        --background \
        eend $? "Failed to start openplacos !"
}

#stop() {
#        ebegin "Stopping openplacos"
#        start-stop-daemon --stop --quiet \
#       --exec /usr/bin/openplacos-server
#        eend $? "Failed to stop openplacos !"
#}


Je me suis penché sur la documentation : http://www.gentoo.org/doc/fr/handbook/handbook-x86.xml?part=2&chap=4 , mais je n'arrive pas à lancer le serveur avec mon script. J'ai cette erreur :

Code:
dbox2 init.d # /etc/init.d/openplacos start
/etc/init.d/../conf.d/openplacos: line 1: objects: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 3: - : commande introuvable
/etc/init.d/../conf.d/openplacos: line 4: path: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 5: model: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 6: regul: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 7: action-: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 8: frequency: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 9: type: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 11: - : commande introuvable
/etc/init.d/../conf.d/openplacos: line 12: path: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 13: model: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 15: - : commande introuvable
/etc/init.d/../conf.d/openplacos: line 16: path: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 17: model: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 18: depends: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 19: temp: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 21: - : commande introuvable
/etc/init.d/../conf.d/openplacos: line 22: path: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 23: model: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 24: depends: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 25: temp: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 26: regul: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 27: action-: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 28: frequency: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 29: plugin_fill_sql_frequency: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 32: - : commande introuvable
/etc/init.d/../conf.d/openplacos: line 33: path: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 34: model: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 36: - : commande introuvable
/etc/init.d/../conf.d/openplacos: line 37: path: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 38: model: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 41: card: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 42: - : commande introuvable
/etc/init.d/../conf.d/openplacos: line 43: exec: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 44: config: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 45: timeout: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 46: plug: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 47: /Pin_1:: Aucun fichier ou dossier de ce type
/etc/init.d/../conf.d/openplacos: line 48: /Pin_2:: Aucun fichier ou dossier de ce type
/etc/init.d/../conf.d/openplacos: line 49: /Pin_3:: Aucun fichier ou dossier de ce type
/etc/init.d/../conf.d/openplacos: line 50: /Pin_4:: Aucun fichier ou dossier de ce type
/etc/init.d/../conf.d/openplacos: line 51: /Pin_5:: Aucun fichier ou dossier de ce type
/etc/init.d/../conf.d/openplacos: line 52: /Pin_6:: Aucun fichier ou dossier de ce type
/etc/init.d/../conf.d/openplacos: line 55: plugins: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 57: - : commande introuvable
/etc/init.d/../conf.d/openplacos: line 58: method: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 59: exec: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 61: - : commande introuvable
/etc/init.d/../conf.d/openplacos: line 62: method: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 63: exec: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 65: - : commande introuvable
/etc/init.d/../conf.d/openplacos: line 66: method: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 67: exec: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 69: - : commande introuvable
/etc/init.d/../conf.d/openplacos: line 70: method: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 71: exec: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 72: file: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 74: - : commande introuvable
/etc/init.d/../conf.d/openplacos: line 75: method: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 76: exec: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 77: port: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 79: - : commande introuvable
/etc/init.d/../conf.d/openplacos: line 80: method: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 81: exec: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 82: port: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 84: user: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 87: - : commande introuvable
/etc/init.d/../conf.d/openplacos: line 88: permissions: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 89: read: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 92: - : commande introuvable
/etc/init.d/../conf.d/openplacos: line 93: hash: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 94: permissions: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 95: read: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 96: write: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 97: exclude: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 100: - : commande introuvable
/etc/init.d/../conf.d/openplacos: line 101: hash: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 102: permissions: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 103: read: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 106: - : commande introuvable
/etc/init.d/../conf.d/openplacos: line 107: hash: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 108: permissions: : commande introuvable
/etc/init.d/../conf.d/openplacos: line 109: write: : commande introuvable
 * openplacos: error loading /etc/init.d/../conf.d/openplacos
 * ERROR: openplacos failed to start


Malgré mes recherches, je ne sais pas trop comment faire pour solutionner ce problème, il me semble et je peux me tromper que cela est du au fait que le serveur est un script RUBY, voiçi le code :

http://pastebin.com/zWuHyYrd

comment coder mon script pour réaliser la meme chose que le fichier original ?

:idea: Si quelqu'un peux m'apporter des précisions sur la manière de faire, ce serait vraiment sympa... Google ne m'aide pas bcp !!

Merçi
_________________
:-) Gentoo Linux Rullez !


Last edited by jaypeche on Sun Dec 04, 2011 2:22 pm; edited 1 time in total
Back to top
View user's profile Send private message
Leander256
l33t
l33t


Joined: 05 Jul 2003
Posts: 910
Location: Singapour

PostPosted: Sat Dec 03, 2011 7:42 am    Post subject: Reply with quote

Salut,

je pense que tu fais une confusion entre fichier de configuration pour le lancement du service et fichier de configuration du script lui-même. Il faudrait que tu nous montre le contenu de /etc/conf.d/openplacos mais je parie que tu as mis le fichier que openplacos lit pour démarrer.

Les fichiers placés dans /etc/conf.d/ servent à gérer les options des services. Typiquement ils permettent de passer des paramètres en ligne de commande lors du lancement d'un service. Il faut donc qu'ils respectent une syntaxe précise et surtout ils n'ont rien à voir avec le(s) fichier(s) de configuration que le service lui-même va utiliser.

Donc tu as deux solutions:
  • la plus simple consiste à déplacer ton /etc/conf.d/openplacos vers /etc/default/openplacos (je vois que c'est le fichier de conf lu par défaut par openplacos) et de laisser /etc/conf.d/openplacos vide
  • la plus compliquée consiste à déplacer ton /etc/conf.d/openplacos vers /etc/openplacos.conf (par exemple), de rajouter une ligne dans ton /etc/init.d/openplacos (NB: le -- est isolé, ce n'est pas une faute de frappe):
    Code:
    start-stop-daemon --start --quiet \
            --user ${USER}:${USER} \
            --exec ${DAEMON} \
            --background \
            -- $OPENPLACOS_OPTS
    et de créer un /etc/conf.d/openplacos qui contient:
    Code:
    OPENPLACOS_OPTS="--file /etc/openplacos.conf"



Après tu vas sûrement avoir un autre problème à cause d'un RUBYOPT non initialisé, mais là de suite je ne sais pas comment faire.
Back to top
View user's profile Send private message
jaypeche
Apprentice
Apprentice


Joined: 13 Jun 2007
Posts: 171
Location: France

PostPosted: Sun Dec 04, 2011 2:20 pm    Post subject: Reply with quote

Salut Leander256,

Quote:
je pense que tu fais une confusion entre fichier de configuration pour le lancement du service et fichier de configuration du script lui-même. Il faudrait que tu nous montre le contenu de /etc/conf.d/openplacos mais je parie que tu as mis le fichier que openplacos lit pour démarrer.

Les fichiers placés dans /etc/conf.d/ servent à gérer les options des services. Typiquement ils permettent de passer des paramètres en ligne de commande lors du lancement d'un service. Il faut donc qu'ils respectent une syntaxe précise et surtout ils n'ont rien à voir avec le(s) fichier(s) de configuration que le service lui-même va utiliser.


Tout à fait, je n'avais pas reflechi à cela, j'ai donc suivi tes recommandations et supprimer /etc/conf.d/openplacos qui n'était du fait pas utile..
J'ai ensuite modifier le runscript pour exporter la variable RUBYOPT, ça à l'air de tourner comme ça?§!

Fichier /etc/init.d/openplacos :

Code:
#!/sbin/runscript
# Copyright 1999-2011 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $

DESCRIPTION="This utility is used to create a low cost home automation system controlled by computer"
HOMEPAGE="http://openplacos.tuxfamily.org"

SVCNAME="openplacos-server"
USER=openplacos
DAEMON=$(which ${SVCNAME})
PIDFILE=/var/run/openplacos.pid
CONFIGFILE=/etc/default/openplacos
LOGFILE=/tmp/openplacos.log

depend() {
        need dbus mysql
        after logger
}

checkconfig() {
        if [ ! -r ${CONFIGFILE} ]; then
                eerror "ERROR: Unable to read configuration file: ${CONFIGFILE}"
                return 1
        fi
}

checkprocess() {
        if [ $(ps ax | grep ${SVCNAME} | grep -v grep | wc -l) -eq 0 ]; then
                eerror "ERROR: Please, check logfile: ${LOGFILE}"
                return 1
        fi
}

start() {
        checkconfig || return $?

        ebegin "Starting openplacos"
        export RUBYOPT="rubygems"
        start-stop-daemon --start --user ${USER} --exec ${DAEMON} \
        --pidfile ${PIDFILE} --make-pidfile --background --stdout ${LOGFILE}

        sleep 3
        checkprocess || return $?

        eend $? "Failed to start openplacos !"
}

stop() {
        ebegin "Stopping openplacos"
        start-stop-daemon --stop --quiet --user ${USER} --exec ${DAEMON} --pidfile ${PIDFILE}
        eend $? "Failed to stop openplacos !"
}


Code:
dbox2 openplacos # /etc/init.d/openplacos status
 * status: started
dbox2 openplacos # /etc/init.d/openplacos stop
 * Caching service dependencies ...                                                                                                   [ ok ]
 * Stopping openplacos ...                                                                                                            [ ok ]
dbox2 openplacos # /etc/init.d/openplacos start
 * Starting openplacos ...                                                                                                            [ ok ]
dbox2 openplacos # /etc/init.d/openplacos restart
 * Stopping openplacos ...                                                                                                            [ ok ]
 * Starting openplacos ...                                                                                                            [ ok ]
dbox2 openplacos #



Merçi pour ton aide précieuse ! (Résolu)
_________________
:-) Gentoo Linux Rullez !
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index French All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum