Мой дом.

Debian Lenny и rTorrent + RuTorrent

 

Проблема заключается в том, что в состав Debian Lenny входит старый пакет libxmlrpc-c3_1.06 и rtorrent собран для работы с этой версией библиотеки, а для нормальной работы связки rtorrent + WEB-UI rutorrent необходимо, чтобы rtorrent был собран с версией libxmlrpc-c3 не ниже 1.11.

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

Итак, начнем. Прежде всего, удаляем старые установленные пакеты, если они есть.

  • sudo apt-get remove rtorrent libtorrent11 libxmlrpc-c3 libxmlrpc-c3-dev

Скачиваем пакет

  • libxmlrpc-c3_1.16.07-1_i386.deb

из ветки Debian Experimental. А пакеты

  • rtorrent_0.8.6-1_i386.deb,
  • libtorrent11_0.12.6-2_i386.deb,
  • libssl0.9.8_0.9.8m-2_i386.deb

из Debian Squeeze. Затем ставим скачанные пакеты командой

  • dpkg -i ./rtorrent_0.8.6-1_i386.deb ./libxmlrpc-c3_1.16.07-1_i386.deb ./libtorrent11_0.12.6-2_i386.deb ./libssl0.9.8_0.9.8m-2_i386.deb
  •  а лучше создать репозиторий из этих пакетов и выполнить apt-get install rtorrent libxmlrpc-c3 libtorrent11 libssl0.9.8 иначе возникают проблемы с aptitude

    Но не все так просто, дело в том, что в Squeeze та-же версия libxmlrpc-c3, что и в Lenny, только rtorrent посвежее (0.8.6-1), а в логах rutorrent пишет все туже ошибку «…………………..»

     

    Лечение я выбрал такое: Здесь взял редхатовский пакет rtorrent-0.8.6-4.el5.i386.rpm он собран с libxmlrpc-c3 версии 1.14 и конвертировал его в DEB пакет:

    • alien -d ./rtorrent-0.8.6-4.el5.i386.rpm

    Далее можно просто поставить полученный пакет, я же скопировал из него файл rtorrent в каталог /usr/bin/ (заменил имеющийся). Для адаптации чужого rtorrent’а пришлось сделать несколько симлинков в каталоге /usr/lib/

    • cd /usr/lib
    • ln –s /usr/lib/libssl.so.0.9.8 libssl.so.6
    • ln –s /usr/lib/libcrypto.so.0.9.8 libcrypto.so.6
    • ln –s /usr/lib/libldap_r-2.4.so.2 libldap-2.3.so.0
    • ln –s /usr/lib/liblber-2.4.so.2.1.0 liblber-2.3.so.0

    Конечно, этот способ далек от элегантности, но на мой взгляд лучше сборки из исходников по ряду причин:

    1. Менеджер пакетов знает, что, где и какой версии установлено
    2. Нет необходимости устанавливать checkinstall  и еще кучу всего
    3. Не нужно разбираться, с какими опциями делать ./configure

     

     

     

    Далее "конспект", набраный из различных источников. И не причесанный...

     

     

     

    Настройка и автозапуск rtorrent

    Подготовка.

    Для настройки используется всего один конфигурационный файл, однако изначально он не просто пуст, но и не существует.

    Нам понадобятся корневая папка для торрентов (в моём случае это /data — самый крупный раздел винчестера) и папка где будет лежать файл сессий (/data/torrents/session).

    Из дополнительных возможностей программы наиболее плотно рассмотрим самые полезные:

    • rtorrent может автоматически сканировать указанную папку, и если в ней появится торрент, начать его закачку. Например мы можем настроить его так, что если в папке /data/torrents/auto/films появится .torrent файл то он автоматически начнёт скачиваться в /data/films
    • Мы можем задать скорость загрузки и отдачи в определённых временных интервалах, например разрешать качать без ограничений на скорость с часа ночи и до девяти утра.
    • И мы ведь хотим подключить веб интерфейс — для этого используется эта строчка: scgi_port = 127.0.0.1:5000

    Создадим необходимые директории:

    cd /data && mkdir anime films games music soft torrents
    cd torrents && mkdir session auto
    cd auto && mkdir anime films games music soft

    Создаём файл с настройками:

    nano ~/.rtorrent.rc
    scgi_port = 127.0.0.1:5000
    encoding_list = UTF-8
     
    min_peers = 30
    max_peers = 125
    min_peers_seed = 10
    max_uploads = 20
    download_rate = 500
    upload_rate = 500
    directory = /data
    session = /data/torrents/session
    port_range = 6789-6789
    port_random = no
    check_hash = yes
    peer_exchange = yes
    check_hash = yes
    use_udp_trackers = yes
    encryption = allow_incoming,try_outgoing,enable_retry
    dht = auto
    dht_port = 2442
     
    #Завершение программы при нехватке свободного места
    schedule = low_diskspace,5,60,close_low_diskspace=300M
     
    #Автоматические загрузки
    schedule = watch_directory_1,5,5,"load_start=/data/torrents/auto/anime/*.torrent,d.set_directory=/data/anime"
    schedule = watch_directory_2,5,5,"load_start=/data/torrents/auto/films/*.torrent,d.set_directory=/data/films"
    schedule = watch_directory_3,5,5,"load_start=/data/torrents/auto/games/*.torrent,d.set_directory=/data/games"
    schedule = watch_directory_4,5,5,"load_start=/data/torrents/auto/music/*.torrent,d.set_directory=/data/music"
    schedule = watch_directory_5,5,5,"load_start=/data/torrents/auto/soft/*.torrent,d.set_directory=/data/soft"
     
    #Управление скоростью в зависимости от времени
    schedule = throttle_1,01:00:00,24:00:00,download_rate=800
    schedule = throttle_2,09:00:00,24:00:00,download_rate=500
    schedule = throttle_3,01:00:00,24:00:00,upload_rate=800
    schedule = throttle_4,09:00:00,24:00:00,upload_rate=500

    И сохраняем его.

    Для автозапуска можно воспользоваться скриптом автора программы (ключевую роль в нём играет screen), единственное что в нём нужно изменить — пользователя (user=ваш_пользователь)

    sudo wget http://libtorrent.rakshasa.no/attachment/wiki/RTorrentCommonTasks/rtorrentInit.sh?format=raw -O /etc/init.d/rtorrent

    Меняем пользователя:

    sudo nano /etc/init.d/rtorrent

    Устанавливаем и запускаем скрипт:

    sudo chmod +x /etc/init.d/rtorrent && sudo update-rc.d rtorrent defaults && sudo /etc/init.d/rtorrent start

    Проверим его работу:

    screen -dr rtorrent

    Чтобы выйти нажмите Ctrl+A затем Ctrl+d.

    Apache2 — прелюдия к web интерфейсу

    Нам потребуется изменить / создать новый виртуальный хост:

    sudo nano /etc/apache2/sites-available/default
    <VirtualHost *:80>
            ServerName server.ath.cx
            DocumentRoot /home/user/www/server.ath.cx/
            ErrorLog /var/log/apache2/error.log
            CustomLog /var/log/apache2/access.log combined
     
            #Подключаем и защищаем scgi
            LoadModule scgi_module /usr/lib/apache2/modules/mod_scgi.so
            <Location "/RPC2">
             SetHandler scgi-handler
             SCGIServer localhost:5000
             SCGIHandler On
             Options -Multiviews
             AuthName "Rtorrent Restricted Area"
             AuthType Basic
             AuthBasicProvider file
             AuthUserFile /home/user/www/.rtorrent_pass
             Require valid-user
            </Location>
    </VirtualHost>

    Как видите мы прописали путь к файлу .rtorrent_pass — он как раз и содержит допустимый логин и пароль. Обратите внимание на то, что из интернета к нему получить доступ нельзя, он лежит в папке находящейся уровнем выше чем папка с сайтом. И это не случайно.

    Создадим его:

    sudo htpasswd -c ~/user/www/.rtorrent_pass login

    Где login — придуманное вами имя пользователя.

     

     

    Установка Rutorrent

    cd ~/www/server.ath.cx
    svn checkout http://rutorrent.googlecode.com/svn/trunk/rtorrent
    sudo chmod 777 -R ~/www/server.ath.cx/rtorrent

    Всё, rutorrent установлен. Однако не спешите переходить по адресу http://server.ath.cx/rtorrent/

    Для того чтобы ввести логин и пароль на обновляющейся каждые 3 секунды (в попытке получить доступ к /RPC2) странице требуется как минимум хорошая скорость.

    Залогиньтесь на странице http://server.ath.cx/RPC2 (пусть вас не смущает ошибка после логина, ничего дельного наш браузер «сказать» папке не может, «разговаривать» с ней будет rutorrent) и уже потом переходите на http://server.ath.cx/rtorrent/

    Плагины Rutorrent

    Для себя я выбрал следующие 4 плагина: erasedata (позволяет удалять торренты вместе с файлами), choose (добавляет выпадающий список куда закачивать), trafic (статистика), autotools (автоматически даёт метку исходя из папки указанной для загрузки).

    Со списком всех плагинов вы можете ознакомиться на сайте rutorrent.

    Напишем простенький скрипт для автоматической установки / обновления плагинов и самого веб-интерфейса:

    cd ~/scripts && nano rutorrent_install.sh
    #!/bin/sh
    cd ~/www/server.ath.cx
     
    svn checkout http://rutorrent.googlecode.com/svn/trunk/rtorrent
     
    cd rtorrent/plugins
    svn checkout http://rutorrent.googlecode.com/svn/trunk/plugins/erasedata
    svn checkout http://rutorrent.googlecode.com/svn/trunk/plugins/choose
    svn checkout http://rutorrent.googlecode.com/svn/trunk/plugins/trafic
    svn checkout http://rutorrent.googlecode.com/svn/trunk/plugins/autotools
     
    chmod 777 -R ~/www/server.ath.cx/rtorrent

    Запускаем его:

    chmod +x ~/scripts/rutorrent_install.sh && ~/scripts/rutorrent_install.sh

     

     

     

     

    Плагин Save file to (rtorrent + firefox)

    Надеюсь вы помните что rtorrent сканирует заданные папки. Для лисы существует простой и очень удобный плагин который позволяет добавлять торрент двумя кликами, как вы уже поняли это Save file to:

    Естественно нам нужно расшарить нужную папку в самбе:

    sudo nano /etc/samba/smb.conf

    Добавим такой блок в конце файла:

    [torrents]
    path=/data/torrents
    guest  ok = no
    browseable = yes
    writable = yes
    create mask = 0777
    directory   mask = 0777

    Перезапустим самбу:

    sudo /etc/init.d/samba restart

    Заходите в настройки плагина и добавляйте свежерасшаренную папку:

     

     

    После того, как вы сохраните торрент в нужную папку вы сможете сохранять в неё последующие торренты одним кликом — этот плагин запоминает последние папки.

    Сделать бесплатный сайт с uCoz