On 17 July 2015 at 18:50, PICCA Frederic-Emmanuel <[email protected]> wrote: >> Great! > > will see if I can do something ;) > >> We need a bit more detail on what your init scripts currently do. Most >> of the time the conversion is fairly simple (ie, just invoke the >> program with the correct options). > > Let's do it slowly and start with tango-db > I put here a cut and past of the curren tinit script of tango-db > > ---8<----- > > PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/lib/tango > DESC="Tango Control System - database" > NAME=tango-db > NAME_REAL=DataBaseds > CONFFILE=/etc/tangorc > PORT=`grep TANGO_HOST $CONFFILE | awk -F ":" '{print $2}'` > HOST=`grep TANGO_HOST $CONFFILE | awk -F ":" '{print $1}' | awk -F "=" > '{print $2}'` > CANON_HOST=`grep TANGO_HOST $CONFFILE | awk -F ":" '{print $1}' | awk -F "=" > '{print $2}' | awk -F "." '{print $1}'` > DAEMON=/usr/lib/tango/$NAME_REAL > DAEMON_USER=tango > DAEMON_GROUP=tango > PIDFILE=/var/run/$NAME.pid > > # Exit if the package is not installed > [ -x "$DAEMON" ] || exit 0 > > # Read configuration variable file if it is present > [ -r /etc/default/$NAME ] && . /etc/default/$NAME > > # Load the VERBOSE setting and other rcS variables > . /lib/init/vars.sh > # Define LSB log_* functions. > # Depend on lsb-base (>= 3.0-6) to ensure that this file is present. > . /lib/lsb/init-functions > > # > # Function that starts the daemon/service > # > do_start() > { > # Return > # 0 if daemon has been started > # 1 if daemon was already running > # 2 if daemon could not be started > > # to start this daemon need a working network > if [ $CANON_HOST = "localhost" ] > then > DAEMON_ARGS="2 -ORBendPoint giop:tcp:$HOST:$PORT" > else > DAEMON_ARGS="2 -ORBendPoint giop:tcp::$PORT" > tango_admin --ping-network 40 || return 2 > fi > start-stop-daemon --start --quiet --chuid $DAEMON_USER:$DAEMON_GROUP > --background \ > --make-pidfile --pidfile $PIDFILE --exec $DAEMON --test > > /dev/null \ > || return 1 > start-stop-daemon --start --quiet --chuid $DAEMON_USER:$DAEMON_GROUP > --background \ > --make-pidfile --pidfile $PIDFILE --exec $DAEMON -- $DAEMON_ARGS \ > || return 2 > # Add code here, if necessary, that waits for the process to be ready > # to handle requests from services started subsequently which depend > # on this one. As a last resort, sleep for some time. > tango_admin --ping-database 6 || return 2 > } > > first I change the PATH to add /usr/lib/tango where the daemon executable can > be found
The executable is specified with a full path in systemd units so this should be unnecessary. > > as you can see there is some black magie in the do_start and a few constant > at the begining of the code > the daemon args depends on the nameof the host I think you will have to either have the user manually configure that or refactor this part into a script to be invoked via systemd. > tango_admin is a tool which allow to check that the network is up and ready > in order to start the daemon Doesn't the daemon handle temporary network downtime? If so, this should be unnecessary. If this is still required, you can add an Wants/After=network-online.target > then we start the daemon as a tango user instead of root. Use the User/Group directives to accomplish this. > > at the end the tango_admin is used to check that the daemonis up and running > tango_admin --ping-database 6 || return 2 (6 is for the number of retry) I think you can use ExecStartPost for this. > >> Also, what do you mean require a running mysql server? tango-db does >> not depend on mysql-server... > > you are right > > Package: tango-db > Source: tango > Version: 8.1.2c+dfsg-5 > Installed-Size: 810 > Maintainer: Debian Science Maintainers > <[email protected]> > Architecture: i386 > Depends: debconf (>= 0.5) | debconf-2.0, libc6 (>= 2.4), libcos4-1 (>= > 4.1.6), libgcc1 (>= 1:4.1.1), liblog4tango5, libmysqlclient18 (>= > 5.5.24+dfsg-1), libomniorb4-1 (>= 4.1.6), libomnithread3c2 (>= 4.0.6), > libstdc++6 (>= 4.4.0), libtango8, libzmq3 (>= 3.2.3+dfsg), zlib1g (>= > 1:1.1.4), dbconfig-common, libtango-tools, lsb-base > Recommends: mysql-client > > but I rely on dbconfig-common in order to setup the sql datatbase when > installing the package. (this is another story) > What is true is that the tango-db "daemon" can not start if it can not > connect to a running database. > Which can be on the same host or another one (different topologies of network) Use After/Wants=mysql.service then, because if the server is in another host you cannot Require it. Hope this helps -- Saludos, Felipe Sateler _______________________________________________ Pkg-systemd-maintainers mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-systemd-maintainers
