Showing posts with label rtorrent. Show all posts
Showing posts with label rtorrent. Show all posts

Friday, 3 July 2009

Compile and upgrade or install libtorrent-0.12.4 and rtorrent-0.8.4

Chose a directory where can download the sources to. For instance

/usr/src

we do not need to create this one, as it should already exist.

# mkdir /usr/src


next, get the sources for libtorrent and rtorrent:

# cd /usr/src
# wget http://libtorrent.rakshasa.no/downloads/libtorrent-0.12.4.tar.gz
# wget http://libtorrent.rakshasa.no/downloads/rtorrent-0.8.4.tar.gz

Unpack both archives with

# tar xvzf libtorrent-0.12.4.tar.gz
# tar xzvf rtorrent-0.8.4.tar.gz

If you have already compiled and installed rtorrent before and created the symlinks according to my earlier tutorial, we will need to remove the symlinks and create new ones pointing to the new sources:

# rm rtorrent
# rm libtorrent

# ln -s libtorrent-0.12.4 libtorrent
# ln -s rtorrent-0.8.4 rtorrent

After that, enter the respective directories and run ./autogen.sh, then configure, the make. Before you run make install, make sure you have quit any running instances of rtorrent.

cd to libtorrent, later to rtorrent and run:
# ./autogen.sh
# make
# make install

After the long compiling process we want to make sure, rtorrent is actually working. run rtorrent

# rtorrent

Should you get an error message like this:

error while loading shared libraries: libtorrent.so.11: cannot open shared object file: No such file or directory


Run ldconfig to create and cache the links.

# ldconfig

This should solve the problem.

Saturday, 13 June 2009

compile and install current rtorrent for debian lenny on NSLU2

A solution without using subversion. For subversion we would only need the client, but you only get the full package from the repositories, together with all dependencies we would quickly reach > 50 MB. It's just too much for my little slug (1 GB USB-Flash Stick).

Well,

first of all, we create a directory in /usr/src named rtorrent. This is where we will download the sources to and where we are going to decompress the archives.:

# mkdir /usr/src/rtorrent
# cd /usr/src/rtorrent

We get the sources (note that the numbers in the filenames will change with new versions. It's best you verify at http://libtorrent.rakshasa.no/wiki.

# wget libtorrent-0.12.2.tar.gz
# wget rtorrent-0.8.2.tar.gz

assuming a fresh basic install of debian lenny, we need:

# apt-get install build-essential
# apt-get install libtool
# apt-get install automake autoconf
# apt-get install libsigc++-2.0-dev
# apt-get install pkg-config
# apt-get install libssl-dev
# apt-get install libcurl3-dev [libcurl4-openssl-dev]
# apt-get install libncurses5 libncurses5-dev


now we unzip the sources:

# tar xvzf libtorrent-0.12.2.tar.gz
# tar xzvf rtorrent-0.8.2.tar.gz

create a symbolic link to the cryptic extracted directories:

# ln -s libtorrent-0.12.2 libtorrent
# ln -s rtorrent-0.8.2 rtorrent


then move up to the libtorrent directory:

# cd libtorrent


I got an error like "make[4]: *** [file_list_iterator.lo] Error 1" when compiling with make. Fortunately, this is known and can be easily fixed by applying the libtorrent-gcc43-v2.patch before compiling.

So, when in the libtorrent source directory, wget the patch

# wget http://libtorrent.rakshasa.no/raw-attachment/ticket/1266/libtorrent-gcc43-v2.patch

and apply it with

# patch -p1 < libtorrent-gcc43-v2.patch

next, we start the usual procedure (cf. here). Before we begin we open a screen session, so that we don't need to stay connected to the NSLU2 the whole time. If you've not already done so, install screen (you will probably use it with rtorrent anyways).

# apt-get install screen

Then, start a new screen session. We name it rtorrcompiling (chose whatever you want).

# screen -S rtorrcompiling.

Now do:

# ./autogen.sh
# ./configure
# make

note that make is going to take several hours (in my case more than 6). Sigh. You can detach the screen with CTRL-A d. Logout, power off your PC (not the NSLU ;)), get a coffee or go to sleep. Or you can take a look how hard your slug is working by

# top

Exit top by pressing q.

If you want to check how far make got, login to your slug and resume the screen session with

# screen -r

When make is done, go on with

# make install

and we're done with libtorrent. Next is rtorrent:

# cd ..
# cd rtorrent
# wget http://libtorrent.rakshasa.no/raw-attachment/ticket/1554/rtorrent-0.8.2-g%2B%2B4.3.patch
# patch -p1 < rtorrent-0.8.2-g++4.3.patch
# ./autogen.sh
# ./configure
# make
# make install

That's it.
Please leave a comment if this worked or not worked for you. Thanks.

Wednesday, 7 May 2008

rtorrent finally running stably on Debian NSLU2





I am currently downloading the actual ubuntu-distro with 1400 KB/s along with to other small test torrents to make sure it really works. And it does.

After all it can be said the solution to the crash issue was almost too simple:

Responsible for rtorrents crash behaviour was the oom-killer (cf. earlier posts) that is shipped with debian etch.
However, uprading to lenny solves this issue.

That can be done by simply typing:

apt-get update
apt-get dist-upgrade


Before Upgrading, make sure you have a backup at hand:
sudo cat /dev/mtdblock* > backup.img
...and store it to a safe location. With this precaution you can always switch back to a working system by putting the NSLU2 into upgrade mode and flashing the backup.img to it with upslug2.

The upgrade may take a considerable time.

Note that I crashed my Debian NSLU2 by doing this because the "new initramfs-tools in testing (version 0.92) generates a ramdisk that does not boot correctly on the NSLU2 - it makes your system unbootable (see bug #478236)."
As mentioned, the upgrade is currently not safe.

As I crashed my NSLU2 and had no backups but also no important data on it, I snapped at the chance and reinstalled my system with the debian 5.0 beta 1 (unoffical), see here.

If you have any questions, leave a comment!

UPDATE July 28: Upgrading via apt-get dist-upgrade should be safe now.

Tuesday, 11 March 2008

the rtorrent-on-debian-NSLU2-crash-issue

I'm still having problems with rtorrent on my NSLU2. It keeps crashing after two hours or so no matter what I do ([1], [2]) with .rtorrenct.rc.

However, yesterday it came across my mind, the actual problem (which is resources) could be connected to the user with whom I start rtorrent. rtorrent does not run as root but as a user with limited privileges on my NSLU2. My thinking was that Linux allocates more resources to root than to inferior users.

So I tried running rtorrent with screen and root. But still, not really a change.

I'm still wondering about the positive reports on rtorrent with the NSLU2 that e.g. google brings forward. When I asked once a forum user about how was running rtorrent, he basically replied:

"Well, it never crashed, but I've never downloaded anything with it".

So, do the positive reports only come from users who do not actually use their rtorrent?

Anyways, I'm running out of ideas on how to get rtorrent running stably. The ultima ratio seems to be to start with a fresh installation of debian...
argh.

Friday, 15 February 2008

rtorrent on Debian NSLU2 unstable - Part 2

In order to find out the number of peers the nslu2 can handle i adjusted max_peers in ~/.rtorrent.rc to 50. It was running stably with the value of 40 before.
Sadly I had to find out, that with "50" rtorrent got killed again. So, I'll stick with "40" for now.

Wednesday, 13 February 2008

rtorrent on debian NSLU2

A few days ago I installed rtorrent on my debian slug. Rtorrent presents itself to be installed on the NSLU2 because of its
"[...] focus on high performance and good code.".

Therefore I expected a low memory and cpu footprint.
Furthermore, rtorrent makes use of ncurses and is therefore predestined to be detached with 'screen'.

Unfortunenately it turned out that the rtorrent-process (both libtorrent-0.12.0.0 with rtorrent-0.8.0 (unstable) and ibtorrent-0.11.9 with rtorrent-0.7.9.tar.gz) got regularly (every 2 hours or so) killed.

Dmesg in both cases:
Out of memory: Killed process 9754 (rtorrent).

Obviously, rtorrent consumes too much of the little RAM the NSLU2 has to offer. Being somewhat contrary to the quotation cited above...

In addition, it took rtorrent ages to hash a new torrent or to rehash a torrent when rtorrent got killed.

The hash problem could quite easily be resolved. With a little help from here all that had to be done was adjusting the hash parameters in ~/.rtorrent.rc:


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

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

# 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 = 3


The one problem remaining was the crashes. To cut a long story short: today rtorrent runs stably on my NSLU2. The only downer is with my current configuration I can only download one torrent at a time. Elsewise it gets killed again.


Here is my current .rtorrent.rc. The trigger to avoid the kills was adjusting the peers settings. Default was a much higher number (I don't remember.. ;)). I will continue adjusting it step by step to higher values to establish what I can expect from my NSLU2.


min_peers = 1
max_peers = 40

min_peers_seed = 1
max_peers_seed = 10

max_uploads = 2

download_rate = 0
upload_rate = 50

directory = ./dl-torrents
session = ./session

# Watch a directory for new torrents, and stop those that have been
# deleted.
schedule = watch_directory,5,5,load_start=/home/torrent/torrents/*.torrent
schedule = untied_directory,5,5,stop_untied=

# Close torrents when diskspace is low.
schedule = low_diskspace,5,60,close_low_diskspace=100M
schedule = ratio,60,60,"stop_on_ratio=120,200M,150"

port_range = 30890-30998
port_random = yes

check_hash = no

use_udp_trackers = yes

# this setting remains from the actual (unstable)
# beta or alpha from rtorrent with dht tracker support.
# Thus commented out because I use a previous version
# dht_port = 30999

peer_exchange = yes

# here go the settings for faster hashing
hash_read_ahead = 5
hash_interval = 10
hash_max_tries = 3