.. _installation_and_setup: Installation and setup ====================== Ubuntu, Fedora & SUSE/openSUSE ------------------------------ First, clone the `git repository `__:: git clone https://github.com/ceph/teuthology.git Next, run the bootstrap script, which will do everything for you assuming you have ``sudo``:: cd teuthology ./bootstrap Finally, activate the ``virtualenv``:: source virtualenv/bin/activate Run a teuthology command to confirm that everything's working. For instance:: teuthology --help MacOS X ------- The ``bootstrap`` script was recently updated to support MacOS X using `homebrew `_:: ./bootstrap **Note**: Certain features might not work properly on MacOS X. Patches are encouraged, but it has never been a goal of ours to run a full ``teuthology`` setup on a Mac. Other operating systems ----------------------- Patches are welcomed to add ``bootstrap`` support for other operating systems. Until then, manual installs are possible First install the non-PyPI dependencies:: python-dev python-pip python-virtualenv libevent-dev python-libvirt Next, clone its `git repository `__, create a `virtualenv `__, and install dependencies. The instructions are given below:: git clone https://github.com/ceph/teuthology/ cd teuthology virtualenv --python python3 ./virtualenv source virtualenv/bin/activate pip install --upgrade pip pip install -r requirements.txt python setup.py develop Teuthology in PyPI ------------------ However if you prefer, you may install ``teuthology`` from `PyPI `__:: pip install teuthology **Note**: The version in PyPI can be (*far*) behind the development version. Or from GitHub:: pip install git+https://github.com/ceph/teuthology#egg=teuthology[orchestra] where the dependencies for orchestrating are installed. They are used for interacting with the services to schedule tests and to report the test results. Update Dependencies ------------------- We track the dependencies using ``requirements.txt``. These packages are tested, and should work with teuthology. But if you want to bump up the versions of them, please use the following command to update these files:: ./update-requirements.sh -P Please upgrade pip-tool using following command :: pip install pip-tools --upgrade if the command above fails like:: Traceback (most recent call last): File "/home/kchai/teuthology/virtualenv/bin/pip-compile", line 5, in from piptools.scripts.compile import cli File "/home/kchai/teuthology/virtualenv/local/lib/python2.7/site-packages/piptools/scripts/compile.py", line 11, in from pip.req import InstallRequirement, parse_requirements ImportError: No module named req Add Dependencies ---------------- td,dr: please add the new dependencies in both ``setup.py`` and ``requirements.in``. We also use ``pip install `` to install teuthology in some Ceph's unit tests. To cater their needs, some requirements are listed in ``setup.py`` as well, so that ``pip install`` can pick them up. We could just avoid duplicating the packages specifications in two places by putting:: -e .[orchestra,test] in ``requirements.in``. But dependabot includes:: -e file:///home/dependabot/dependabot-updater/tmp/dependabot_20200617-72-1n8af4b # via -r requirements.in in the generated ``requirements.txt``. This renders the created pull request useless without human intervention. To appease dependabot, a full-blown ``requirements.in`` collecting all direct dependencies listed by ``setup.py`` is used instead.