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.


Одна из лучших статей по rtorrentu и freeBsd
По крайней мере, ничего лучшего мне Google не предложил
Сергей
Спасибо, я рад:)
Огромное спасибо! Особенно за скрипт для rc.d Его-то для полного счастья и не хватло.
Автору спасибо, пиши ещё
блог в закладки
ай, молодец! такой хороший скрипт для rc.d написал
dm
Эт не я. Я просто взял и собрал тут общий HowTo.
Если у кого то есть притязания на rc.d скрипт, то я опубликую имя автора.
А вообще написать было бы несложно:)
хм, действительно автор указан в скрипте
я невнимательный. но все равно спасибо, что ты нашел этот скрипт для нас. написать-то несложно БЫЛО БЫ, но как обычно лень
dm
Лень — великая движущая сила прогресса:)
Можно мне скопировать в свой блог ? Ссылку на www.siniy.ws естественно укажу -)
Да, можно
косяки в хтмле
& полезли вместо амперсандов в конфигах и коммандах в некоторых местах
Вроде сделал, но хз почему это появляется
а как быть с русским на koi8r файловых системах?
К сожалению никак:(
У меня скачанное лежало в каталогах фтп, и я подсоединялся в кодировке utf к фтп, и уже оттуда качал.
При этом матерясь на тех, кто выложил на трекер раздачу с русскими названиями папок и файлов.
спасибо автору
все сделал — 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
Нет, как только зайдешь под юзером p2p нужно приаттачить сессию screen. Делается это с помощью команды:
Откроется окно запущенного rtorrent'a. Чтоб вернуться назад нужно нажать Ctrl+A и потом D — screen скажет, что окно было деаттачед:)
Спасибо за скрипт! Давно искал.
создание зверя
pw groupadd p2p pw useradd p2p -n "rTorrent user" -g p2p -w random -s /bin/shкак то так
можно еще дописать класс логина, список групп, права на хомяк et cetera...
Не люблю когда всё в куче, предпочитаю всё сортировать
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"
@bzd
Можно и так, но тогда придётся сохранять торренты с расширениями .music и .video.
Я добавляю торренты через веб морду и сразу указываю каталог для сохранения содержимого:)
Полезная статья
Пытался, не нашел в гугле нормальный rc.d скрипт для rtorrent'а с созданием pid файла + чтобы скрипт умел создавать юникс сокет для веб морды rutorrent. В инете есть скрипт на сайте лиссяры, но там нет pid файла, и есть другой скрипт, где есть pid файл, но нет связки с сокетом
Ирония блин. Бьюсь не один день.