= Debian Packages = Tahoe-LAFS is compatible with various releases of !Debian/Ubuntu. There are two forms of compatibility: "apt-get installable" and "runs-from-source". Both are pretty easy. If you just want to download a binary package and install it, you'll need the "apt-get installable" kind of compability. == Compatibility == ||platform||apt-get installable||deb buildable||tahoe-lafs deb available||dependency debs available||runs-from-source||included in distribution||priority|| ||Debian 5.0 "lenny" i386||yes?||yes||yes (use etch)||yes (use etch for zfec/foolscap)||yes?|| ||*|| ||Debian 5.0 "lenny" amd64||yes||[http://allmydata.org/buildbot/waterfall?builder=deb-lenny-soultcer&builder=deb-lenny-amd64-eugen yes]||[http://allmydata.org/debian/dists/lenny/tahoe/binary-all/ yes]||[http://allmydata.org/debian/dists/lenny/main/binary-amd64/ yes]||[http://allmydata.org/buildbot/waterfall?show_events=false&builder=Eugen+lenny-amd64&builder=Soultcer+lenny-amd64 yes]||no|| || ||Debian 5.0 "lenny" armv5tel||no|| ? ||no||no||[http://allmydata.org/buildbot/waterfall?show_events=false&builder=François+Lenny-armv5tel yes]|| || || ||Debian "squeeze" (unreleased)|| ? || ? || ? || ? || ? || || || ||Debian "sid" (unreleased) i386||yes||yes||no||yes||yes|| ||*|| ||Debian "sid" (unreleased) amd64||yes||yes||no||?||yes|| ||*|| ||Ubuntu 9.10 "karmic" i386|| ? || ? || ? || ? || ? ||Tahoe-LAFS v1.5.0||*|| ||Ubuntu 9.10 "karmic" amd64|| ? || ? || ? || ? || ? ||Tahoe-LAFS v1.5.0||*|| ||Ubuntu 10.04 "lucid" i386|| ? || ? || ? || ? || ? ||Tahoe-LAFS v1.6.1||*|| ||Ubuntu 10.04 "lucid" amd64|| ? || ? || ? || ? || ? ||Tahoe-LAFS v1.6.1||*|| "apt-get installable" means that it is possible to download a pre-built Tahoe-LAFS binary package from the APT repository on allmydata.org (as well as packages for any dependencies that are not otherwise available in the !Debian/Ubuntu release), and then run /usr/bin/tahoe to use that installation. Follow the instructions below to edit your /etc/apt/sources.list file. "apt-get installable" = ("tahoe-lafs deb available" AND "dependency debs available"). "deb buildable" means that a tahoe-lafs .deb package can be built from a source tree. "tahoe-lafs deb available" means the allmydata.org buildbot does this automatically, to populate the APT repository. We do not have automatic builders for all platforms, so there are holes in this table. "dependency debs available" means that the allmydata.org APT repository has debian packages available for everything that Tahoe-LAFS needs (those which are not already in that debian release: over time, many of the packages are being added to debian proper, and no longer need to be hosted here). This is required to make Tahoe-LAFS be "apt-get installable" on any given platform. "runs-from-source" means that it is possible to take a Tahoe-LAFS source tree (either from a downloaded tarball or from a darcs checkout) and run {{{python setup.py build}}} on it, then run {{{./bin/tahoe}}} to use it. This approach is described on the [http://tahoe-lafs.org/source/tahoe-lafs/trunk/docs/quickstart.html ""Quick Start""] page. The allmydata.org buildbot automatically tests run-from-source on most debian platforms. == !Downloading/Installing Binary Packages == allmydata.org hosts an APT repository at http://allmydata.org/debian/ . To install packages from this repository, add the following lines to your {{{/etc/apt/sources.list}}}, replacing the word {{{$DIST}}} with one of {{{etch}}}, {{{sid}}}, {{{edgy}}}, etc, as appropriate. {{{ deb http://allmydata.org/debian/ $DIST main tahoe deb-src http://allmydata.org/debian/ $DIST main tahoe }}} Then update and install the {{{allmydata-tahoe}}} package: {{{ sudo apt-get update sudo apt-get install allmydata-tahoe }}} apt-get will automatically acquire other dependency packages from the same repository (including {{{foolscap}}}, {{{zfec}}}, {{{pycryptopp}}}, and others). The "tahoe" section contains the Tahoe-LAFS debian packages, while the "main" section contains the dependency libraries. Note that these {{{allmydata-tahoe}}} packages are generated each time the code is changed, and represent the most up-to-date (read "unstable") version available. The usual warnings about no guarantees apply: it might cause your computer to catch fire, might steal your dog, etc. In the future, we will add a section to the repository that only contains released versions of Tahoe-LAFS, probably called "tahoe-releases". The packages in this section should be more stable than the bleeding-edge packages in the "tahoe" section. After installing see the [http://tahoe-lafs.org/source/tahoe-lafs/trunk/docs/running.html docs/running.html] for how to use it. There are no pre-built packages available for dapper or sarge, as these releases are too old to provide the necessary support packages (python-central, setuptools, etc). You can probably still install from source on these releases, however. == Problems == === Etch === Debian Etch (4.0, "oldstable") has a {{{python-pysqlite2}}} for Python 2.4 that lacks a {{{.egg-info}}}, so it is invisible to {{{setuptools}}}. Workarounds: 1. use Python 2.5 instead of Python 2.4. 2. {{{sudo apt-get install sqlite3-dev && sudo easy_install pysqlite}}}. === Edgy === Ubuntu Edgy (6.10) has a {{{python-pysqlite2}}} for Python 2.4 that has a {{{.egg-info}}} marked as being for Python 2.5, so it is invisible to {{{setuptools}}}. Workarounds: 1. use Python 2.5 instead of Python 2.4. 2. {{{sudo apt-get install sqlite3-dev && sudo easy_install pysqlite}}}. It appears that the version of Nevow (0.7.0) which shipped with edgy is broken (ubuntu bug [https://bugs.launchpad.net/ubuntu/+source/nevow/+bug/61423 #61423]), preventing the Tahoe-LAFS node's webserver from running. The symptom is an exception at node startup that looks like this: {{{ File "/var/lib/python-support/python2.4/formless/annotate.py", line 17, in ? from nevow.compy import Interface, MetaInterface exceptions.ImportError: cannot import name MetaInterface }}} We do not yet know of a solid workaround for this. One suggestion is to comment out the "from allmydata.webish import WebishServer" line from allmydata/client.py and not use the 'webport' feature. Another is to modify formless/annotate.py and try to fix that import problem. A third is to find a backport of a newer version of nevow. === Lenny === The combination of Twisted-8.1 and pyopenssl-0.7 triggers a bug (#402) that causes many unit tests to fail. This bug does not appear to impact actual operations. The current workaround is to upgrade to Twisted-8.2, downgrade to pyopenssl-0.6, or refrain from running unit tests. #768 (need .deb's of pycryptopp and zfec) #785 (lenny (onwards) packages should depend on python-pysqlite2 not python-sqlite2) == Building From Source On Debian Systems == If your platform is not listed as "apt-get installable" above, or if you don't have root access, or simply want to run Tahoe-LAFS without installing it, you can use the regular run-from-source procedure described in http://tahoe-lafs.org/source/tahoe-lafs/trunk/docs/quickstart.html . As long as you run this as a normal (non-root) user and don't use "sudo" at any time, this will not modify your system and will not interfere with the normal apt-get tools. Building from a source tree and then symlinking {{{~/bin/tahoe}}} to the tree's {{{bin/tahoe}}} executable is a convenient way to use Tahoe-LAFS without installing it to your {{{/usr}}} directory. Many of Tahoe-LAFS's build dependencies can be satisfied by first installing certain debian packages, and the Tahoe-LAFS build process will download and build many of the others. Please see source:docs/debian.txt for details about building Tahoe-LAFS on a debian-based system. The following text is a copy of source:docs/debian.txt . The Tahoe-LAFS build process will download and install many of its dependencies when you run {{{make}}} or {{{setup.py build}}}. The base set of functionality that it cannot build on its own are provided by the following debian packages, so you must have these installed before you will be able to do much of anything. (note that the authoritative list of packages is in the "{{{Build-Depends:}}}" clause of [source:misc/sid/debian/control misc/sid/debian/control]): * build-essential (this includes gcc, g++, make, and the headers in libc-dev) * debhelper * cdbs * python-central * python-setuptools * python * python-dev In addition, to use the "{{{make deb-PLATFORM-head}}}" target, you will also need the "debchange" utility from the "devscripts" package, and the "fakeroot" package. To actually run a Tahoe-LAFS node from a debian package, you will need the following dependencies installed. (again, the authoritative list of packages is in the {{{Depends:}}} clause of [source:misc/sid/debian/control misc/sid/debian/control]) * python-twisted-core * python-twisted-names * python-foolscap * python-pyopenssl * python-nevow * python-simplejson * python-zfec * python-pycryptopp Even if you don't intend to create a Tahoe-LAFS .deb package, you can install the supporting libraries from debian packages to reduce the build-time download-and-compile work. The Tahoe-LAFS build process will use any pre-installed libraries it can find, and will download+build everything else. == Building a Debian Package == Please see source:docs/debian.txt for details about building your own debian packages from a Tahoe-LAFS source tree. You will need to install the packages described above, including the "devscripts" and "fakeroot" packages, and you will use the {{{make deb-$PLATFORM-head}}} target. Note that this is entirely optional. Tahoe-LAFS will run just fine from a source tree: creating a debian package is merely a convenience for sysadmins to help them manage large numbers of Tahoe-LAFS nodes with established tools like apt-get. == Compatibility (Historical) == ||platform||apt-get installable||deb buildable||tahoe-lafs deb available||dependency debs available||runs-from-source||included in distribution||priority|| ||Debian 3.1 "sarge"||no||no||no||no||?||no|| || ||Debian 4.0 "etch" i386||no||yes||yes||no (missing pycryptopp)||[http://allmydata.org/buildbot/waterfall?show_events=false&builder=etch yes]|| || || ||Ubuntu 6.06LTS "dapper" i386||no||no||no||no||[http://allmydata.org/buildbot/waterfall?show_events=false&builder=dapper yes]|| || || ||Ubuntu 6.10 "edgy" i386||?||yes||yes||no (missing pycryptopp)||[http://allmydata.org/buildbot/waterfall?show_events=false&builder=edgy yes]|| || || ||Ubuntu 7.04 "feisty" i386||no?||yes||yes||no (missing pycryptopp)||[http://allmydata.org/buildbot/waterfall?show_events=false&builder=feisty2.5 yes]|| || || ||Ubuntu 7.10 "gutsy" i386||no (#149)||yes||yes||no (missing pycryptopp)||[http://allmydata.org/buildbot/waterfall?show_events=false&builder=gutsy yes]|| || || ||Ubuntu 8.10 "intrepid" i386||no||yes||no||no||?|| || || ||Ubuntu 9.04 "jaunty" i386||no||yes||no||no||yes|| || || ||Ubuntu 9.04 "jaunty" amd64||no||yes||no||no (missing zfec, foolscap)||[http://allmydata.org/buildbot/waterfall?show_events=false&builder=Shawn%20jaunty%20amd64 yes]|| || ||