\   /\          __    _____        _____     _____ _ _____
)  ( ')        |  |  |  _  |   ___|  _  |___|  |  |_|_   _|___
(  /  )        |  |__|     |  |  _|     |_ -|     | | | | | .'| 
 \(__)|        |_____|__|__|  |___|__|__|___|__|__|_| |_| |__,|

 
 Calibre es un software para administrar nuestros ebooks.
Nos permite editar los metadatos u obtenerlos por internet.
Tambien gracias a Calibre podemos montar nuestro propio servidor de libros, que podra ser accesible via web, y
nos permitira buscar por autor, genero, titulo etc... y descargarnos el libro o compartir el libro a traves de nuestra biblioteca online.

Empezaremos por instalar las dependencias:

apt-get install xdg-utils imagemagick python-imaging python-mechanize python-lxml python-dateutil python-cssutils python-beautifulsoup python-dnspython python-poppler libpodofo-utils libwmf-bin python-chm
Una vez instaladas las dependencias, ejecutaremos el siguiente comando que nos instalara la ultima version de Calibre.
python -c "import urllib2; exec urllib2.urlopen('http://status.calibre-ebook.com/linux_installer').read(); main()"
Ahora crearemos el siguiente script, que nos permitira lanzar Calibre como un servicio. Para ello creamos el siguiente fichero.
touch /etc/init.d/calibre
Editamos el fichero.
nano /etc/init.d/calibre
Agregamos el siguiente contenido a /etc/init.d/calibre (el fichero recien creado).
	#! /bin/sh
	### BEGIN INIT INFO
	# Provides: calibre
	# Required-Start: networking
	# 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
	# Original author: Alexandrdos Schillings
	# Modifications: K-Light
	#
	# UPDATES:
	# - Added USERNAME and PASSWORD to DAEMON_ARGS
	# - In version 0.7.27+ of calibre, the "auto reload" command has been unbundled from "--develop"
	#
	# Modifications: Marco Antonio Blanco (04/2012)
	#
	# UPDATES:
	# - Changed "network" for "networking" in Required-Start field so it installs in Debian
	#
	# 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.
	# Edit the USERNAME variable below to your desired username
	# Edit the PASSWORD variable below to your desired password
	CONTENT=/home/chuck/mislibros
	PORT=8080 #Puerto para acceder desde el navegador
	MAX_COVER=300x400
	USERNAME=libros #Usuario
	PASSWORD=12345678 #password

	DAEMON_ARGS="--auto-reload --with-library=$CONTENT --pidfile=$PIDFILE --port=$PORT --max-cover=$MAX_COVER --username=$USERNAME --password=$PASSWORD --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|status|restart}" >&2
		exit 3
	;;
	esac
	:
En el script deberemos cambiar las siguientes variables:
CONTENT=/home/chuck/mislibros #carpeta donde tenemos nuestra biblioteca
PORT=8080 #Puerto para acceder desde el navegador
USERNAME=libros #Usuario
PASSWORD=12345678 #password
Para terminar ejecutamos los siguientes comandos
cd /etc/init.d/
chown root.root calibre
chmod 755 calibre
insserv calibre
update-rc.d calibre defaults
Una vez finalizados los pasos anteriores, para arrancar Calibre ejecutaremos:
/etc/init.d/calibre start
Podremos acceder a nuestra biblioteca a traves del navegador usando la siguiente url: http://servidor:8080 Para detener el servicio usaremos:
/etc/init.d/calibre stop