# 2.2.3. Installing the code

## 2.2.3.1. The Buildbot Packages

Buildbot comes in several parts: `buildbot` (the buildmaster), `buildbot-worker` (the worker), `buildbot-www`, and several web plugins such as `buildbot-waterfall-view`.

The worker and buildmaster can be installed individually or together. The base web (`buildbot.www`) and web plugins are required to run a master with a web interface (the common configuration).

## 2.2.3.2. Installation From PyPI

The preferred way to install Buildbot is using `pip`. For the master:

    pip install buildbot

and for the worker:

    pip install buildbot-worker

When using `pip` to install, instead of distribution specific package managers, e.g. via apt or ports, it is simpler to choose exactly which version one wants to use. It may however be easier to install via distribution specific package managers, but note that they may provide an earlier version than what is available via `pip`.

If you plan to use TLS or SSL in master configuration (e.g. to fetch resources over HTTPS using `twisted.web.client`), you need to install Buildbot with `tls` extras:

    pip install buildbot[tls]

## 2.2.3.3. Installation From Tarballs

Use pip to install `buildbot` master or `buildbot-worker` using tarball.

Note

Support for installation using `setup.py` has been discontinued due to the deprecation of support in the `distutils` and `setuptools` packages. For more details, see Why you shouldn’t invoke setup.py directly.

If you have a tarball file named buildbot.tar.gz in your current directory, you can install it using:

    pip install buildbot.tar.gz

Alternatively, you can provide a URL if the tarball is hosted online. Make sure to replace the URL with the actual URL of tarball you want to install.

    pip install https://github.com/buildbot/buildbot/releases/download/v3.10.1/buildbot-3.10.1.tar.gz

Installation may need to be done as root. This will put the bulk of the code in somewhere like `/usr/lib/pythonx.y/site-packages/buildbot`. It will also install the buildbot command-line tool in `/usr/bin/buildbot`.

If the environment variable `$NO_INSTALL_REQS` is set to `1`, then `setup.py` will not try to install Buildbot’s requirements. This is usually only useful when building a Buildbot package.

To test this, shift to a different directory (like `/tmp`), and run:

    buildbot --version
    # or
    buildbot-worker --version

If it shows you the versions of Buildbot and Twisted, the install went ok. If it says “no such command” or gets an `ImportError` when it tries to load the libraries, then something went wrong. `pydoc buildbot` is another useful diagnostic tool.

Windows users will find these files in other places. You will need to make sure that Python can find the libraries, and will probably find it convenient to have buildbot in your `PATH`.

## 2.2.3.4. Installation in a Virtualenv

If you cannot or do not wish to install buildbot into a site-wide location like `/usr` or `/usr/local`, you can also install it into the account’s home directory or any other location using a tool like virtualenv.

## 2.2.3.5. Running Buildbot’s Tests (optional)

If you wish, you can run the buildbot unit test suite. First, ensure that you have the mock Python module installed from PyPI. You must not be using a Python wheels packaged version of Buildbot or have specified the bdist_wheel command when building. The test suite is not included with the PyPi packaged version. This module is not required for ordinary Buildbot operation - only to run the tests. Note that this is not the same as the Fedora `mock` package!

You can check if you have mock with:

    python -mmock

Then, run the tests:

    PYTHONPATH=. trial buildbot.test
    # or
    PYTHONPATH=. trial buildbot_worker.test

Nothing should fail, although a few might be skipped.

If any of the tests fail for reasons other than a missing `mock`, you should stop and investigate the cause before continuing the installation process, as it will probably be easier to track down the bug early. In most cases, the problem is incorrectly installed Python modules or a badly configured `PYTHONPATH`. This may be a good time to contact the Buildbot developers for help.