Transmission

提供: ArchWiki
移動先: 案内検索

Transmission は軽量でクロスプラットフォームの BitTorrent クライアントです。多くの Linux ディストリビューションでデフォルトの BitTorrent クライアントとして使われています。

インストール

公式リポジトリには複数の選択肢があります:

ノート:
  • GTK クライアントはデーモンに接続できません。デーモンを使いたい場合は、GUI を使いたいときは Qt パッケージを使用して、curses ベースの GUI を使いたいときは remote-cli パッケージを使用してください。
  • IPv6 経由でデーモンに接続することはできません [1]

GUI バージョンの設定

GUI の transmission-gtktransmission-qt はどちらもバックエンドデーモンを必要としません。

GUI バージョンは特に何も設定しなくても動作するようになっていますが、設定を変えたいと思うときもあるでしょう。GUI の設定ファイルのデフォルトパスは ~/.config/transmission です。

設定オプションのガイドが Transmission のウェブサイトに記載されています: https://github.com/transmission/transmission/wiki/Editing-Configuration-Files

GTK+ の一時的な見た目の修正

GTK+ 3.18 では、transmission-gtk で黒い縁がランダムで表示されることがあります。gtk.css を以下のように編集することで表示しないようにすることが可能です:

~/.config/gtk-3.0/gtk.css
.tr-workarea .overshoot,
.tr-workarea .undershoot { border: none; }

Transmission-daemon と CLI

transmission-cli のコマンド:

transmission-daemon: デーモンを起動。
transmission-remote: デーモンの CLI を起動。デーモンで実行したいコマンドを後に付けます。
transmission-remote-cli: デーモンの curses インターフェイスを起動 (transmission-remote-cli[リンク切れ: アーカイブ: aur-mirror] が必要です)。
transmission-cli (廃止): torrent を手動でダウンロードするための transmission のローカルインスタンスを起動。
transmission-show: 指定した torrent ファイルの情報を返します。
transmission-create: 新しい torrent を作成。
transmission-edit: トラッカーのアナウンス URL を追加・削除・置換。

デーモンの起動と停止

#ユーザーの選択 で説明されているように、transmission デーモンは以下の方法で実行できます:

  • systemd を使って transmission ユーザーとして transmission.service を起動・有効化 (#ユーザーの選択で書かれているようにしてユーザーは変更できます)。
  • 通常のユーザーで以下のコマンドを実行:
    $ transmission-daemon
    デーモンは以下のコマンドで停止できます:
    $ killall transmission-daemon

デーモンを起動すると transmission の設定ファイルが自動的に作成されます。#デーモンの設定を参照してください。

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 を実行したいということがあります。以下のスクリプトは接続を確認してから 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 (セキュリティが良くなるので推奨)。

デフォルトでは transmissiontransmission ユーザーとグループを作成してホームファイルを /var/lib/transmission/ に設定して transmission ユーザーで動作します。これによってセキュリティが守られ、transmission やダウンロードしたファイルは /var/lib/transmission/ の外側のファイルにアクセスできなくなります。transmission を設定・操作したりダウンロードファイルにアクセスするには (sudo を使用するなどして) "root" 権限が必要になります。

  • ユーザーの下で動かす

セットアップするには、サービスファイルを上書きしてユーザー名を指定してください:

/etc/systemd/system/transmission.service.d/username.conf
[Service]
User=your_username

デーモンの設定

デーモンを起動して設定ファイルを作成してください。

  • 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/wiki/Editing-Configuration-Files

ノート:
  • テキストエディタを使って設定を手動で編集したい場合、先にデーモンを停止してください。そうしないと Transmission の終了時に設定ファイルが上書きされてしまいます。
  • また、kill -s SIGHUP `pidof transmission-daemon` を実行することで SIGHUP によってデーモンから設定をリロードさせることが可能です。

transmission ユーザーで動作させる場合、適切なパーミッションで共有のダウンロードディレクトリを作成して transmission ユーザーとシステムユーザーの両方がアクセスできるように設定して、設定ファイルもそれにあわせて修正することを推奨します。例:

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

上記のコマンドを実行すると /mnt/data/torrents にシステムユーザーの facadetransmission ユーザーの属している transmission グループからアクセスできるようになります。どこからも読み書きできるように権限を設定することは極力控えてください (ディレクトリを 777chmod しないでください)。かわりに、適切なディレクトリに積雪なユーザー・グループのパーミッションを付与してください。

ノート: nofail オプションの付いた /etc/fstab エントリなど、リムーバルデバイスに /mnt/data/torrents を配置した場合、Transmission はファイルを見つけられないとエラーを吐きます。/etc/systemd/system/transmission.service.d/transmission.conf[Unit] セクションに RequiresMountsFor=/mnt/data/torrents を追加することで問題は解決します。

逆に、ユーザーを transmission グループに追加 (#usermod -a -G transmission yourusername) して、transmission グループのメンバーが読み書きできるように /var/lib/transmission/var/lib/transmission/Downloads ディレクトリのパーミッションを設定するという方法もあります。

監視ディレクトリ

フォルダから .torrent ファイルを自動的に追加したいのに、設定ファイルの watch-dirwatch-dir-enabled オプションが機能しない場合、-c /path/to/watch/dir フラグを付けて transmission デーモンを起動してみてください。

systemd を使用している場合、systemd#ユニットファイルの編集に記述されているようにして transmission.service ユニットを編集してください。

CLI サンプル

ダウンロード完了した torrent を全て削除したい場合、ユーザー名とパスワードを指定して以下のコマンドを実行します:

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

トラブルシューティング

ネットワーク経由でデーモンにアクセスできない

デーモンは network.service が初期化された後に起動します。しかしながら、(dhcpcd@enp1s0.service などのようにデバイスを指定せずに) dhcpcd サービスを有効にしている場合、Transmission の方が早く起動してネットワークインターフェイスが使えないという状況になることがあります。その場合、ウェブインターフェイスにアクセスできなくなります。解決するにはユニットの設定ファイルRequires 行を追加してください:

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

参照