= 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.transmissionbt.com/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.7 or newer * Mac OS X 10.7 SDK * Xcode 4.1 or newer Building the project on Mac requires the source to be retrieved from SVN. Pre-packaged source code will not compile. If building from source is too daunting for you, check out the [https://build.transmissionbt.com/job/trunk-mac/ 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.transmissionbt.com/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 almost out-of-the-box, and the CLI tools work better under Cygwin that those built with MinGW. (*) With version 2.0 and above, '''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). To build transmission you may need to add LDFLAGS="-L/usr/local/lib" to the configure script (LIBEVENT_LIBS doesn't seem to work when it comes to build all the test programs). Additionally '''libutp''' needs deleting -ansi on the Makefile. === Native Windows === With a MinGW [http://mingw.org/] development environment, the Gtk and the Qt GUI applications can be built. The CLI tools can also be built, and in general work fine, but may fail if you use foreign characters as parameters (MinGW doesn't pass those parameters, in fact the program receives garbage). 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}}}.''