Version 22 (modified by Waldorf, 12 years ago) (diff)

new chapter "Environment Variables" - part 2 "Debug"

Building Transmission

If you are searching for a HOWTO, covering a specific desitribution or device (NAS, router, ...), have a look at the Building HOWTOs page

Getting the Source

Source code for official releases can be found on our download page.

Automated source code tarballs including the newest code are now available, too!

If you want to check out the source code yourself from svn, open a terminal window and type:

$ svn co svn:// Transmission

On Mac OSX

Transmission has an Xcode project file (Transmission.xcodeproj) for building in Xcode. Make sure you have this software:

  • Mac OS X 10.5 or newer
  • Mac OS X 10.5 SDK
  • Xcode 3.1.1 or newer

(Found on your OSX installation disk, or from the Apple Developer website)

If building from source is too daunting for you, check out the nightly builds.
(Note: These are untested snapshots. Use them with care.)

On Unix


Ubuntu users: The packages you need are: build-essential automake autoconf libtool pkg-config libcurl4-openssl-dev intltool libxml2-dev libgtk2.0-dev libnotify-dev . After you install those you can skip this section.

If this is your first time compiling on Unix, you'll need a few basic tools:

  • gcc
  • autoconf 2.54 or newer
  • libtool
  • automake 1.9 or newer
  • gettext 0.14.1 or newer
  • intltool 0.23 or newer

Once you've got the basics out of the way, here are the libraries that Transmission needs to have in order to build:

  • OpenSSL 0.9.8 or newer
  • libcurl 7.15.0 or newer
  • GTK+ 2.6 or newer (only needed by the GTK+ gui)
  • libnotify 0.0.4 (optional, and only needed by the GTK+ gui)
  • DBUS 0.70 (optional, and only needed by the GTK+ gui)

RPM users: you'll also need to install the corresponding -devel packages.

Building from a tarball

$ tar xvjf transmission-1.32.tar.bz2
$ cd transmission-1.32
$ ./configure -q && make -s
$ su (if necessary for the next line)
$ make install

Building from an SVN snapshot

First Time

$ svn co svn:// Transmission
$ cd Transmission
$ ./ && make -s
$ su (if necessary for the next line)
$ make install


$ cd Transmission
$ make clean
$ svn up
$ make -s
$ su (if necessary for the next line)
$ make install


The transmission ./configure (or ./ script allows you to switch on/off certain parts. To use these, you'll either use --enable-* or --disable-*. eg. To disable the GTK client: --disable-gtk.

The switches that are available are:

  • gtk = enables GTK+ client (default )
  • libnotify = enables lib notify (default)
  • cli = enables cli client (default)
  • daemon = enables transmission-daemon and transmission-remote client (default)
  • mac = enables Mac client (default, if possible)
  • wx = enables wxWidgets client (unsupported)
  • beos = enables beos client (unsupported)

Environment Variables

Transmission listens to a few environment variables to know where to keep the configuration files and controlling debug output.


Default location for these variables can be found on the Configuration Files page.

Transmission Specific

  • TRANSMISSION_HOME = if set, this will override the default configuration folder's location
  • TRANSMISSION_WEB_HOME = if set, this will override the default Web UI folder's location
  • HOME (optional) = if set, this will override where Transmission thinks your home directory is

If TRANSMISSION_HOME isn't set, HOME is used to determine the location of the configuration folder's location. Also, it is used for the default download folder, unless specified otherwise in the preferences. ($HOME/Downloads/)

XDG Environment Variables

The XDG Base Directory Specification provides some common paths in user's home to store personal application configurations, or, using their own words "defines where these files should be looked for by defining one or more base directories relative to which files should be located". (Linux / GTK only)

  • XDG_CONFIG_HOME = specifies where your per-user configuration files should be stored (default: $HOME/.config/)
  • XDG_DATA_HOME = specifies where your per-user data files should be stored (default: $HOME/.local/share/)
  • XDG_DATA_DIRS = specifies a preference-ordered list of directories to search for data files in addition to the XDG_DATA_HOME (separated by a :)

Normally, these should not be changed, as they are not Transmission specific. If you need to override the default configuration folder's location, use the TRANSMISSION_HOME instead. The XDG_DATA_HOME and XDG_DATA_DIRS are only used to search for the Web UI.


These environment variables let you control the debug output of Transmission.

    • = If set to 1, It'll output debug messages to stdout
    • = If set to 2, It'll output debug messages to stderr
  • TR_CURL_VERBOSE = if set to nonzero, it'll spew libcurl messages to stderr

Example use of TR_DEBUG_FD, in bash:

$ export TR_DEBUG_FD=2
$ transmission 2>runlog

This will write all the flood of messages to a new file named "runlog". (Note: 2>runlog means pipe file descriptor 2 to the file "runlog". It could be any number, but I always use 2 for no reason in particular)