воскресенье, 6 мая 2012 г.

Deluge, торрент из консоли

Когда у меня возникла необходимость установить на сервер, который находится под управлением Ubuntu 9.04 «Jaunty Jackalope», BitTorent клиент, то я сразу подумал о rtorrent. Но пока я искал инструкцию по его настройке (точнее по настройке самого rtorrent, screen и web-интерфейса к rtorrent) я узнал о том что мой любимый Deluge (которым я пользовался раньше на компьютере с DE GNOME) может работать и в консольном режиме и в режиме с Web-интерфейсом. Меня это заинтересовало.В результате я раскопал официальный сайт Deluge и нашёл на нём инструкцию по установке Deluge на сервер. Всё намного проще, нежели в случае с rtorrent.
1. Для начала я бы порекомендовал обзавестись пакетами, которые понадобятся для работы:
1.sudo apt-get install g++ make python-all-dev python-all python-dbus python-gtk2 python-notify python-setuptools librsvg2-common python-xdg python-support subversion libboost-dev libboost-python-dev libboost-iostreams-dev libboost-thread-dev libboost-date-time-dev libboost-filesystem-dev libboost-serialization-dev libssl-dev zlib1g-dev
2. Теперь установим сам Deluge:
1.sudo apt-get install deluge-common deluge-console deluge-core deluge-torrent deluge-webui
3. Нужно создать для него демона, который будет его запускать. Для этого создадим файл /etc/default/deluge-daemon:
1.sudo nano /etc/default/deluge-daemon
Содержимое файла должно быть таким (ВНИМАНИЕ!!! Обязательно замените <username> на имя вашего пользователя в системе!):
1.# Configuration for /etc/init.d/deluge-daemon
2. 
3.# The init.d script will only run if this variable non-empty.
4.DELUGED_USER="<username>"             # !!!CHANGE THIS!!!!
5. 
6.# Should we run at startup?
7.RUN_AT_STARTUP="YES"
Для выхода из nano и сохранения файла используйте сочетание Ctrl+x + ответ на вопрос о необходимости сохранения файла.
4. Создадим исполняемый скрипт /etc/init.d/deluge-daemon:
1.sudo nano /etc/init.d/deluge-daemon
Его содержимое должно быть следующим:
001.#!/bin/sh
002.### BEGIN INIT INFO
003.# Provides:          deluge-daemon
004.# Required-Start:    $local_fs $remote_fs
005.# Required-Stop:     $local_fs $remote_fs
006.# Should-Start:      $network
007.# Should-Stop:       $network
008.# Default-Start:     2 3 4 5
009.# Default-Stop:      0 1 6
010.# Short-Description: Daemonized version of deluge and webui.
011.# Description:       Starts the deluge daemon with the user specified in
012.#                    /etc/default/deluge-daemon.
013.### END INIT INFO
014. 
015.# Author: Adolfo R. Brandes
016. 
017.PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
018.DESC="Deluge Daemon"
019.NAME1="deluged"
020.NAME2="deluge"
021.DAEMON1=/usr/bin/deluged
022.DAEMON1_ARGS="-d"
023.DAEMON2=/usr/bin/deluge
024.DAEMON2_ARGS="-u web"
025.PIDFILE1=/var/run/$NAME1.pid
026.PIDFILE2=/var/run/$NAME2.pid
027.PKGNAME=deluge-daemon
028.SCRIPTNAME=/etc/init.d/$PKGNAME
029. 
030.# Exit if the package is not installed
031.[ -x "$DAEMON1" -a -x "$DAEMON2" ] || exit 0
032. 
033.# Read configuration variable file if it is present
034.[ -r /etc/default/$PKGNAME ] && . /etc/default/$PKGNAME
035. 
036.# Load the VERBOSE setting and other rcS variables
037.[ -f /etc/default/rcS ] && . /etc/default/rcS
038. 
039.# Define LSB log_* functions.
040.# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
041.. /lib/lsb/init-functions
042. 
043.if [ -z "$RUN_AT_STARTUP" -o "$RUN_AT_STARTUP" != "YES" ]
044.then
045.log_warning_msg "Not starting $PKGNAME, edit /etc/default/$PKGNAME to start it."
046.exit 0
047.fi
048. 
049.if [ -z "$DELUGED_USER" ]
050.then
051.log_warning_msg "Not starting $PKGNAME, DELUGED_USER not set in /etc/default/$PKGNAME."
052.exit 0
053.fi
054. 
055.#
056.# Function that starts the daemon/service
057.#
058.do_start()
059.{
060.# Return
061.#   0 if daemon has been started
062.#   1 if daemon was already running
063.#   2 if daemon could not be started
064.start-stop-daemon --start --background --quiet --pidfile $PIDFILE1 --exec $DAEMON1 \
065.--chuid $DELUGED_USER --user $DELUGED_USER --test > /dev/null
066.RETVAL1="$?"
067.start-stop-daemon --start --background --quiet --pidfile $PIDFILE2 --exec $DAEMON2 \
068.--chuid $DELUGED_USER --user $DELUGED_USER --test > /dev/null
069.RETVAL2="$?"
070.[ "$RETVAL1" = "0" -a "$RETVAL2" = "0" ] || return 1
071. 
072.start-stop-daemon --start --background --quiet --pidfile $PIDFILE1 --make-pidfile --exec $DAEMON1 \
073.--chuid $DELUGED_USER --user $DELUGED_USER -- $DAEMON1_ARGS
074.RETVAL1="$?"
075.sleep 2
076.start-stop-daemon --start --background --quiet --pidfile $PIDFILE2 --make-pidfile --exec $DAEMON2 \
077.--chuid $DELUGED_USER --user $DELUGED_USER -- $DAEMON2_ARGS
078.RETVAL2="$?"
079.[ "$RETVAL1" = "0" -a "$RETVAL2" = "0" ] || return 2
080.}
081. 
082.#
083.# Function that stops the daemon/service
084.#
085.do_stop()
086.{
087.# Return
088.#   0 if daemon has been stopped
089.#   1 if daemon was already stopped
090.#   2 if daemon could not be stopped
091.#   other if a failure occurred
092. 
093.start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --user $DELUGED_USER --pidfile $PIDFILE2
094.RETVAL2="$?"
095.start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --user $DELUGED_USER --pidfile $PIDFILE1
096.RETVAL1="$?"
097.[ "$RETVAL1" = "2" -o "$RETVAL2" = "2" ] && return 2
098. 
099.rm -f $PIDFILE1 $PIDFILE2
100. 
101.[ "$RETVAL1" = "0" -a "$RETVAL2" = "0" ] && return 0 || return 1
102.}
103. 
104.case "$1" in
105.start)
106.[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME1"
107.do_start
108.case "$?" in
109.0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
110.2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
111.esac
112.;;
113.stop)
114.[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME1"
115.do_stop
116.case "$?" in
117.0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
118.2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
119.esac
120.;;
121.restart|force-reload)
122.log_daemon_msg "Restarting $DESC" "$NAME1"
123.do_stop
124.case "$?" in
125.0|1)
126.do_start
127.case "$?" in
128.0) log_end_msg 0 ;;
129.1) log_end_msg 1 ;; # Old process is still running
130.*) log_end_msg 1 ;; # Failed to start
131.esac
132.;;
133.*)
134.# Failed to stop
135.log_end_msg 1
136.;;
137.esac
138.;;
139.*)
140.echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
141.exit 3
142.;;
143.esac
144. 
145.:
5. Разрешим пользователю root исполнять этот скрипт:
1.sudo chmod 755 /etc/init.d/deluge-daemon
6. Добавим выполнение этого скрипта при старте системы:
1.sudo update-rc.d deluge-daemon defaults
7. Теперь осталось либо запустить скрипт
1.sudo /etc/init.d/deluge-daemon start
либо перезапустить сервер
1.sudo shutdown -r now
Всё, программой можно пользоваться обратившись к серверу через браузер на порт 8112. К примеру, http://198.162.1.25:8112. Пароль по-умолчанию «deluge».
Web-интерфейс системы очень удобный и продуманный. За сутки работы с ним ошибок и недочётов не обнаружено. Выглядит он вот так:
WEB-user interface Deluge
WEB-user interface Deluge
На мой взгляд установка Deluge в разы проще и понятнее, нежели установка rtorrent. А так как для моих задач Deluge хватает выше крыши, то я остановился именно на нём.
P.S.
Если коды скриптов не сработали, то попробуйте взять их с официального сайта с документацией, вдруг при копирование какие-нибудь символы на что-нибудь заменились.
Обновление от 20 июля 2009 05:00
Я советую устанавливать deluge не из репозитория Ubuntu, а собирать из SVN разработчиков. Так как версия из SVN стабильнее и у меня намного реже вылетает с ошибкой Segmentation fault (segfault), нежели версия из репозитория.
Установка не многим сложнее. Ниже приведу процесс удаления версии установленной из репозитория и установки версии из SVN
1. Удалим имеющийся deluge
1.sudo apt-get remove deluge
2. Удаляем конфигурационные файлы deluge, предварительно сделав копию (на всякий случай, так как в папке ~/.config/deluge/state находится список торентов которые были в deluge до его удаления)
1.cp ~/.config/deluge ~/.config/deluge-backup
2.rm -rf ~/.config/deluge
3. Устанавливаем последний стабильный deluge из SVN
2.cd deluge
3.sudo rm  -fr /usr/lib/python2.5/site-packages/deluge-1.1*
4.python setup.py build
5.sudo python setup.py install

Комментариев нет:

Отправить комментарий