
Transmission — один из самых популярных torrent клинтов в мире Unix-подобных операционных систем и, к примеру, является выбором по умолчанию в таких дистрибутивах как
Ubuntu,
Fedora и
openSUSE. В своей работе Transmission потребляет заметно меньше системных ресурсов нежели другие torrent клиенты благодаря чему может и используется во многих встраиваемых ОС даже таких устройств как домашние WiFi роутеры/точки доступа или сетевых медиаплеерах. Кроме того, Transmission обладает встроенным web-интерфейсом и не требует для его работы ни
Apache, ни
Lighttpd, ни какого другого http сервера. Именно о установке и настройке новейшей версии этого замечательного torrent клиента я и хочу рассказать в этом посте.
Сборка Transmission из исходников
К сожалению, в стандартных репозиториях находится устаревшая версия. Именно поэтому будет произведена собрка пакета новейшей версии Transmission и его установка.
Примечание: За совет по способу установки благодарим BaBL.
Итак, прежде всего нам необходимо загрузить архив с исходниками torrent клиента Transmission. Ссылку на загрузку можно найти на официальной
странице.
Примечание: все нижеприведенные инструкции показаны на примере ОС Debian, однако они могут быть воспроизведены с незначительными изменениями и на других дистрибутивах.
$ wget http://mirrors.m0k.org/transmission/files/transmission-1.92.tar.bz2
Примечание: на момент написания поста (2010-03-16) последней версией Transmission была 1.92.
После загрузки архива с исходниками его следует распаковать:
$ tar xvjf transmission-1.92.tar.bz2
в результате чего, все содержимое архива будет распаковано в папку «transmission-1.92». Перейдем в нее:
$ cd transmission-1.92
Для успешной компиляции нужно установить недостающие утилиты и библиотеки:
# aptitude install build-essential automake autoconf libtool pkg-config libcurl4-openssl-dev intltool libxml2-dev libglib2.0-dev checkinstall
Далее следует задать опции сборки:
$ ./configure -q --disable-gtk --disable-nls
где "
--disable-gtk" — отключает сборку GTK клиента, а
"--disable-nls" — опция, предназначенная предназначенная специально для серверов и встраиваемых систем, удаляет зависимости от gettext и intltool.
Теперь можно запустить компиляцию:
$ make -s
А сразу после успешной компиляции приступим к созданию
.deb пакета. Для этого нам понадобятся
root привилегияии:
# checkinstall -D --install=no
Здесь и далее команды требующие для своего запуска root привилегии помечены префиксом "#".
На запрос о вводе краткого описания пакета вводим что-то в стиле "
Transmission — cross-platform BitTorrent client" и дважды нажимаем Enter, как признак окончания текста.
Далее появляется меню с информацией о собираемом пакете. Убеждаемся что заданы версия пакета и релиз и запускам сборку нажатием Enter.
Теперь установим созданный пакет:
# dpkg -i transmission_1.92*.deb
Все, на этом этапе установка завершена. Далее нас ждет настройка.
Примечание: более детально про сборку Transmission из исходиков можно прочитать вот тут.
Настройка Transmission

Первым делом делом во время настройки Transmission следует создать нового пользователя в системе. При этом, в целях безопасности, создаваемый пользователь должен быть без пароля за что и отвечает следующая
опция "--disabled-password":
# adduser --disabled-password transmission
После создания пользователя переключаемся в его консоль:
# su transmission
Здесь и далее, для явной идентификации команд, которые нужно запуска от имени вновь созданного пользователя я буду использовать
префикс "transmission@host:~$".
Далее следует запустить
transmission-daemon и тут же его остановить для того, чтобы он создал файлы с настройками по-умолчанию. Запускаем:
transmission@host:~$ transmission-daemon -f
где опция "
-f" указывает на то, чтобы программа не
демонизировалась.
Теперь, чтобы остановить
transmission-daemon, на клавиатуре следует нажать CRTL-C. После этого все настройки по-умолчанию будут записаны в домашней папке пользователя transmission по следующему пути:
/home/transmission/.config/
Выполним конфигурацию Transmission. Для этого вашим любимым редактором нужно изменить файл settings.json. Этот файл содержит все настройки в формате
JSON.
transmission@host:~$ nano /home/transmission/.config/transmission-daemon/settings.json
В данном файле находится множество настроек (полный список которых можно посмотреть вот
тут), однако я обычно изменяю лишь эти:
"peer-port": 51413 — порт входящих соединений. Если вы за NAT'ом то позаботьтесь о пробросе этого порта;
"download-dir": "\/arc" — папка в которой будут находиться загрузки. Обращаю внимание на то, что такие символы как "/" нужно экранировать. Кроме того, убедитесь что пользователь transmission, с правами которого работает torrent клиент, имеет право на запись по этому пути;
"incomplete-dir": "\/arc\/Incomplete" — папка в которой будут находиться еще не законченные загрузки. После завершения они будут перемещены по пути, указанному в опции "download-dir". Так же убедитесь что пользователь transmission имеет право на запись по этому пути;
"incomplete-dir-enabled": true — включение предыдущей опции;
"rpc-enabled": true — включение удаленного управления. Сюда же относится и управление через web-интерфейс;
"rpc-whitelist-enabled": true — включение так называемого «белого списка» IP-адресов, с которых возможно удаленное управление Transmission. Сюда же относится и удаленное управление через web-интерфейс;
"rpc-whitelist": "127.0.0.1,192.168.*.*" — «белый список». Можно задавать не только локальные, но и реальные внешние IP адреса;
"rpc-authentication-required": true — требовать аутентификацию для удаленного управления;
"rpc-username": "логин" — логин для удаленного управления;
"rpc-password": "пароль" — пароль;
- «rpc-port»: 9091 — порт для доступа к удаленному управлению.
На будущее,
хочу обратить ваше внимание на то, что простое изменение файла настроек settings.json во время работы Transmission не влияет на его работу а по выходу из него, они будут перезаписаны теми настройками, которые были на момент запуска. Чтобы работающий Transmission загрузил новые настройки во время своей работы ему следует отправить сигнал
SIGHUP:
# killall -HUP transmission-daemon
Теперь, по окончанию настроек, лучше выйти из консоли пользователя
transmission. Больше она нам не понадобится.
transmission@host:~$ exit
Настройка автозагрузки демона transmission-daemon
Для того, чтобы
transmission-daemon автоматически стартовал при старте машины нужно выполнить несколько несложных действий. Вначале, нужно взять стартовый скрипт вот по этому адресу
http://trac.transmissionbt.com/wiki/Scripts/initd и сохранить его в файле
/etc/init.d/transmission-daemon.
Делаем файл исполняемым:
# chmod +x /etc/init.d/transmission-daemon
Задаем владельцем файла системного пользователя root:
# chown root:root /etc/init.d/transmission-daemon
Включаем «автозагрузку»:
# update-rc.d transmission-daemon defaults
Все, теперь демон можно запустить выполнив вот такую команду:
# /etc/init.d/transmission-daemon start
Теперь, во время каждой загрузки машины, будет автоматически запускаться и наш torrent клиент.
Удаленное управление
Существует несколько вариантов удаленного управления. Один из них это встроенный web-интерфейс. Чтобы его открыть нужно направить браузер по адресу
http://<ваш IP адрес>:9091/ (порт задается в файле настроек settings.json параметром "
rpc-port"). И вот как он выглядит:

(
кликни для увеличения)
Другим вариантом удаленного управления является кросс-платформенная (Windows, Linux и Mac OS X) open source программа
Transmission Remote GUI. Это довольно функциональная программа с
µTorrent-подобным интерфейсом имеет куда больше возможностей чем встроенный web-интерфейс. Среди ее функциональности хочется отметить фильтрацию торрентов по статусу и трекеру, определение страны и host-имени пиров, ассоциацию с .torrent файлами, выбор папки для загрузки, задание приоритетов и многое другое.

(Главное окно со списком пиров)
Еще скриншоты
Transmission Remote GUI.
Так же хочу отметить подобный проект —
transmission-remote-dotnet. К сожалению, данная разработка предназначена для Windows мира (разработана на .NET), однако она обладает большим числом опций и возможностей нежели предыдущий вариант, и как по мне, выглядит она приятнее и слаженнее.

(Скриншот
transmission-remote-dotnet с настройками)
Еще скриншоты
transmission-remote-dotnet.
Ну и напоследок, не могу не упомянуть такой плагин для
FireFox как
Autotrans. Плагин добавляет в контекстное меню на ссылки к .torrent файлам пункт «Torrent It!» при клике по которому запускается закачка выбранного файла на вашем Transmission демоне.

(Контекстное меню плагина
Autotrans)
Но и это далеко не все что можно делать с Transmission. Посмотреть остальные возможности можно по вот
этому адресу.
К вопросу об автоматизации загрузок
А еще хочу напомнишь про автоматизацию загрузок ваших любимых сериалов с RSS лент различных трекеров:
- Об этом я уже писал несколько ранее вот тут (на примере LostFilm'a) и вот тут (на примере Кинозала). Оба решения реализованы в виде shell команд и основаны на
grep, wget, curl;
- Кроме того, еще один способ автоматизации с помощью FlexGet описывал Alukar вот тут;
- И еще один вариант обработки RSS лент с помощью Yahoo Pipes рассмотрен хаброчеловеком AmoN вот в этом посте.
UPD. Как подсказывает
librarian в
комментарии есть еще один, более правильный, способ сборки Transmission. Добавил отдельным пунктом.
UPD2. Добавил описание transmission-remote-dotnet.
UPD3. Обновил пункт установки. Благодарим за помощь
BaBL.
комментарии (77)
НИКОГДА, МЛЯ, НИКОГДА НЕ СИДИТЕ ПОД РУТОМ И НЕ ЮЗАЙТЕ MAKE INSTALL В ПАКЕТНЫХ ДИСТРИБУТИВАХ! НЕУЖЕЛИ ЭТО СЛОЖНО 1!!! РАЗ ЗАПОМНИТЬ!?
ну а по поводу статьи:
sudo apt-get -t sid install transmission, не думаю что 1.91-1 прям таки сильно устаревшая версия, требующая сборки.
Ну а в генту сейчас ядро 2.6.31 (вчера ставил), когда в арче, если не ошибаюсь месяц, может больше уже 2.6.32.
можете только для нужных пакетов в /etc/portage/package.keywords/file
gentoo-sources ~amd64
P.S. Ну или ~x86, или ~ppc в зависимости от Вашей архитектуры.
Может я что-то и не так делал, но серия команд:
# apt-get install devscripts# apt-get build-dep transmission
$ apt-get source transmission
$ cd transmission-*
$ uupdate --upstream-version 1.92 ../transmission-1.92.tar.bz2
$ cd ../transmission-1.92
$ debuild -i -us -uc
$ cd ../
# dpkg -i transmission-*.deb
мало того что понакачала зависимостей на больше чем 50 МБ и порядка 200 пакетов, так еще и не привела к желаемому результату.
Нет, я не отрицаю, возможно я где-то ошибся, ну так научите. А громко говорить каждый может.
$ debuild -i -us -uc> НЕ ЮЗАЙТЕ MAKE INSTALL В ПАКЕТНЫХ ДИСТРИБУТИВАХ
Аргументация?
Я не стебусь, просто я всегда считал
$ ./configure
$ make
# make install
стандартом де-факто установки из исходников.
Если не make install, то как тогда устанавливать софт не включенный в репозитории?
make install годится для сорцовых дистрибутивов без контроля зависимостей, в которых вы давно варитесь и знаете каждую библиотеку.
1) весь собираемый софт в бинарных дистрибутивах надо собирать с префиксом /usr/local, так как /usr/bin находится под контролем пакетного менеджера и изменение любого файла тут может повлиять на работу системы. К примеру удалите или перезапишете какую-нибудь библиотеку и менеджер не сможет ее обновить сказав «не могу поставить, так как файл уже имеется в таком пакете» или «не совпадает контрольная сумма, хз что делать, попробуйте --force на свой страх и риск». /usr/local создан специально для ваших попыток изменить систему в обход апстрима
2) далеко не все разработчики заботятся о правильной настройке мейкфайлов и make install в итоге может нафигачить много мусора, а make uninstall его не удалит и до хвостов Вы уже никак не доберетесь. К тому же для make uninstall придется либо хранить исходники, либо помнить все ключи с которыми собирали, иначене удалить, согласитесь — банально неудобно.
3) поискать уже собранный пакет, можно от ubuntu, системы в большинстве случаев совместимы, иногда можно поправить имена зависимостей в пакете просто, если вдруг либа та же, но переименована. — Это самый «безболезненный» метод, пакет, как правило, протестирован и грамотно собран. О том как это сделать смотрите у меня в блоге, там был пост на тему сборки пакета из собственных исходников, в нем есть полная структура и описание что где править.
4) можно собрать пакет с помощью checkinstall, самый просто способ. Он запускает make install в темп папку, запоминает что куда поставилось, как настроилось и т.д. и создает на основе полученных данных deb пакет, после чего зачищает все что сделал при временной установке. Тут совместимость собранных исходников с версиями библиотек в системе на вашей совести, это именно вариант make install только «корректный» для пакетного менеджера.
5) взять руководство по сборке deb/rpm пакета для своего дистрибутива, как правило оно довольно толстое и на первых порах вызовет вопросы и непонимания, но после нескольких собранных пакетов вольетесь и сможете рулить ими как родными.
от себя могу варианты 3 и 4 рекомендовать как самые быстрые и простые.
Т.к. все же попадается софт, отсутствующий в репозиториях. Например code.google.com/p/madwimax/ я так и не нашел.
apt-cache search молчит как рыба=\
madwimax — драйвер для оборудования mWiMAX на основе чипа Samsung CMC-730
о_О
firmware-intelwimax — Binary firmware for Intel WiMAX Connection
И все.
А что у вас выводит cat /etc/apt/sources.list.d/*?
У меня вот это:
$ cat /etc/apt/sources.list.d/*
deb ftp.debian.org/debian/ stable main contrib non-free
deb-src ftp.debian.org/debian/ stable main contrib non-free
deb www.debian-multimedia.org/ sid main
deb repos.eeebuntu.org/ eb4 main non-free contrib
deb repos.eeebuntu.org/ apptesting main non-free contrib
# This file makes sure that Opera Browser is kept up-to-date
# as part of regular system upgrades
deb deb.opera.com/opera/ stable non-free
# The line above will make sure you get all final public releases.
# Uncomment the following line if you want to get alpha and beta
# releases, too.
# deb deb.opera.com/opera-beta/ stable non-free
1) зачем eeebuntu? крайне не советую так смешивать ветки, деба и убунты, конфилкты будут неизбежны. Отключите их и подключайте только если надо установить какой-нибудь единичный пакет именно из них.
2) lenny вышел больше года назад, естественно в нем этого пакета нету. Только секьюрити апдейты. Если хотите использовать его в
lenny — подключите ветку lenny-backports (http://packages.debian.org/lenny-backports/madwimax) там он есть
3) не советую дома сидеть на lenny, он к моменту выхода уже устаревает. Как правило народ сидит либо на testing, либо на sid (unstable), тестинг стабильнее многих релизов других дистрибутивов, так как пакеты доходя до него проходят полный цикл в анстейбл, а иногда и экспериментал.
можете смело убить все в этом файле и сделать, к примеру:
deb http://deb.opera.com/opera/ testing non-free
хватит с головой для всего
Какой был по дефолту, ничего не менял. Разве что оперу добавил.
> не советую дома сидеть на lenny
Вообще это у меня не совсем debian lenny. Это eeebuntu.org, конкретно 4 версии (beta), и хотя в названии стоит *buntu, основана она на дебиане. Прошлые версии (до 3 включительно) основывались на убунте, отсюда и название.
И рискну предположить, что в репозитории repos.eeebuntu.org какие-нибудь спец.пакеты для поддержки оборудования eeepc.
и помню в какую помойку превращается система при неосторожном обращении, когда свежего софта хочется или когда нужен софт который в куцых репах слаки просто отсутствует, ибо Патрик не осилил сборку ;)
Хотя, лично я, с трудом представляю зачем может понадобиться такое число активных раздач.
Кстати, о устрановке и настройке rTorrent я тоже планирую написать подобную статью.
Несколько копий — этот вариант отбросим — сложно кормить торрентами, вспоминая степень загрузки копии.
Буферы не настраивали, file_allocate не меняли — у нас клиент раздающий, а не качающий ) фрагментация нашей reiserfs примерно 1%
Долго мучали max/min_peers, max_open_files. Пришлось ставить большое значение параметру max_open_http.
Написал: habrahabr.ru/blogs/p2p/88405/
А у вас со стабильностью rTorrent?
меня вообще-то раид удивил, а не сам объем )))
к нему я пока еще не сильно привык на «не рабочих» компах
хотя дома у меня тоже почти 6 тер, в принципе. частью в raid'е, частью нет.
ЗЫ кстати думал статья будет как раз про оптимизацию качалки
PS хотя я уже начинаю думать что это изза х64 системы
apt-get build-dep transmission
wget lalalala/transmission-super.new.version-2.2.2.tar.gz
cd transmission*
uupdate --upstream-version 2.2.2 ../transmission-super.new.version-2.2.2.tar.gz
debuild -i -us -uc
cd ../
dpkg -i *2.2.2*deb
Спрашивайте, критикуйте… :)
>А что будет при 300 и более торрентов? У меня гуи отваливалось по таймауту, что привело меня в итоге к rtorrent.
мы тестили transmission-daemon, правда версии 1.75 — у него начинаются проблемы примерно после 400 торрентов — как мы выяснили — очередь не успевает обрабатываться. при этом обрубаются все запросы от transmission-remote, видимо gui отваливался по этой же причине. Опять же не знаю как в 1.92, но в 1.75 — он личит память при хеше файлов. причем немало. выходило примерно по 2 метра на хешчек каждого торрента.
Еще у вас затрагивался rtorrent — у него тоже есть проблемы с большим количеством торрентов. консольный gui начинает тупить даже при 100 торрентах, при все при этом можно словить немало проблем с его установкой.Также он очень чувствителен к версии libcurl. При установленном libcurl из пакетов — просто отказывался соединяться с трекером. Даже с последней версией нам так и не удалось добиться от него стабильной работы. Постоянные ошибки при соединении с трекером и тд. и неудобное консольное remote управление.
В итоге мы стали пользовать enhanced ctorrent. С ним никаких проблем.
© letchik, letchik@jabber.sibnet.ru