Saturday 6 November 2010

Autostart script changes for Calibre 0.7.27

In version 0.7.27 of calibre, the "auto reload" command has been unbundled from "--develop". As a result, the script in the previous post has to be updated. Only the script changes, the rest of the procedure is the same.

The "DEMON_ARGS" line changes from
  DAEMON_ARGS="--develop --with-library=$CONTENT --pidfile=$PIDFILE --port=$PORT --max-cover=$MAX_COVER --daemonize"   
to
 DAEMON_ARGS="--auto-reload --with-library=$CONTENT --pidfile=$PIDFILE --port=$PORT --max-cover=$MAX_COVER --daemonize" 

The full updated script can be found after the break:

 #! /bin/sh 
 ### BEGIN INIT INFO 
 # Provides: calibre 
 # Required-Start: network 
 # Required-Stop: 
 # Default-Start: 2 3 4 5 
 # Default-Stop: 0 1 6 
 # Short-Description: Controls the Calibre content server 
 # Description: Controls the Calibre content web server 
 # 
 ### END INIT INFO 
 # Author: Alexandrdos Schillings 
 # 
 # Please remove the "Author" lines above and replace them 
 # with your own name if you copy and modify this script. 
 # Do NOT "set -e" 
 # PATH should only include /usr/* if it runs after the mountnfs.sh script 
 # 
 # 
 PATH=/sbin:/usr/sbin:/bin:/usr/bin 
 DESC="Calibre Content Server" 
 NAME=calibre-server 
 DAEMON=/usr/bin/$NAME 
 PIDFILE=/var/run/$NAME.pid 
 # Edit the CONTENT variable below to point it to your library directory. 
 # Edit the PORT variable below to change the port the server will run on. 
 # Edit the MAX_COVER variable below to change the maximum size of a book cover image. 
 CONTENT=/home/alex/Documents/Calibre 
 PORT=8080 
 MAX_COVER=600x800 
 # The --auto-reload flag refreshes the server on a database change. 
DAEMON_ARGS="--auto-reload --with-library=$CONTENT --pidfile=$PIDFILE --port=$PORT --max-cover=$MAX_COVER --daemonize"
 SCRIPTNAME=/etc/init.d/$NAME 
 # 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 
 start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null || return 1 
 start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- $DAEMON_ARGS || 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 --pidfile $PIDFILE 
 RETVAL="$?" 
 [ "$RETVAL" = 2 ] && return 2 
 # Wait for children to finish too if this is a daemon that forks 
 # and if the daemon is only ever run from this initscript. 
 # If the above conditions are not satisfied then add some other code 
 # that waits for the process to drop all resources that could be 
 # needed by services started subsequently. A last resort is to 
 # sleep for some time. 
 start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON 
 [ "$?" = 2 ] && return 2 
 # Many daemons don't delete their pidfiles when they exit. 
 rm -f $PIDFILE 
 return "$RETVAL" 
 } 
 # 
 # Function that sends a SIGHUP to the daemon/service 
 # 
 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) 
 # 
 # If the "reload" option is implemented then remove the 
 # 'force-reload' alias 
 # 
 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|restart|reload|force-reload}" >&2 
 echo "Usage: $SCRIPTNAME {start|stop|status|restart}" >&2 
 exit 3 
 ;; 
 esac 
 : 

3 comments:

  1. I tried these steps, and the server starts on Ubuntu 10.10 but I am unable to access it at any port. I tried http://:8080/ as well as http://:8787/.

    When I look at netstat, there's nothing running on the port I specify in the startup script.

    ReplyDelete
  2. Hi! Sorry, I was away.

    What output does the script give you if you run it manually? Just open a terminal and execute it.

    ReplyDelete
  3. I'm using this script in Mint 11 to try to get my calibre server up and running. But when I reach the step where I "update-rc.d calibre defaults", I get the following error messages:

    update-rc.d: warning: /etc/init.d/calibre missing LSB information
    update-rc.d: see
    Adding system startup for /etc/init.d/calibre ...
    /etc/rc0.d/K20calibre -> ../init.d/calibre
    update-rc.d: symlink: Permission denied

    I'm still pretty new to linux so any suggestions on getting this to work would be greatly appreciated. Thanks!

    ReplyDelete