rtorrent на FreeBSD

Итак, небольшая записка про попытки установить rtorrent.

Основано на этом и собственном опыте вполне удачных попыток поставить его же на роутер (тогда хард убился, но память осталась).

UPD. Спасибо, что зашли в эту статью. Оставьте какой-нибудь комментарий, мне будет приятно:)

Начнем.

0) Сначала обновляем порты (кто как, а я до вчерашнего дня обновлял c cvsup, но понял, что есть лучшее средство):

portsnap fetch update

1) Как ни странно в портах devel версия 0.8.2. Но пробуем ее поставить:

cd /usr/ports/net-p2p/rtorrent-devel && make config && make install clean

Опция одна, ее и выбираем (XMLRPC).
2) Создаем юзера p2p (это как в роутере было, так я и тут пытался делать — работало же) через sysinstall (потому-что я нуб) либо через adduser. Домашняя директория /home/p2p, а оболочка /bin/sh
3) Подготавливаем папки:

mkdir /var/torrent
mkdir /var/torrent/dl
mkdir /var/torrent/work
mkdir /var/torrent/session
chown p2p /home/p2p
chown p2p /var/torrent/dl
chown p2p /var/torrent/work
chown p2p /var/torrent/session

4) Правим конфиг:

cp /usr/local/share/examples/rtorrent-devel/rtorrent.rc /home/p2p/.rtorrent.rc
nano /home/p2p/.rtorrent.rc

Конфиг должен быть примерно такой (остальные строки закоментены):

min_peers = 1
max_peers = 100
min_peers_seed = 1
max_peers_seed = 50
download_rate = 1024
upload_rate = 1024
directory = /var/torrent/work
session = /var/torrent/session
schedule = watch_directory,5,5,load_start=/var/torrent/dl/*.torrent
schedule = untied_directory,5,5,stop_untied=
schedule = low_diskspace,5,60,close_low_diskspace=1000M
port_range = 6890-6999
port_random = no
use_udp_trackers = no
encryption = allow_incoming,enable_retry,prefer_plaintext
dht = auto
dht_port = 6881
peer_exchange = yes
#Эту строки мы должны добавить
scgi_port = localhost:5000
safe_sync = yes
encoding_list = UTF-8

5) Устанавливаем mod_scgi и настраиваем апач:

cd /usr/ports/www/mod_scgi && make install clean
nano /usr/local/etc/apache22/httpd.conf

Там добавляем такие строки:

LoadModule scgi_module          libexec/apache22/mod_scgi.so
SCGIMount "/RPC2" 127.0.0.1:5000

Ну и я думаю рестартануть апач стоит...

/usr/local/etc/rc.d/apache22 restart

6) Ставим screen:

cd /usr/ports/sysutils/screen && make install clean

Тут хз какие опции, оставил все как есть.
7) Дальше создаем скрипт запуска:

nano /usr/local/etc/rc.d/rtorrent

Содержание такое:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#!/bin/sh
#
# rtorrent RCng startup script
# by Emanuele Cipolla (mail at emanuelecipolla dot net)
# Shamelessly ripped off the aMule startup script by Gabriele Cecchetti (amule.org forum)
# 
 
# PROVIDE: rtorrent
# REQUIRE: NETWORKING SERVERS
# BEFORE: DAEMON
# KEYWORD: shutdown
 
#
# Add the following lines to /etc/rc.conf to enable rtorrent at startup
# rtorrent (bool): Set to "NO" by default.
#                Set it to "YES" to enable rtorrent
# rtorrent_user (str): Set to user running rtorrent
#                    (default 'p2p')
# rtorrent_home (str): Set to home directory of user running rtorrent
#                    (default /home/${rtorrent_user})
 
. /etc/rc.subr
 
name="rtorrent"
rcvar=`set_rcvar`
 
load_rc_config $name
 
[ -z "$rtorrent_enable" ] && rtorrent_enable="NO"
[ -z "$rtorrent_user" ] && rtorrent_user="p2p"
[ -z "$rtorrent_home" ] && rtorrent_home="/home/${rtorrent_user}"
 
required_dirs=${rtorrent_home}
required_files="${rtorrent_home}/.rtorrent.rc"
 
start_cmd="${name}_start"
stop_cmd="${name}_stop"
 
rtorrent_start()
{
        if [ ! -f /var/run/${name}.run ]
        then
      cd ${rtorrent_home}
       su ${rtorrent_user} -c "/usr/local/bin/screen -dmS rtorrent_init /usr/local/bin/rtorrent"
      touch /var/run/${name}.run
          echo "Started ${name}."
          echo `date` : "Started ${name}." >> /var/log/${name}.log
        else
          echo "${name} seems to be already running -- remove /var/run/${name}.run manually if needed."
        fi
}
 
rtorrent_stop()
{
        if [ -f /var/run/${name}.run ]
        then
          killall -INT $(echo -n 'ps aux | grep rtorrent | grep -v rtorrent_init') 2>>/var/log/${name}.log >>/var/log/${name}.log
          rm -f /var/run/${name}.run
          echo "Stopped ${name}."
          echo `date` : "Stopped ${name}." >> /var/log/${name}.log
        else
          echo "${name} doesn't seem to be running -- create /var/run/${name}.run if needed."
        fi
}
 
run_rc_command "$1"

Ставим автоматом на запуск:

echo 'rtorrent_enable="YES"' >> /etc/rc.conf

Вроде работает... Про вебморды в следующих статьях: wtorrent и rtorrent.

Подпишитесь на обновления блога по RSS, Email или Twitter!
  • 24 января 2009 г. в 21:54 | #1

    Одна из лучших статей по rtorrentu и freeBsd

    По крайней мере, ничего лучшего мне Google не предложил :-)

  • Siniy
    26 января 2009 г. в 10:50 | #2

    Сергей

    Спасибо, я рад:)

  • Phistan
    8 февраля 2009 г. в 18:28 | #3

    Огромное спасибо! Особенно за скрипт для rc.d Его-то для полного счастья и не хватло.

  • Sass
    14 февраля 2009 г. в 11:16 | #4

    Автору спасибо, пиши ещё

    блог в закладки

  • dm
    21 февраля 2009 г. в 23:25 | #5

    ай, молодец! такой хороший скрипт для rc.d написал :)

  • Siniy
    22 февраля 2009 г. в 01:05 | #6

    dm

    Эт не я. Я просто взял и собрал тут общий HowTo.

    Если у кого то есть притязания на rc.d скрипт, то я опубликую имя автора.

    А вообще написать было бы несложно:)

  • dm
    22 февраля 2009 г. в 23:55 | #7

    хм, действительно автор указан в скрипте :) я невнимательный. но все равно спасибо, что ты нашел этот скрипт для нас. написать-то несложно БЫЛО БЫ, но как обычно лень ;)

  • Siniy
    23 февраля 2009 г. в 18:49 | #8

    dm

    Лень — великая движущая сила прогресса:)

  • ronald85
    2 июля 2009 г. в 12:22 | #9

    Можно мне скопировать в свой блог ? Ссылку на www.siniy.ws естественно укажу -)

  • Siniy
    2 июля 2009 г. в 12:29 | #10

    Да, можно

  • zilia
    21 июля 2009 г. в 12:49 | #11

    косяки в хтмле

    & полезли вместо амперсандов в конфигах и коммандах в некоторых местах :(

  • Siniy
    21 июля 2009 г. в 12:52 | #12

    Вроде сделал, но хз почему это появляется

  • WarWar
    23 июля 2009 г. в 13:08 | #13

    а как быть с русским на koi8r файловых системах?

  • Siniy
    23 июля 2009 г. в 13:12 | #14

    К сожалению никак:(

    У меня скачанное лежало в каталогах фтп, и я подсоединялся в кодировке utf к фтп, и уже оттуда качал.

    При этом матерясь на тех, кто выложил на трекер раздачу с русскими названиями папок и файлов.

  • beginner
    30 сентября 2009 г. в 22:12 | #15

    спасибо автору

    все сделал — rtorrent заработал.

    но есть несколько вопросов по поводу скрипта, он запускает rtorrent при включении роутера из под юзера p2p так?

    допустим, если мне захочется взглянуть текущее состояние рторрента. сделаю ssh на роутер.

    сделаю su под p2p и как взглянуть в rtorrent?

    если утпо набрать rtorrent то получу Error in option file: ~/.rtorrent.rc:111: Could not prepare socket for listening: Address already in use

  • Siniy
    30 сентября 2009 г. в 22:38 | #16

    Нет, как только зайдешь под юзером p2p нужно приаттачить сессию screen. Делается это с помощью команды:

    screen -dr rtorrent

    Откроется окно запущенного rtorrent'a. Чтоб вернуться назад нужно нажать Ctrl+A и потом D — screen скажет, что окно было деаттачед:)

  • 13 декабря 2009 г. в 13:46 | #17

    Спасибо за скрипт! Давно искал.

  • FreeBSP
    26 мая 2010 г. в 01:42 | #18

    создание зверя

    pw groupadd p2p pw useradd p2p -n "rTorrent user" -g p2p -w random -s /bin/sh

    как то так

    можно еще дописать класс логина, список групп, права на хомяк et cetera...

  • bzd
    11 августа 2010 г. в 05:01 | #19

    Не люблю когда всё в куче, предпочитаю всё сортировать :)

    schedule = watch_directory,5,5,"load_start=/home/bzd/.rtorrent/watch/*.music,d.set_directory=/home/bzd/music"

    schedule = watch_directory_2,5,5,"load_start=/home/bzd/.rtorrent/watch/*.video,d.set_directory=/home/bzd/video"

  • Siniy
    11 августа 2010 г. в 06:11 | #20

    @bzd

    Можно и так, но тогда придётся сохранять торренты с расширениями .music и .video.

    Я добавляю торренты через веб морду и сразу указываю каталог для сохранения содержимого:)

  • 4 ноября 2010 г. в 13:07 | #21

    Полезная статья

  • 17 января 2012 г. в 09:52 | #22

    Пытался, не нашел в гугле нормальный rc.d скрипт для rtorrent'а с созданием pid файла + чтобы скрипт умел создавать юникс сокет для веб морды rutorrent. В инете есть скрипт на сайте лиссяры, но там нет pid файла, и есть другой скрипт, где есть pid файл, но нет связки с сокетом :) Ирония блин. Бьюсь не один день.

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

XHTML: Вы можете использовать эти теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">