2

Deluge have no init scripts in raspberry pi repository?

root@rpi ~# service deluged start
deluged: unrecognized service
root@rpi ~# service deluge-web
deluge-web: unrecognized service

But deluged and deluge-web are installed :(,

SlySven
  • 3,621
  • 1
  • 18
  • 45
Someone1234
  • 121
  • 1
  • 3

3 Answers3

3

deluged init script

Instructions

  • sudo wget https://gist.github.com/earthmeLon/a4bf68d385f8f840d2b5/raw/ -O /etc/init.d/deluged
    • This downloads the script and places it in the correct directory
  • sudo chmod +x /etc/init.d/deluged
    • This allows execution of the new file, which is essential for it to be run at startup
  • sudo update-rc.d deluged defaults
    • This loads the default init settings for deluged
  • sudo update-rc.d deluged enable
    • This turns on the loaded settings for deluged so that it will be loaded at boot

CLI/Old Script

#!/bin/sh
### BEGIN INIT INFO
# Provides:          deluged
# Required-Start:    $local_fs $remote_fs
# Required-Stop:     $local_fs $remote_fs
# Should-Start:      $network
# Should-Stop:       $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start or stop the Deluge BitTorrent daemon.
# Description:       Start or stop the Deluge BitTorrent daemon.
### END INIT INFO

Authors: Tanguy Ortolo <tanguy+debian@ortolo.eu>,

Cristian Greco <cristian@regolo.cc>

PATH=/sbin:/usr/sbin:/bin:/usr/bin DESC="Deluge BitTorrent Daemon" NAME="deluged" DAEMON=/usr/bin/$NAME DAEMON_ARGS="-d -c /var/lib/deluged/config -l /var/log/deluged/daemon.log -L info" USER=debian-deluged MASK=0027 PIDFILE=/var/run/$NAME.pid SCRIPTNAME=/etc/init.d/$NAME

Exit if the package is not installed

[ -x "$DAEMON" ] || exit 0

ENABLE_DELUGED=1

Read configuration variable file if it is present

[ -r /etc/default/$NAME ] && . /etc/default/$NAME

Load the VERBOSE setting and other rcS variables

[ -f /etc/default/rcS ] && . /etc/default/rcS

Define LSB log_* functions.

Depend on lsb-base (>= 3.0-6) to ensure that this file is present

and status_of_proc is working.

. /lib/lsb/init-functions

Function that starts the daemon/service

do_start() { if [ $ENABLE_DELUGED != 1 ]; then log_progress_msg "Not starting ${DESC} ${NAME}, disabled in /etc/default/${NAME}" else # Return # 0 if daemon has been started # 1 if daemon was already running # 2 if daemon could not be started start-stop-daemon --start --background --quiet --pidfile $PIDFILE --exec $DAEMON
--chuid $USER --umask $MASK --test > /dev/null
|| return 1

start-stop-daemon --start --background --quiet --pidfile $PIDFILE --make-pidfile --exec $DAEMON \
  --chuid $USER --umask $MASK -- $DAEMON_ARGS \
  || return 2

fi }

Function that stops the daemon/service

do_stop() {

Return

0 if daemon has been stopped

1 if daemon was already stopped

2 if daemon could not be stopped

other if a failure occurred

start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE RETVAL="$?" [ "$RETVAL" = "2" ] && return 2

rm -f $PIDFILE return "$RETVAL" }

case "$1" in start) [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME" do_start case "$?" in 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; esac ;; stop) [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME" do_stop case "$?" in 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; esac ;; status) status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $? ;; restart|force-reload) log_daemon_msg "Restarting $DESC" "$NAME" do_stop case "$?" in 0|1) do_start case "$?" in 0) log_end_msg 0 ;; 1) log_end_msg 1 ;; # Old process is still running ) log_end_msg 1 ;; # Failed to start esac ;; ) # Failed to stop log_end_msg 1 ;; esac ;; *) echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2 exit 3 ;; esac

:

Notes

It has been brought to my attention via comments of this answer that this init script does not work with deluge's webui. Please look at the documentation at deluge's website for further information. The following is their script:

WebUI/New Script

#!/bin/sh
### BEGIN INIT INFO
# Provides:          deluge-daemon
# Required-Start:    $local_fs $remote_fs
# Required-Stop:     $local_fs $remote_fs
# Should-Start:      $network
# Should-Stop:       $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Daemonized version of deluge and webui.
# Description:       Starts the deluge daemon with the user specified in
#                    /etc/default/deluge-daemon.
### END INIT INFO

Author: Adolfo R. Brandes

Updated by: Jean-Philippe "Orax" Roemer

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin DESC="Deluge Daemon" NAME1="deluged" NAME2="deluge" DAEMON1=/usr/bin/deluged DAEMON1_ARGS="-d" # Consult man deluged for more options DAEMON2=/usr/bin/deluge-web DAEMON2_ARGS="" # Consult man deluge-web for more options PIDFILE1=/var/run/$NAME1.pid PIDFILE2=/var/run/$NAME2.pid UMASK=022 # Change this to 0 if running deluged as its own user PKGNAME=deluge-daemon SCRIPTNAME=/etc/init.d/$PKGNAME

Exit if the package is not installed

[ -x "$DAEMON1" -a -x "$DAEMON2" ] || exit 0

Read configuration variable file if it is present

[ -r /etc/default/$PKGNAME ] && . /etc/default/$PKGNAME

Load the VERBOSE setting and other rcS variables

[ -f /etc/default/rcS ] && . /etc/default/rcS

Define LSB log_* functions.

Depend on lsb-base (>= 3.0-6) to ensure that this file is present.

. /lib/lsb/init-functions

if [ -z "$RUN_AT_STARTUP" -o "$RUN_AT_STARTUP" != "YES" ] then log_warning_msg "Not starting $PKGNAME, edit /etc/default/$PKGNAME to start it." exit 0 fi

if [ -z "$DELUGED_USER" ] then log_warning_msg "Not starting $PKGNAME, DELUGED_USER not set in /etc/default/$PKGNAME." exit 0 fi

Function to verify if a pid is alive

is_alive() { pid=cat $1 > /dev/null 2>&1 kill -0 $pid > /dev/null 2>&1 return $? }

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

is_alive $PIDFILE1 RETVAL1="$?"

if [ $RETVAL1 != 0 ]; then rm -f $PIDFILE1 start-stop-daemon --start --background --quiet --pidfile $PIDFILE1 --make-pidfile
--exec $DAEMON1 --chuid $DELUGED_USER --user $DELUGED_USER --umask $UMASK -- $DAEMON1_ARGS RETVAL1="$?" else is_alive $PIDFILE2 RETVAL2="$?" [ "$RETVAL2" = "0" -a "$RETVAL1" = "0" ] && return 1 fi

is_alive $PIDFILE2 RETVAL2="$?"

if [ $RETVAL2 != 0 ]; then sleep 2 rm -f $PIDFILE2 start-stop-daemon --start --background --quiet --pidfile $PIDFILE2 --make-pidfile
--exec $DAEMON2 --chuid $DELUGED_USER --user $DELUGED_USER --umask $UMASK -- $DAEMON2_ARGS RETVAL2="$?" fi [ "$RETVAL1" = "0" -a "$RETVAL2" = "0" ] || return 2 }

Function that stops the daemon/service

do_stop() {

Return

0 if daemon has been stopped

1 if daemon was already stopped

2 if daemon could not be stopped

other if a failure occurred

start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --user $DELUGED_USER --pidfile $PIDFILE2 RETVAL2="$?" start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --user $DELUGED_USER --pidfile $PIDFILE1 RETVAL1="$?" [ "$RETVAL1" = "2" -o "$RETVAL2" = "2" ] && return 2

rm -f $PIDFILE1 $PIDFILE2

[ "$RETVAL1" = "0" -a "$RETVAL2" = "0" ] && return 0 || return 1 }

case "$1" in start) [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME1" do_start case "$?" in 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; esac ;; stop) [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME1" do_stop case "$?" in 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; esac ;; restart|force-reload) log_daemon_msg "Restarting $DESC" "$NAME1" do_stop case "$?" in 0|1) do_start case "$?" in 0) log_end_msg 0 ;; 1) log_end_msg 1 ;; # Old process is still running ) log_end_msg 1 ;; # Failed to start esac ;; ) # Failed to stop log_end_msg 1 ;; esac ;; *) echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2 exit 3 ;; esac

:

earthmeLon
  • 1,404
  • 1
  • 11
  • 23
  • How-to quality is okay, explanation...not so much. Could you edit your answer to include a little more explanation please? Thanks. – RPiAwesomeness Mar 23 '14 at 17:14
  • 1
    I've explained the commands. Explaining the entire script is a bit out of the scope of the question, imo, as it is complex and involves RTM. – earthmeLon Apr 21 '14 at 14:55
  • 1
    The script pasted in this answer does not handle web-ui daemon launch as asked by the OP. This script should be used instead. – Avio Jun 03 '14 at 21:15
2

Nope, deluge does not have init scripts in current debian, as well as in ubuntu and a bunch of other Linuxes. They have guides on creating such scripts though: http://dev.deluge-torrent.org/wiki/UserGuide/InitScript (and one especially for debian&ubuntu). It should not be that hard, but I switched to transmission because of this extra work.

Osman-pasha
  • 418
  • 4
  • 7
0

That seems to be an (old) outstanding issue: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=541138

You might try the version from Debian Expirimental, see:

http://wiki.debian.org/DebianExperimental and http://packages.debian.org/search?suite=experimental&searchon=names&keywords=deluged

AVee
  • 101
  • 2
    You happen to have triggered one of my pet peeves - the notorious link answer. Please do NOT give link answers as they are bad for several reasons: #1 They are subject to becoming invalid. #2 They are not helpful to the OP - Stack Exchange is a site for answers, not a way to find out where to get them. Please remember this for future reference. – xxmbabanexx Apr 23 '13 at 02:19
  • agree with @xxmbabanexx , if you are going to post a link, please explain the content of the link, this will provide help should the link become outdated. – kolin Apr 23 '13 at 07:36
  • It's very unlikely these links will be invalid before this question itself becomes invalid. Should I have answered 'yes, deluged doesn't have init scripts' instead? Or 'go check the relevant Debian packages an find the answer yourself'? – AVee Apr 23 '13 at 10:12