Transmission (Русский)

From ArchWiki
Состояние перевода: На этой странице представлен перевод статьи Transmission. Дата последней синхронизации: 2 июля 2022. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Transmission — это легкий и кроссплатформенный BitTorrent-клиент.

Установка

Существует несколько пакетов для установки Transmission:

Настройка GUI версий

Обе версии GUI, transmission-gtk и transmission-qt, могут функционировать автономно без отдельно запущенного демона.

Версии с графическим интерфейсом настроены для работы из коробки, но пользователь может захотеть изменить некоторые настройки. По умолчанию путь к файлам конфигурации GUI - ~/.config/transmission.

Руководство по параметрам конфигурации можно найти в Github-репозитории Transmission.

Transmission демон и CLI

Команды transmission-cli:

transmission-daemon: запускает демон.
transmission-remote: вызывает интерфейс командной строки для демона, локального или удаленного, а затем команду, которую вы хотите, чтобы демон выполнил.
transmission-show: возвращает информацию о заданном торрент-файле.
transmission-create: создает новый торрент.
transmission-edit: добавление, удаление или замена announce URL трекера.
transmission-cli: (объявлена устаревшей в пользу transmission-remote) запускает локальный экземпляр transmission для ручной загрузки торрента.
tremc: (требует tremc-gitAUR) запускает curses-интерфейс для демона, локального или удаленного.

Запуск и остановка демона

Демон Transmission может быть запущен:

  • Как пользователь transmission, путем запуска/включения службы transmission.service. Пользователь может быть изменен, как описано в разделе #Выбор пользователя.
  • Как ваш собственный пользователь, запустив программу под своим именем:
$ transmission-daemon

При запуске демона будет создан файл начальной конфигурации. Смотрите раздел #Настройка демона.

Затем демон может быть остановлен с помощью:

$ pkill -3 transmission-daemon

Альтернативным вариантом остановки Transmission является использование команды transmission-remote:

$ transmission-remote --exit

Сокращение спама журнала

Запуск transmission-daemon может привести к появлению большого количества нежелательных записей в журнале. Вывод можно отфильтровать, запустив его с помощью небольшого скрипта-обертки. Следующий пример также предоставляет некоторые уведомления:

transwrap.sh
#!/bin/zsh
killall transmission-daemon 2> /dev/null
transmission-daemon --foreground --log-info 2>&1 | while read line; do
	echo $line |
		grep -v "announcer.c:\|platform.c:\|announce done (tr-dht.c:" |
		grep -v "Saved.*variant.c:" |
		while read line; do
			echo $line | grep -q "Queued for verification (verify.c:" &&
				notify-send --app-name="Transmission Started" "${line#* * }"
			echo $line | grep -q "changed from .Incomplete. to .Complete." &&
				notify-send --app-name="Transmission Complete" "${line#* * }"
			echo $line | systemd-cat --identifier="TransWrap" --priority=5
		done 2>&1 > /dev/null
	done&disown

Запуск только при подключении к сети

Netctl

Может быть желательно запускать передачу только в определенных сетях. Следующий скрипт проверяет, что соединение установлено со списком разрешенных сетей, а затем запускает transmission-daemon.

/etc/netctl/hooks/90-transmission.sh
#!/bin/bash

# The SSIDs for which we enable this.
declare -A ssids=(
    ["network_1"]=y
    ["network_2"]=y
)

if [[ ${ssids[$SSID]} ]]; then
    case $ACTION in
        CONNECT|REESTABLISHED)
            # Need to wait, otherwise doesn't seem to bind to 9091.
            sleep 30
            systemctl start transmission
            ;;
        *)
            systemctl stop transmission
            ;;
    esac
fi

Wicd

Создайте скрипт запуска в папке /etc/wicd/scripts/postconnect и скрипт остановки в папке /etc/wicd/scripts/predisconnect. Не забудьте сделать их исполняемыми. Например:

/etc/wicd/scripts/postconnect/transmission
#!/bin/bash

systemctl start transmission
/etc/wicd/scripts/predisconnect/transmission
#!/bin/bash

systemctl stop transmission

Выбор пользователя

Выберите способ запуска transmission:

  • В качестве отдельного пользователя, по умолчанию transmission (рекомендуется для повышения безопасности).

По умолчанию transmission создает пользователя и группу transmission, со своими домашними файлами по адресу /var/lib/transmission/, и запускается от имени этого "пользователя". Это мера предосторожности, благодаря которой transmission и его загрузки не имеют доступа к файлам вне /var/lib/transmission/. Настройка, работа и доступ к загрузкам должны выполняться с привилегиями "root" (например, с помощью sudo).

  • Под своим собственным пользователем.

Чтобы настроить это, создайте drop-in файл для службы и укажите в нем свое имя пользователя:

/etc/systemd/system/transmission.service.d/username.conf
[Service]
User=имя_пользователя

Настройка демона

Создайте файл начальной конфигурации путём запуска демона.

  • Если Transmission запущен под именем пользователя transmission, файл конфигурации будет расположен по адресу /var/lib/transmission/.config/transmission-daemon/settings.json.
  • Если вы запускаете Transmission под своим именем пользователя, файл конфигурации будет расположен по адресу ~/.config/transmission-daemon/settings.json.

Настроить демон можно с помощью клиента Transmission или через веб-интерфейс, доступный через http://localhost:9091 в поддерживаемом браузере.

Руководство по параметрам конфигурации можно найти на веб-сайте Transmission: https://github.com/transmission/transmission/blob/main/docs/Editing-Configuration-Files.md

Примечание: Если вы хотите отредактировать конфигурацию вручную с помощью текстового редактора, сперва остановите демон, иначе он перезапишет свой файл конфигурации при закрытии.
Примечание: В качестве альтернативы можно отправить демону команду перезагрузить свою конфигурацию с помощью SIGHUP, выполнив kill -s SIGHUP $(pidof transmission-daemon).

Для тех, кто работает под именем пользователя transmission, рекомендуется создать общий каталог загрузки с правильными разрешениями, чтобы разрешить доступ как пользователю transmission, так и системным пользователям, а затем соответствующим образом обновить конфигурационный файл. Например:

# mkdir /mnt/data/torrents
# chown -R facade:transmission /mnt/data/torrents
# chmod -R 775 /mnt/data/torrents

Теперь /mnt/data/torrents будет доступен для системного пользователя facade и для группы transmission, в которую входит пользователь transmission. Крайне не рекомендуется делать целевой каталог доступным для чтения/записи любым пользователям (т.е. не делайте chmod каталога на 777). Вместо этого дайте отдельным пользователям/группам соответствующие разрешения на соответствующие каталоги.

Note: Если /mnt/data/torrents расположен на съемном устройстве, например, с записью /etc/fstab с опцией nofail, Transmission будет жаловаться, что не может найти ваши файлы. Чтобы исправить это, вы можете добавить RequiresMountsFor=/mnt/data/torrents в /etc/systemd/system/transmission.service.d/transmission.conf в разделе [Unit].

В качестве альтернативы можно добавить пользователя в группу transmission (#usermod -a -G transmission yourusername) и затем изменить разрешения на каталоги /var/lib/transmission и /var/lib/transmission/Downloads, чтобы разрешить доступ rwx членам группы transmission.

Белый список хостов

Если вы планируете обращаться к демону Transmission по сети, используя имя хоста сервера, вам необходимо добавить это имя хоста в rpc-host-whitelist в settings.json. В противном случае при обращении к серверу вы получите ошибку "421 Misdirected Request".

Если вы подключаетесь к демону, используя IP-адрес сервера, это не требуется.

Watch dir

Если вы хотите Автоматически добавлять .torrent файлы из папки, но обнаружите, что опции watch-dir и watch-dir-enabled, установленные в конфигурационном файле, не работают, вы можете запустить демон передачи с флагом -c /path/to/watch/dir.

Если вы используете systemd, отредактируйте блок transmission.service, как описано в разделе systemd (Русский)#Редактирование файлов юнитов.

Включение IPv6

По умолчанию демон прослушивает только соединения IPv4. Чтобы также прослушивать соединения IPv6, измените опцию rpc-bind-address на "::" в settings.json.

CLI примеры

Если вы хотите удалить все готовые торренты, вы можете использовать следующую команду с собственным именем пользователя и паролем:

# transmission-remote -n 'username:password' -l | grep 100% | awk '{print $1}'| paste -d, -s | xargs -i transmission-remote -t {} -r

Seed a torrent which has already been downloaded:

# transmission-remote [HOST] --torrent=example.torrent -a example.torrent --verify --download-dir=/dir/to/folder --start

Web интерфейс

GUI способ

После установки Transmission вы можете легко настроить веб-интерфейс. Все, что вам нужно сделать, это щелкнуть меню Правка и выбрать Параметры. Перейдите на вкладку Удалённое управление и включите Разрешить удаленный доступ.

Здесь у вас есть возможность изменить порт прослушивания по умолчанию с 9091.

Установите флажок Использовать аутентификацию и введите имя пользователя и пароль, чтобы можно было использовать аутентификацию.

Для повышения безопасности вы можете ограничить доступ с любого IP-адреса, включив опцию Разрешить доступ только данным IP-адресам.

Теперь вы готовы запустить веб-интерфейс, нажав на Открыть веб-клиент, что заставит ваш веб-браузер по умолчанию открыть его, или вручную достигнув http://TARGET_IP_ADDRESS:PORT с помощью любого поддерживаемого веб-браузера.

Если вы не изменили порт прослушивания, по умолчанию используется порт 9091. В этом случае ссылка http://localhost:9091

Примечание: transmission-cli должен быть установлен.

CLI способ

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

Тем не менее, вы можете указать все то, что вы видите в предыдущем разделе:

$ transmission-daemon --auth --username arch --password linux --port 9091 --allowed "127.0.0.1"

эквивалентно

$ transmission-daemon -t -u arch -v linux -p 9091 -a "127.0.0.1"

Дополнительная тема Web-интерфейса

Если пользовательский интерфейс веб-приложения по умолчанию кажется устаревшим и менее навороченным, чем ожидалось, попробуйте использовать https://git.eigenlab.org/sbiego/transmission-web-soft-theme для создания простой темы CSS.

https://github.com/ronggang/transmission-web-control также предоставляет полную замену, которая может сосуществовать с пользовательским интерфейсом по умолчанию.

Использование в качестве makepkg DLAGENT

Transmission можно использовать в качестве агента загрузки magnet для makepkg с помощью агента загрузки transmission-dlagentAUR.

Для Magnet URI необходимо изменить их префикс с magnet:? на magnet://.

Решение проблем

Невозможно получить доступ к демону по сети

Демон запускается после инициализации network.service. Однако, если вы включите службу dhcpcd, а не службу для конкретного устройства, например, dhcpcd@enp1s0.service, может случиться так, что Transmission будет запущен слишком рано и не сможет привязаться к сетевому интерфейсу. Таким образом, веб-интерфейс окажется недоступен. Возможным решением является добавление строки Requires в файл юнита:

/etc/systemd/system/transmission.service.d/fixdep.conf
[Unit]
Requires=network.target

Web-интерфейс недоступен

404: Not Found

Couldn't find Transmission's web interface files!

Users: to tell Transmission where to look, set the TRANSMISSION_WEB_HOME environment variable to the folder where the web interface's index.html is located.

Package Builders: to set a custom default at compile time, #define PACKAGE_DATA_DIR in libtransmission/platform.c or tweak tr_getClutchDir () by hand.

Даже если вы используете графический интерфейс, вам все равно необходимо установить transmission-cli, чтобы веб-интерфейс работал.

Failed to set send/receive buffer

Transmission может отобразить любое из этих сообщений в журнале при запуске:

UDP Failed to set receive buffer: requested 4194304, got 425984
UDP Failed to set send buffer: requested 1048576, got 425984

Это можно исправить, установив net.core.rmem_max=4194304 и net.core.wmem_max=1048576 с помощью sysctl.

Смотрите также