= Debian Packages = Tahoe is compatible with various releases of Debian/Ubuntu. There are two forms of compatibility: "runs-from-source" and "runs-from-package". Both are pretty easy. If you just want to download a binary package and install it, you'll need the "runs-from-package" kind of compability. == Compability == (note, the contents of this table have not yet been verified) ||platform||runs-from-source||runs-from-package||support packages available|| ||Debian "etch"||[http://allmydata.org/buildbot/waterfall?show_events=false&builder=etch yes]||?||yes|| ||Debian "lenny"||yes||yes||yes (use etch)|| ||Debian "sid"||yes||yes||yes|| ||Ubuntu "dapper"||[http://allmydata.org/buildbot/waterfall?show_events=false&builder=dapper yes]||no||no|| ||Ubuntu "edgy"||[http://allmydata.org/buildbot/waterfall?show_events=false&builder=edgy yes]||?||yes|| ||Ubuntu "feisty"||[http://allmydata.org/buildbot/waterfall?show_events=false&builder=feisty2.5 yes]||no?||yes|| ||Ubuntu "gutsy"||[http://allmydata.org/buildbot/waterfall?show_events=false&builder=gutsy yes]||no (#149)||yes|| ||Ubuntu "hardy"||[http://allmydata.org/buildbot/waterfall?show_events=false&builder=hardy yes]||yes||yes|| ||Ubuntu "intrepid"||[http://allmydata.org/buildbot/waterfall?show_events=false&builder=Shawn+intrepid+amd64 yes]||yes||yes|| "runs-from-source" means that it is possible to take a Tahoe 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://allmydata.org/source/tahoe/trunk/docs/install.html ""Install Tahoe""] page. (If you can run-from-source, you should also be able to use {{{python setup.py install}}} to copy tahoe into /usr/bin/tahoe (or whatever is appropriate for your system), so you can use it after the source tree has been removed. However, using {{{setup.py install}}} will modify your /usr partition without the knowledge of the Debian package-management tools, making it more difficult to coordinate dependencies with other packages, and making it difficult to remove Tahoe later.) "run-from-package" means that it is possible to download a pre-built Tahoe 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. It also means that these .deb packages can be built from a source tree on those platforms (which the allmydata.org buildbot does automatically, to populate the APT repository). "support packages available" means that the allmydata.org APT repository has debian packages available for several of the libraries which Tahoe requires (those which are not already in the debian release). This might make it easier to build Tahoe from source (fewer things to download). == 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}}}, {{{feisty}}}, or {{{gutsy}}} 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. apt-get will automatically acquire other dependency packages from the same repository (including {{{foolscap}}}, {{{zfec}}}, {{{pycryptopp}}}, and others. The "tahoe" section contains the Tahoe debian packages, while the "main" section contains the support 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, 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://allmydata.org/source/tahoe/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 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. == Building From Source On Debian Systems == Many of Tahoe's build dependencies can be satisfied by first installing certain debian packages, and the Tahoe build process will download and build many of the others. Please see source:docs/debian.txt for details about building Tahoe on a debian-based system. The following text is a copy of source:docs/debian.txt . The Tahoe 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 node from a debian package, you will need the following supporting libraries 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 .deb package, you can install the supporting libraries from debian packages to reduce the build-time download-and-compile work. The Tahoe 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 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 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 nodes with established tools like apt-get.