Installation Guide¶
Note that this cannot be a Linux shell 101, so if the terminology and commands that follow are new for you, refer to the usual sources like The Debian Administrator’s Handbook, The Linux Command Line, and The Art of Command Line to get yourself acquainted.
General Installation Options¶
See Build from Source on using the provided build.sh
script,
which will install rTorrent-PS into ~/.local/rtorrent/‹version›
.
The stable rTorrent version 0.9.6 is built by default, but 0.9.4 is also supported (but not tested anymore). And not all patches are applied equally, depending on whether they’re needed, or applicable at all.
After installation, make sure to read through the Setup & Configuration chapter in order to get the display-related changes set up correctly, since on many machines this requires some special configuration of your terminal.
Also take note of the pimp-my-box project that does it all (almost) automatically for Debian-type systems (and is the preferred way to install on those systems). The automation is done using Ansible, which implies you can easily admin several systems with it, and also maintain them – so it’s not a one-shot installation bash script creating a setup that can never be changed again.
Note
If you also install the PyroScope command line utilities, do not forget to activate the extended features available together with rTorrent-PS, as mentioned in the Configuration Guide. Starting with version 1.1, that activation is automatic.
OS-Specific Installation Options¶
Installation Using Debian Packages¶
For a limited set of Debian-derived platforms, there are packages
available that contain pre-compiled binaries (and only those, no
configuration or init scripts). You can download and install such a
package from Bintray —
assuming one is available for your platform. The packages install the
rTorrent-PS binary including some libraries into /opt/rtorrent
.
Example on Ubuntu Xenial:
version="0.9.6-PS-1.1~xenial_amd64"
bintray="https://bintray.com/artifact/download/pyroscope"
cd /tmp
curl -Lko rt-ps.deb "$bintray/rtorrent-ps/rtorrent-ps_$version.deb"
dpkg -i rt-ps.deb
After installation, you must provide a configuration file
(typically located in ~/.rtorrent.rc
or ~/rtorrent/rtorrent.rc
).
To start rTorrent-PS, always use the provided start script,
which takes care of some technical details like settings
the current working directory correctly.
It also looks for the rTorrent binary at well-known places,
including the /opt
path the DEB package contains.
Note
You can safely install the package and test it
out in parallel to an existing installation, just use the absolute path
/opt/rtorrent/bin/rtorrent
to start rTorrent.
Your (session) data is in no way affected,
as long as you normally run a 0.9.x version.
Installation on Arch Linux¶
There are now two options contributed by xsmile
for installing on Arch via pacman
.
The
pkg2pacman
command of The Build Script creates a package similar to the Debian one, embedding a tested version combination of dependencies. See Building the Debian Package for general instructions on building that variant, and usepkg2pacman
instead ofpkg2deb
.Or you make your life easier and just use
./build.sh docker_arch
to build a pacman package, see Using Docker for Building Packages for more.The “Arch User Repository” (AUR) PKGBUILDs maintained by @xsmile. These use a standard Arch build process, but include the usual rTorrent-PS patches.
There is one package for
libtorrent-ps
, and one forrtorrent-ps
, and both take their dependencies from the normal OS packages:
Before building binaries or packages yourself,
install these packages on top of the base
and base-devel
groups
(list is user-provided, report any problems):
pacman -S \
lsb-release subversion git time lsof tmux wget \
python2-setuptools python2-virtualenv python2 python2-cffi \
cppunit libxml2 libxslt
There is also the
rtorrent-pyro-git
AUR package.
It is not the same as you get from using build.sh
,
and not recommended anymore by this project, given the new options above.
If you have problems with building or installing any of these packages, contact their maintainer.
Homebrew Tap for Mac OSX¶
See the homebrew-rtorrent-ps repository for instructions to build rTorrent-PS and related dependencies on Mac OSX.
Right now, it is not maintained by anyone.
Manual Turn-Key System Setup¶
Introduction¶
The following shows installation instructions for a working rTorrent
instance in combination with PyroScope from scratch, on Debian and
most Debian-derived distros. Note that the pimp-my-box project does
all this automatically for you, and is the tested and maintained way of
installation — this page is just a reference of the core installation steps
(if you run into problems, join the freenode
IRC channel for help).
While the package names and the use of apt-get
are somewhat
dependent on Debian, the Preparatory Steps commands which are executed
under root
are similar for other distributions, and the compilation
instructions should work as-is on practically any Linux and (F)BSD.
These instructions are explicitly known to work on Debian Jessie + Stretch, and
Ubuntu Xenial + Bionic.
The whole procedure takes 15 – 20 minutes, including full compilation from source. Subtract about 5 minutes if you install rTorrent via a package. This on a quad-core 3.3 GHz Xeon CPU with 32 GiB RAM, and assuming you are familiar with the procedure, or just blindly paste the command blocks that follow. Add plenty of reading time when doing your first setup, and it’s still under an hour.
Note
If you don’t understand a word of what follows, hit The Debian Administrator’s Handbook so then you do.
Non-packaged software is installed exclusively into your normal user
account (home directory), i.e. this description works OK for non-root users as long as
the required packages are installed before-hand. The default install
location is ~/.local/rtorrent/«version»
, which means you can easily
delete any installed software, and also run several versions
concurrently.
For shared multi-user setups, this works fine also — compile and install
to /opt/rtorrent
using ./build.sh install
, then provide access
to all users by calling chmod -R go+rX /opt/rtorrent
. Perform the
steps from PyroScope Installation onwards for each user repeatedly, so
they get their own instance.
Important
Most of the command blocks further below can be copied &
pasted wholesale into a terminal. Note that bash
here documents
(... <<'EOF'
) MUST be pasted at once, up to and including the
line having a single EOF
on it.
Warning
If you have an existing /usr/local
installation of
rTorrent / libtorrent, it is very prudent to make uninstall
that before
compiling another version. Those might prevent successful compilation
if your lookup paths somehow bring those versions to the front.
In the same vein, remove any packages of
libtorrent
and rtorrent
you have on your machine. The build
instructions on this page then ensure that it is no problem to have
several versions concurrently on your machine.
If anything goes wrong, you can easily reinstall the packages provided by your OS.
Preparatory Steps¶
Setting Up Locales¶
Commonly locales are already set up for you, but bare-bones installs often come without locale support, which rTorrent-PS absolutely requires due to its use of Unicode characters.
This ensures at least the common en_US.UTF-8
one is available:
apt-get install locales
test "$LANG" = "en_US.UTF-8" \
|| { echo "en_US.UTF-8 UTF-8" >>/etc/locale.gen ; locale-gen --lang en_US.UTF-8; }
Installing Build Dependencies¶
You need to install a few required packages — and no, this
is not optional in any way. These are the only steps that must be
performed by the root
user (i.e. in a root shell, or by writing
sudo
before the actual command):
apt-get install sudo lsb-release build-essential pkg-config \
subversion git time lsof binutils tmux curl wget \
python-setuptools python-virtualenv python-dev \
libssl-dev zlib1g-dev libncurses-dev libncursesw5-dev \
libcppunit-dev autoconf automake libtool \
libffi-dev libxml2-dev libxslt1-dev
Note that you can always show Debian’s current build dependencies for rTorrent using this command:
echo $(apt-cache showsrc rtorrent libtorrent-dev | \
grep Build-Depends: | cut -f2 -d: | tr ",)" " \\n" | cut -f1 -d"(")
On Fedora (26), use this (list is user-provided, report any problems):
dnf install -y \
redhat-lsb-core make autoconf automake libtool gcc gcc-c++ pkgconf-pkg-config \
subversion git time lsof binutils tmux curl wget which \
python-setuptools python-virtualenv python-devel python2-cffi \
openssl-devel zlib-devel ncurses-devel cppunit-devel libxml2-devel libxslt-devel
For Arch, see the pacman
command in Installation on Arch Linux.
Optional root
Setup Steps¶
If you’re security-conscious, you can create a rtorrent
user and do
all the following setup steps under that new account. Doing that ensures
that there is no way, on a properly maintained ∗nix system, for the
build and setup scripts to break either your machine or your normal user
account.
groupadd rtorrent
useradd -g rtorrent -G rtorrent,users -c "rTorrent client" \
-s /bin/bash --create-home rtorrent
chmod 750 ~rtorrent
su - rtorrent -c "mkdir -p ~/bin"
rTorrent Installation¶
Install via Debian Packages¶
See Installation Using Debian Packages above for details. After adding the right package for your platform, skip the next section and continue with PyroScope Installation.
Note
During rTorrent instance setup, do not forget to change the
value of pyro.extended
to 1 so the extended features are actually accessible!
Starting with version 1.1, that activation is automatic.
Build from Source¶
Get the build script via direct download or a git clone
,
and call it with the all
parameter as shown below;
the script will then download, build, and install all necessary
components, storing temporary files in the current directory. You can
pass the clean_all
parameter to remove those temporary files later
on, after everything works. Make sure you followed the
Preparatory Steps in the section further up on this page.
Note
Be sure to select the version of rTorrent you want to
compile, as determined by the settings at the start of the script. If
you have no preference otherwise, stick to the default set in the
script. Note that such a choice is sticky once you performed the
download
step, until you call clean_all
again.
All installations go to ~/.local/rtorrent/«version»/
, and disturb
neither any host setup nor another version of rTorrent you’ve installed
the same way.
# Run this in your NORMAL user account, or as ‘rtorrent’!
mkdir -p ~/src/; cd $_
git clone https://github.com/pyroscope/rtorrent-ps.git
cd rtorrent-ps
# Use this if you have the resources, adapt for the number of cores
# and the amount of free memory you have available.
export MAKE_OPTS="-j4"
# Check the VERSION SELECTION at the top of the script, and edit as needed
nice time ./build.sh all # build 'deps', 'vanilla', and then 'extended'
Note that the unpatched version is still available as
rtorrent-vanilla
, and you can simply switch by changing the symlink
in ~/bin
, or by calling either version with its full path.
See the User’s Manual for more details on the changes applied.
The Build Script describes more use-cases like building in Docker,
or an incremental update after a git fetch
with new rTorrent-PS changes.
Note
If you use the configuration as outlined below, do not forget
to change the value of pyro.extended
to 1 in case you want to unlock
the additional features of the extended version!
Starting with version 1.1, that activation is automatic.
PyroScope Installation¶
The installation of pyrocore
is done from source, see its manual for additional details.
# Run this in your NORMAL user account, or as ‘rtorrent’!
mkdir -p ~/bin ~/.local
git clone "https://github.com/pyroscope/pyrocore.git" ~/.local/pyroscope
# Pass "/usr/bin/python2", or whatever else fits, to the script as its
# 1st argument, if the default of "/usr/bin/python" is not a suitable
# version.
~/.local/pyroscope/update-to-head.sh
# Check success
exec $SHELL -l
pyroadmin --version
The last call’s output should look similar to this:
$ pyroadmin --version
pyroadmin 0.6.1.dev20180601 on Python 2.7.13
rTorrent Instance Setup¶
To be able to use several different instances of rTorrent (e.g. a second
one for experimental configuration changes), this setup doesn’t use
~/.rtorrent.rc
at all, but keeps everything in one place under the
~/rtorrent
directory. If you change the assignment to RT_HOME
,
you can place it anywhere you like, or create alternate instances with
ease.
rTorrent Startup Script¶
First, create the instance’s directories and a start script:
# Run this in your NORMAL user account, or as ‘rtorrent’!
export RT_HOME="${RT_HOME:-$HOME/rtorrent}"
mkdir -p $RT_HOME; cd $_
mkdir -p .session log work done watch/{start,load,hdtv,cleaned}
cp ~/.local/pyroscope/docs/examples/start.sh ./start
chmod a+x ./start
Note that this script is needed on modern systems, else the special
installation layout allowing concurrent use of several versions
will not work as expected.
So always call that script, and not rtorrent
directly.
Tip
Safely storing downloads on a mounted device
In case your data resides on a mounted device (e.g. an external USB disk),
add a check to the start script that it is actually present.
To do that, create a .mounted
file in the root of your device,
and exit
the start script if not found.
For your convenience, the code for that is already there
at the top of start
, but commented out.
If you don’t check, that might lead to rehashing several terabytes of data, because rTorrent will mark the downloads stored on an absent device as broken (which they are without their data).
rTorrent Configuration¶
Next, a not-so-simple rtorrent.rc is created. It already provides everything needed to use all features of the PyroScope tools.
Note that built-in pyrocore
settings are read from a provided include file,
that in turn loads snippets from the ~/.pyroscope/rtorrent.d
directory.
The same mechanism is used in the main rtorrent.rc
file,
so you can easily add your own customizations in new rtorrent.d/*.rc
files.
To get all this set up for you, call this provided script:
# Run this in your NORMAL user account, or as ‘rtorrent’!
~/.local/pyroscope/src/scripts/make-rtorrent-config.sh
After this, you should check at
least the rtorrent.d/20-host-var-settings.rc
file and adapt the
values to your environment and preferences. Consider copying the commands
for the settings you want to adapt to the _rtlocal.rc
file – read on as to why.
The _rtlocal.rc
file is the place for some simple custom settings,
like additional resource limits or changing default values.
The make-rtorrent-config.sh
script does not copy that optional file.
So create it yourself, and pick what you like from the example _rtlocal.rc,
e.g. the logging configuration.
The script can be called again to get updates from GitHub,
but will overwrite all standard configuration files with their new version.
To safely customize configuration,
provide your own version of standard files under a new name,
and list the replaced files in the rtorrent.d/.rcignore
file.
For anything special not covered by standard configuration,
add your own additional files,
or as mentioned use the _rtlocal.rc
file.
Example for a ~/rtorrent/_rtlocal.rc
file:
# Reduce retention period of uncompressed logs
pyro.log_archival.days.set = 1
Note
In rtorrent.rc
, change the value of pyro.extended
to 1
so the extended rTorrent-PS features are actually accessible!
Starting with version 1.1, that activation is automatic.
CLI Tools Configuration¶
This adds a minimal configuration, so that the defaults are taken from the installed software, which makes later updates a lot easier.
# Run this in your NORMAL user account, or as ‘rtorrent’!
pyroadmin --create-config
cat >~/.pyroscope/config.ini <<EOF
# PyroScope configuration file
#
# For details, see https://pyrocore.readthedocs.org/en/latest/setup.html
#
[GLOBAL]
# Location of your rTorrent configuration
rtorrent_rc = ~/rtorrent/rtorrent.rc
# XMLRPC connection to rTorrent
scgi_url = scgi://$HOME/rtorrent/.scgi_local
[FORMATS]
filelist = {{py:from pyrobase.osutil import shell_escape as quote}}{{#
}}{{for i, x in looper(d.files)}}{{d.realpath | quote}}/{{x.path | quote}}{{#
}}{{if i.next is not None}}{{chr(10)}}{{endif}}{{#
}}{{endfor}}
movehere = {{py:from pyrobase.osutil import shell_escape as quote}}{{#
}}mv {{d.realpath | quote}} .
# Formats for UI commands feedback
tag_show = {{#}}Tags: {{ chr(32).join(d.tagged) }} [{{ d.name[:33] }}…]
[SWEEP]
# Settings for the "rtsweep" tool
# Use the rules from the named [SWEEP_RULES_‹name›] sections
default_rules = builtin, custom
# Minimum amount of space that must be kept free (adds to the space request)
space_min_free = 10g
[SWEEP_RULES_CUSTOM]
# Rules to manage disk space
#
# Rules are ordered by the given priority. You can disable built-in rules
# found in the [SWEEP_RULES_BUILTIN] section by changing "default_rules"
# in the [SWEEP] section. Use "rtsweep show" to list active rules.
#
# Default sort order for each rule is by "loaded" date (oldest first).
# Note that active, prio 3, and ignored items are protected!
#
# If the active rules fail to provide enough space, as much of the oldest
# items as needed are removed.
# Seeded and bigger than 500M after 7 days, inactive and big items first
seeded7d.prio = 910
seeded7d.sort = active,-size
seeded7d.filter = ratio=+1.2 size=+500m loaded=+5d
[ANNOUNCE]
# Add alias names for announce URLs to this section; those aliases are used
# at many places, e.g. by the "mktor" tool and to shorten URLs to these aliases
# Public / open trackers
PBT = http://tracker.publicbt.com:80/announce
udp://tracker.publicbt.com:80/announce
PDT = http://files2.publicdomaintorrents.com/bt/announce.php
ArchOrg = http://bt1.archive.org:6969/announce
http://bt2.archive.org:6969/announce
OBT = http://tracker.openbittorrent.com:80/announce
udp://tracker.openbittorrent.com:80/announce
Debian = http://bttracker.debian.org:6969/announce
Linux = http://linuxtracker.org:2710/
EOF
Read the pyrocore Configuration Guide for more information regarding this file. You can come back to customizing it later, your system will work fine with the above default.
First Start and Testing¶
tmux Configuration¶
We spruce up tmux
a bit using a custom configuration, before we
start it the first time. This also makes it more homey for long-time
screen
users:
# Run this in your NORMAL user account, or as ‘rtorrent’!
cp --no-clobber ~/.local/pyroscope/docs/examples/tmux.conf ~/.tmux.conf
Starting a tmux Session¶
You’re now ready to start your shiny new rTorrent-PS, so just do it:
# Run this in your NORMAL user account, or as ‘rtorrent’!
tmux -2u new -n rT-PS -s rtorrent "~/rtorrent/start; exec bash"
The exec bash
keeps your tmux
window open if rtorrent
exits,
which allows you to actually read any error messages in case it ends unexpectedly.
If such an error occurs (e.g. about your terminal not providing enough colors),
check out Setup & Configuration and the Trouble-Shooting Guide for a fix.
After that, test the XMLRPC connection by using this command in a new tmux
window:
# Open a new tmux terminal window by pressing "Ctrl-a" followed by "c", and then...
rtxmlrpc system.time_usec
You can of course add more elaborate start scripts,
like a cron watchdog, init.d scripts, or a systemd unit.
Put the above tmux
call into ExecStart
,
and use … new -d …
to run a detached session
– see the rTorrent wiki for detailed examples.
Continue with reading the pyrocore User’s Manual to get acquainted with the CLI tools, and Setup & Configuration for providing the necessary configuration regarding your terminal.