= Building Transmission = [[PageOutline]] If you are searching for a HOWTO, covering a specific distribution or device (NAS, router, ...), have a look at the [HeadlessUsage "Running Transmission on a headless machine"] page == Getting the Source == ==== Recommended ==== Source code for official releases can be found on our [http://www.transmissionbt.com/download.php download page]. ==== Experimental ==== Automated source code tarballs including the newest code [http://build.transmissionbt.com/job/trunk-linux/ 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://svn.m0k.org/Transmission/trunk 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.6 or newer * Mac OS X 10.6 SDK * Xcode 3.2 or newer (Found on your OSX installation disk, or from the [http://developer.apple.com/ Apple Developer website]) If building from source is too daunting for you, check out the [http://transmission.xpjets.com/ nightly builds].[[BR]] (Note: These are untested snapshots. Use them with care.) == On Unix == === Prerequisites === ==== Ubuntu ==== The packages you need are: * build-essential * automake * autoconf * libtool * pkg-config * libcurl4-openssl-dev * intltool * libxml2-dev * libgtk2.0-dev * libnotify-dev * libglib2.0-dev * libevent-dev Or simply run the following command: {{{ $ sudo apt-get install build-essential automake autoconf libtool pkg-config libcurl4-openssl-dev intltool libxml2-dev libgtk2.0-dev libnotify-dev libglib2.0-dev libevent-dev }}} ''After you install those you can skip [#Buildingfromatarball to this section].'' ==== CentOS 5.4 ==== The packages you need are: * gcc * gcc-c++ * m4 * make * automake * libtool * gettext * openssl-devel Or simply run the following command: {{{ $ yum install gcc gcc-c++ m4 make automake libtool gettext openssl-devel }}} However, Transmission needs other packages unavailable in {{{yum}}}: * [http://pkg-config.freedesktop.org/wiki/ pkg-config] * [http://curl.haxx.se/ libcurl] * [http://ftp.gnome.org/pub/gnome/sources/intltool/ intltool] Before building Transmission, you need to set the pkgconfig environment setting: {{{ $ export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig }}} ''After you install those you can skip [#Buildingfromatarball to this section].'' ==== Normal ==== If this is your first time compiling on Unix, you'll need a few basic tools: * gcc * libtool * gettext 0.14.1 or newer * intltool 0.40 or newer If you're planning to build from SVN: * automake 1.9 or newer * autoconf 2.54 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, preferably ssl or gnutls support. * libcurl 7.16.3 or newer * GTK+ 2.6 or newer (only needed by the GTK+ gui) * libnotify 0.4.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.76.tar.bz2 $ cd transmission-1.76 $ ./configure -q && make -s $ su (if necessary for the next line) $ make install }}} === Building from an SVN snapshot === ==== First Time ==== {{{ $ svn co svn://svn.m0k.org/Transmission/trunk Transmission $ cd Transmission $ ./autogen.sh && make -s $ su (if necessary for the next line) $ make install }}} ==== Updating ==== {{{ $ cd Transmission $ make clean $ svn up $ make -s $ su (if necessary for the next line) $ make install }}} == On Windows == For Windows XP and above there are several choices: === Cygwin environment === With Cygwin [http://cygwin.com/] installed, the CLI tools (transmission-remote, transmissioncli) and the daemon can be built easily. No patches needed(*), all the recent versions of Transmission built out-of-the-box, and the CLI tools work better under Cygwin that those built under MinGW. (*) With the upcoming version 2.0, libevent is not bundled and it's also not in Cygwin distribution... so you need to build it (which is as easy as ./configure, make install). There was one glitch with 2.00b1: the libevent headers and library are not found when they are installed in /usr/local/ which is the default place if you build w/o specifying --prefix=/usr, I added libevent_extra_libs+=" -L/usr/local/lib" to the configure script. === Native Windows === With a MinGW [http://mingw.org/] development environment, the Gtk and the Qt GUI applications can be built. The procedure: wiki:BuildingTransmissionQtWindows == Switches == The transmission {{{./configure}}} (or {{{./autogen.sh}}}) 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) * '''daemon''' = enables transmission-daemon and *-remote client (default) * '''cli''' = enables cli client (default. deprecated, consider using the daemon) * '''libnotify''' = enables lib notify (default) * '''nls''' = enables native language support (default) * '''mac''' = enables Mac client (default, if possible) * '''wx''' = enables wxWidgets client (unsupported) * '''beos''' = enables beos client (unsupported) Note: ''{{{--disable-nls}}} removes the dependancy on gettext and intltool. It's designed for, and should only be used on, [HeadlessUsage embedded devices]. If you do have GTK+ installed on your box, you must also specify {{{--disable-gtk}}}.''