doc/book/en/admin/setup.rst
author Alain Leufroy <alain.leufroy@logilab.fr>
Wed, 06 Apr 2011 12:33:39 +0200
branchstable
changeset 7226 e88c57c10b34
parent 7099 ee9f1e1890e0
child 7230 edd2a575a8e7
permissions -rw-r--r--
[doc] major update of the install documentation

.. -*- coding: utf-8 -*-

.. _SetUpEnv:

Installation of a *CubicWeb* environment
========================================

There are different simple ways to install |cubicweb| and its
dependencies depending on your requirements:

* `Distribution-specific installation`. This option shows you how to
  easily install |cubicweb| and its requirements on your system:

  - `Installation on Debian/Ubuntu`_ 
  - `Installation on Windows`_
  - `Install in a virtualenv`_

* `Official release installation`. This options is the best approach
  for those who want a flexible and up-to-date stable
  version. |cubicweb| is published on `PyPI`_:

  - `Installation with pip`_
  - `Installation with easy_install`_

* `Lastest development version installation`. This option is
  dedicated for power-users who want the very lastest
  features (|cubicweb| is an `Agile software <http://en.wikipedia.org/wiki/Agile_software_development>`_).

  - `Installation from tarball`_
  - `Installation from version control`_

Once installed, you can have a look to :ref:`ConfigEnv` for better control
and advanced features of |cubicweb|.

.. _`Installation on Debian/Ubuntu`: DebianInstallation_
.. _`Installation on Windows`: WindowsInstallation_
.. _`Install in a virtualenv`: VirtualenvInstallation_
.. _`Installation with pip`: PipInstallation_
.. _`Installation with easy_install`: EasyInstallInstallation_
.. _`Installation from tarball`: TarballInstallation_
.. _`Installation from version control`: MercurialInstallation_


.. _DebianInstallation:

Debian/Ubuntu install
---------------------

|cubicweb| is packaged for Debian/Ubuntu (and derived
distributions). Their integrated package-management systems make
installation and upgrading much easier for users since
dependencies/recommends (like databases) are automatically installed.

Depending on the distribution you are using, add the appropriate line to your
`list of sources` (for example by editing ``/etc/apt/sources.list``).

For Debian Squeeze (stable)::

  deb http://download.logilab.org/production/ squeeze/

For Debian Sid (unstable)::

  deb http://download.logilab.org/production/ sid/

For Ubuntu Lucid (Long Term Support) and newer::

  deb http://download.logilab.org/production/ lucid/

  Note that for Ubuntu Maverick and newer, you shall use the `lucid`
  repository and install the ``libgecode19`` package from `lucid
  universe <http://packages.ubuntu.com/lucid/libgecode19>`_.

The repositories are signed with the `Logilab's gnupg key`_. You can download
and register the key to avoid warnings::

  wget -q http://download.logilab.org/logilab-dists-key.asc -O- | sudo apt-key add -

Update your list of packages and perform the installation::

  apt-get update
  apt-get install cubicweb cubicweb-dev

``cubicweb`` installs the framework itself, allowing you to create new
instances. ``cubicweb-dev`` installs the development environment
allowing you to develop new cubes.

There is also a wide variety of :ref:`cubes <AvailableCubes>`. You can acces a
list of availble cubes using ``apt-cache search cubicweb`` or at the
`CubicWeb.org Forge`_.

.. note::

  `cubicweb-dev` will install basic sqlite support. You can easily setup
  :ref:`cubicweb with other database <DatabaseInstallation>` using the following virtual packages :

  * `cubicweb-postgresql-support` contains necessary dependency for
    using :ref:`cubicweb with postgresql datatabase <PostgresqlConfiguration>`

  * `cubicweb-mysql-support` contains necessary dependency for using
    :ref:`cubicweb with mysql database <MySqlConfiguration>`.

.. _`list of sources`: http://wiki.debian.org/SourcesList
.. _`Logilab's gnupg key`: http://download.logilab.org/logilab-dists-key.asc
.. _`CubicWeb.org Forge`: http://www.cubicweb.org/project/

.. _WindowsInstallation:

Windows Install
---------------

You need to have `python`_ version >= 2.5 and < 3 installed.

Then your best option is probably the :ref:`EasyInstallInstallation`.
In fact it is a pure python packages manager which lacks in Windows.
It helps users to install python packages along with dependencies,
searching for suitable pre-compiled binaries on the
`The Python Package Index`_.

Moreover, if you want better control over the process as well as
a suitable development environment or if you are having problems with
`easy_install`, move right away to :ref:`SetUpWindowsEnv`.

.. _python:  http://www.python.org/
.. _`The Python Package Index`: http://pypi.python.org

.. _VirtualenvInstallation:

`Virtualenv` install
--------------------

Since version 3.9, |cubicweb| can be safely installed, used and contained inside
a `virtualenv`_. You can use either 
:ref:`pip <PipInstallation>` or
:ref:`easy_install <EasyInstallInstallation>` to install |cubicweb| inside an
activated virtual environment.

.. _PipInstallation:

`pip` install
-------------

Using pip_ is the recommended way to install |cubicweb|. pip_ is a
smart python utility that lets you automatically download, build,
install, and manage python packages and their dependencies. It is full
compatible with `virtualenv`_.

pip_ install the packages from sources published on the
*The Python Package Index* (PyPI_).
You need a compilation environment because some dependencies have C
extensions. If you definitively wont, installing 
`Lxml <http://codespeak.net/lxml/>`_,
`Twisted <http://twistedmatrix.com/trac/>`_ and 
`libgecode <http://www.gecode.org/>`_ will help.

To install |cubicweb| and all dependencies just use the following command
line::

  pip install cubicweb

There is also a wide variety of :ref:`cubes <AvailableCubes>`. You can acces a
list of availble cubes on
`PyPI <http://pypi.python.org/pypi?%3Aaction=search&term=cubicweb&submit=search>`_ 
or at the `CubicWeb.org Forge`_.

For example, installing the *blog cube* is achieved by::

  pip install cubicweb-blog

.. _`gecode library`: http://www.gecode.org/


.. _EasyInstallInstallation:

`easy_install` install
----------------------

If you are not a Windows user and you have a compilation environment,
we recommend you to use the PipInstallation_.

Install |cubicweb| version >= 3.9 with::

  easy_install cubicweb

There is also a wide variety of :ref:`cubes <AvailableCubes>`. You can acces a
list of availble cubes on `PyPI
<http://pypi.python.org/pypi?%3Aaction=search&term=cubicweb&submit=search>`_
or at the `CubicWeb.org Forge`_. 

For example, installing the *blog cube* is achieved by::

  easy_install cubicweb-blog

.. note::

  If you encounter problem with :ref:`cubes <AvailableCubes>` installation,
  considere using :ref:`PipInstallation` which is more stable
  but do not offer binaries installation.

.. _`easy_install`:   http://packages.python.org/distribute/easy_install.html


.. _SourceInstallation:

Install from source
-------------------

.. _TarballInstallation:

You can download the archive containing the sources from our download site at
`http://download.logilab.org/pub/cubicweb/ <http://download.logilab.org/pub/cubicweb/>`_.

Make sure you also have all the :ref:`InstallDependencies`.

Once uncompressed, you can install the framework from inside the uncompressed
folder with::

  python setup.py install

Or you can run |cubicweb| directly from the source directory by
setting the :ref:`resource mode <RessourcesConfiguration>` to `user`. This will
ease the development with the framework.

There is also a wide variety of :ref:`cubes <AvailableCubes>`. You can acces a
list of availble cubes at the `CubicWeb.org Forge`_.


.. _MercurialInstallation:

Install from version control system
-----------------------------------

To install the lastest stable development version from our Mercurial
repository, you can use `pip` (you need a compilation devlopment to perform
such install)::

  pip install -e "hg+http://www.logilab.org/hg/cubicweb/@stable#egg=cubicweb"

Or, to develop with the framework you can keep up to date with on-going
development by cloning our :ref:`Mercurial <MercurialPresentation>`
repository::

  hg clone -u stable http://hg.logilab.org/cubicweb # stable branch
  hg clone http://hg.logilab.org/cubicweb # very lastest (development branch)

Then a practical way to get many of CubicWeb's dependencies and a nice set
of base cubes is to run the `clone_deps.py` script located in
`cubicweb/bin/`::

  python cubicweb/bin/clone_deps.py

(Windows users should replace slashes with antislashes).

This script will clone a set of mercurial repositories into the
directory containing the ``cubicweb`` repository, and update them to the
latest published version tag (if any).

.. note::

  In every cloned repositories, a `hg tags` will display a list of
  tags in reverse chronological order. One reasonnable option is to go to a
  taged version: the latest published version or example, as done by
  the `clone_deps` script)::

   hg update cubicweb-debian-version-3.10.7-1

Make sure you also have all the :ref:`InstallDependencies`.

.. _`pip`: http://pip.openplans.org/
.. _`virtualenv`: http://virtualenv.openplans.org/