# problems with rtorrent

## thomascirca

Hi all,

I want to use rtorrent on a ftp server that I just built. The idea is that someone can drag a .torrent file to the /home/transfers/ folder and rtorrent to automatically begin downloading it to the same folder. I installed it using the daemon flag (echo "net-p2p/rtorrent daemon" >> /etc/portage/package.use and then the line emerge -av net-p2p/rtorrent) except I forgo the flag the first time so I had to go back and add it in. 

My problem arises when I try to add rtorrent to the rc. It says "rtorrent not executable; skipping". I'm not sure what I did wrong. I manually made the rtorrent files in etc/init.d/rtorrent and /etc/conf.d/rtorrent (nano etc/init.d/rtorrent and nano  /etc/conf.d/rtorrent). Here's the content of each file:

rtorrent in conf.d:

# /etc/conf.d/rtorrent: config file for /etc/init.d/rtorrent

# Maximum and minimum number of peers to connect to per torrent.

min_peers = 40

max_peers = 100

# Same as above but for seeding completed torrents (-1 = same as downloading)

min_peers_seed = 10

max_peers_seed = 50

# Maximum number of simultanious uploads per torrent.

max_uploads = 10

# Global upload and download rate in KiB. "0" for unlimited.

download_rate = 0

upload_rate = 0

# Default directory to save the downloaded torrents.

directory = /home/transfers

# Default session directory. Make sure you don't run multiple instance

# of rtorrent using the same session directory. Perhaps using a

# relative path?

session = ./session

# Watch a directory for new torrents, and stop those that have been

# deleted.

schedule = watch_directory,5,5,load_start=/home/transfers/*.torrent

schedule = untied_directory,5,5,stop_untied=

# When the torrent finishes, remove torrent and move downloaded

# files to ~/Download/torrents/finished/.

on_finished = rm_torrent,"execute=rm,$d.get_tied_to_file="

on_finished = move_complete,"execute=mv,-u,$d.get_base_path=,/home/transfers/ ;d.set_directory=/home/transfers/" 

# Close torrents when diskspace is low.

schedule = low_diskspace,5,60,close_low_diskspace=1000M

# Stop torrents when reaching upload ratio in percent,

# when also reaching total upload in bytes, or when

# reaching final upload ratio in percent.

# example: stop at ratio 2.0 with at least 200 MB uploaded, or else ratio 20.0

schedule = ratio,60,60,"stop_on_ratio=200,200M,2000"

# Port range to use for listening.

port_range = 14379-14385

# Start opening ports at a random position within the port range.

port_random = no

# Check hash for finished torrents. Might be usefull until the bug is

# fixed that causes lack of diskspace not to be properly reported.

check_hash = no

# Set whetever the client should try to connect to UDP trackers.

use_udp_trackers = yes

# Alternative calls to bind and ip that should handle dynamic ip's.

schedule = ip_tick,0,1800,ip=rakshasa

schedule = bind_tick,0,1800,bind=rakshasa

# Encryption options, set to none (default) or any combination of the following:

# allow_incoming, try_outgoing, require, require_RC4, enable_retry, prefer_plaintext

#

# The example value allows incoming encrypted connections, starts unencrypted

# outgoing connections but retries with encryption if they fail, preferring

# plaintext to RC4 encryption after the encrypted handshake

#

encryption = allow_incoming,enable_retry,prefer_plaintext

# Enable DHT support for trackerless torrents or when all trackers are down.

# May be set to "disable" (completely disable DHT), "off" (do not start DHT),

# "auto" (start and stop DHT as needed), or "on" (start DHT immediately).

# The default is "off". For DHT to work, a session directory must be defined.

# 

dht = auto

# UDP port to use for DHT. 

# 

dht_port = 6881

# Enable peer exchange (for torrents not marked private)

#

peer_exchange = yes

#

# Do not modify the following parameters unless you know what you're doing.

#

# Hash read-ahead controls how many MB to request the kernel to read

# ahead. If the value is too low the disk may not be fully utilized,

# while if too high the kernel might not be able to keep the read

# pages in memory thus end up trashing.

hash_read_ahead = 10

# Interval between attempts to check the hash, in milliseconds.

hash_interval = 100

# Number of attempts to check the hash while using the mincore status,

# before forcing. Overworked systems might need lower values to get a

# decent hash checking rate.

hash_max_tries = 10

----------

## Bialy

Which version of rtorrent do you have?

First, try change start section in /etc/init.d/rtorrentd like this:

```
start() { 

        PWHOME="$(getent passwd $USER | awk -F: '{ print $6 }')" 

        ebegin "Starting rtorrent" 

        env TERM="xterm" \ 

        start-stop-daemon --start --chuid $USER \ 

        --env HOME="${PWHOME:-/home/$USER}" \ 

        --exec /usr/bin/screen -- -dmS rtorrentd rtorrent 

        eend $? 

}
```

Second, in /etc/conf.g/rtorrentd I have only:

```
USER="User_Name"
```

Third, all rtorrent configuration I have in /home/User_Name/.rtorrent.rc

----------

## Zhaozhou

You could just symlink /etc/runlevels/default/rtorrent => /etc/init.d/rtorrent. Granted, rc-update should work. And AFAIK, the 'daemon' flag should create the init.d-script for you.

----------

## thomascirca

 *Bialy wrote:*   

> Which version of rtorrent do you have?
> 
> First, try change start section in /etc/init.d/rtorrentd like this:
> 
> ```
> ...

 

I changed the start section and the user name and I'm still not getting anywhere. My version is 0.8.5/0.12.5. What should I have done to properly install it? First I emerged it, realized I didn't have the daemon flag set so I re-emerged, wrote the /etc/conf.d/rtorrent file, then wrote the /etc/init.d/rtorrentd file. What did I do wrong? Shouldn't it make a init.d file for me?

----------

## Bialy

Very strange.

```
eix rtorrent

[I] net-p2p/rtorrent

     Available versions:  ~0.8.3 0.8.4-r1 0.8.5 {daemon debug ipv6 xmlrpc}

     Installed versions:  0.8.5(10:27:24 24.11.2009)(daemon xmlrpc -debug -ipv6)
```

```
cat /etc/init.d/rtorrentd

#!/sbin/runscript

# Copyright 1999-2008 Gentoo Foundation

# Distributed under the terms of the GNU General Public License v2

# $Header: /var/cvsroot/gentoo-x86/net-p2p/rtorrent/files/rtorrentd.init,v 1.3 2009/07/28 21:52:33 robbat2 Exp $

depend() {

        need net.eth0 iptables

}

start() {

        PWHOME="$(getent passwd $USER | awk -F: '{ print $6 }')"

        ebegin "Starting rtorrent"

        env TERM="xterm" \

        start-stop-daemon --start --chuid $USER \

        --env HOME="${PWHOME:-/home/$USER}" \

        --exec /usr/bin/screen -- -dmS rtorrentd /usr/bin/rtorrent

        eend $?

}

stop() {

        ebegin "Stopping rtorrent"

        start-stop-daemon --stop --signal 2 --name rtorrent

        eend $?

}
```

```
cat /etc/conf.d/rtorrentd

USER="User_Name"
```

All works fine.

Do you use:

```
etc-update
```

  :Question: 

 *thomascirca wrote:*   

> Shouldn't it make a init.d file for me?

 Yes, it should.

----------

