Installing Transmission Bit Torrent Daemon on Nexenta


Solaris and Nexenta aren't exactly high profile operating systems in the bit torrent world so I expected some hurdles.
This guide is specific to Nexenta (Open Solaris + Debian packages). However some of it may help with plain (Open) Solaris or indeed any other Unix. However the Transmission Wiki is a better place for those: (external link)
If you don't mind using an old version you can install transmission 1.06 binaries using
apt-get install transmission
This packaged version does not appear to come with start/stop scripts or proper configuration so read on starting at Step 4 or 5 as needed.
I tried adding deb-src (external link) squeeze main to sources.list which did allow a recent source version to be downloaded but it could not be built without fakeroot and I didn't manage to get the latter installed.

All in all it seemed easier to manually build Transmission from source.


Look at Building Transmission Wiki (external link).
I shall assume you have compilers etc installed. Below I list the packages I had to explicitly install.
  • libssl-dev
  • libcurl4-openssl-dev
  • intltool >= 0.40.0

Step 1 - Install deb packages
sudo apt-get install libssl-dev libcurl4-openssl-dev

Step 2 - Install a more recent intltool
For me the following configure stage failed because transmission demands intltool version >= 0.40.0, more recent than the Nexenta version 0.37.1.
By default this will install in /usr/local/bin leaving the debian version untouched in /usr/bin. This is preferable, unless you obtain a newer debian package and install it 'properly'. Just make sure PATH contains /usr/local/bin before /usr/bin as it normally should.

Step 3 - Install Transmission
  • download transmission from (external link) (I used version 1.76)
  • unpack and cd into the source
  • ./configure
  • make
  • make install (can be omitted/delayed if necessary)

The default install locations are:
  • /usr/local/bin/
  • /usr/local/share/transmission/
  • /usr/local/share/man/man1/

Step 4 - Create a Transmission user account
This can be done as suggested in the wiki:
  • adduser --disabled-password transmission
Being an old die-hard admin I just added /etc/passwd and /etc/group entries, and chose uid/gids of 900 (something below normal user ids of 1000):


Step 5 - Set up system startup scripts
I suggest reading the (Transmission Bit Torrent Daemon Configuration) page before doing this.
  • Create an /etc/init.d/transmission startup script.
Exclamation Solaris Issues
There are some "issues" on Solaris. In my experience web/rpc interfaces can stop working, ports are no longer active (the fd's are open but the app isn't listening). Torrent speeds slow down after first 5 minutes (peers are chucked off).
There are two current workarounds/solutions:
  • increase the maximum number of file descrptors using ulimit before running Transmission. The default (typically 256) is generally too low for a torrent application. Try ulimit -n 2048 or 4096. Check that the value was actually changed, you may need to do it as root.
  • (From Transmission website:) 'Libevent has troubles with evports (the default poll mechanism used on Solaris). Disable evports by exporting EVENT_NOEVPORT=1 before starting transmission.'
NOTE: The sample scripts on (external link) may not be suitable. I had some problems with them YMMV. Also note that Transmission (now) seems capable of handling speed scheduling without the "Bandwidth Scheduler" cron script.

  • + : A leading plus sign indicates that this word must be present in every object returned.
  • - : A leading minus sign indicates that this word must not be present in any row returned.
  • By default (when neither plus nor minus is specified) the word is optional, but the object that contain it will be rated higher.
  • < > : These two operators are used to change a word's contribution to the relevance value that is assigned to a row.
  • ( ) : Parentheses are used to group words into subexpressions.
  • ~ : A leading tilde acts as a negation operator, causing the word's contribution to the object relevance to be negative. It's useful for marking noise words. An object that contains such a word will be rated lower than others, but will not be excluded altogether, as it would be with the - operator.
  • * : An asterisk is the truncation operator. Unlike the other operators, it should be appended to the word, not prepended.
  • " : The phrase, that is enclosed in double quotes ", matches only objects that contain this phrase literally, as it was typed.


Related Sites