Installation
============

What follows are the installation instructions for Agile OODT.


Quick Instructions
------------------

As a user with administrative privileges, run either::

    pip oodt

or::

    easy_install oodt

depending on what's available on your system.  You're done!


Full Instructions
-----------------

Agile OODT requires the Python_ programming language.  We recommend version 2.4
or later.  As of this writing, 2.6 is the latest stable version.  If Python is
not yet installed on your system, you can find binary and and source
distributions from the Python website.

To test if a correct version of Python is available on your system, run::

    python -V
    
You should see output similar to::

    Python 2.6
    
indicating the version of Python installed.  You may then proceed to install
Agile OODT.

By far the easiest, recommended, and encouraged way to install Agile OODT is
either with Pip_ or EasyInstall_.  If your Python installation has either of
these installers available to it, then one command is all you need to run in
order to download, build, install, and generate command-line tools all in one
go for all users on your system.  For Pip users, it's::

    pip oodt

And for EasyInstall users, it's::

    easy_install oodt
    
Be sure to run that command as an administrative user.  For example, on Mac OS
X and other Unix systems, you might need to run either of::

    sudo pip oodt
    sudo easy_install oodt


Installing From Source
~~~~~~~~~~~~~~~~~~~~~~

If neither Pip nor EasyInstall are available, you can still make a proper
installation of Agile OODT by building it from its source code.  Just follow
these instructions:

1.  Download the Agile OODT source distribution and extract the source
    archive.  The source distribution is packaged as a gzip'd tar archive.
2.  Change the current working directory to the newly extracted directory.
3.  As an administrative user, run: ``python setup.py install``


For More Information
--------------------

Visit any of the following links for additional information, to ask questions,
report bugs, and so forth:

OODT Home Page
    http://incubator.apache.org/oodt/
Mailing List for OODT Development
    mailto:oodt-dev@incubator.apache.org
Package Page (Cheese Shop)
    http://pypi.python.org/pypi/oodt/
Issue Tracker (submit bug reports here)
    https://issues.apache.org/jira/browse/OODT


.. References:
.. _EasyInstall: http://packages.python.org/distribute/easy_install.html
.. _Pip: http://pip.openplans.org/
.. _Python: http://python.org/
