.. _buildout-manual:

===================================
Buildout: installazione manuale
===================================

Per chi usa debian/ubuntu nn ha senso fare l'installazione manuale
altro che per comprender i passaggi. Queste istruzioni dovrebbero
funzionare su tutte le distro Linux e Mac Os fatte le debite modifiche
sulle librerie da installare e sulle modalità specifiche di ogni distro.

1. Per potere compilare i vari pacchetti che possono servire
   suggeriscodi installare::

     python-dev, libpq-dev,  postgresql-server-dev-8.4 | postgresql-dev , 
     libxslt1-dev, libsasl2-dev, libjpeg62 | libjpeg8,    
     libjpeg8-dev | libjpeg62-dev, libfreetype6, 
     libfreetype6-dev, zlib1g-dev, python-uno, mercurial, libldap2-dev


   in particolare:

   :libsasl2-dev: serve per compilare ldap, richiesto da django-ldap-groups
       e fornisce :file:`sasl.h`
   
   :libxslt1-dev: è necessario per compilare lxml
   
   :libpq-dev: è necessario per compilare psycopg2

   :libjpeg62 | libjpeg8: per PIL con render jpg

2. Occorre configurare una cache locale ed il puntatore ai repository

   .. code-block:: ini

      ~ $ cat ~/.buildout/default.cfg-

      [buildout]
      eggs-directory = /home/tuonome/.buildout/eggs
      download-cache = /home/tuonome/.buildout/download-cache

      [thunder]
      jmb2 = /usr/local/src/hg/thunder/jmb2
      # jmb2 = http://dev@hg.thundersystems.it/jumbo2/
      # jmb2 = http://read:letmeread@hg.thundersystems.it/jumbo2/
      extra-paths = /home/local/.buildout/extra-path

   La sezione ``[thunder]`` imposta invece la posizione dei
   repository. Delle 3 versioeni proposte
   per la variabile jmb2:
   
   * la prima punta alla copia locale invece che a quella
     remota per ovvii vantaggi di velocità. Ricordate che così facendo 
     non esiste un meccanismo automatico per aggiornare la copia
     locale

   * la seconda suppone che abbiate una chiave sul server di Thunder
     
   * la terza è una opzione in sola lettura
      
3. Crea una cartella con dei link a librerie che vuoi vengano viste dal
   sistema isolato ma che non vuoi dovere compilare in buildout. Useremo
   questa princialmente per evitare di ricompilare la libreria ``uno`` di
   OpenOffice/LibreOffice::

      mkdir ~/.buildout/extra-path
      cd  ~/.buildout/extra-path
      ln -s /usr/lib/python2.7/dist-packages/uno.py
      ln -s /usr/lib/python2.7/dist-packages/unohelper.py

   Nota che buildout NON espande ``~`` che va quindi scritta
   in esplicito. La cartella della cache e quella delle egg non sono
   indispensabili ma accelerano immensamente il deploy.

4. Mettete in una cartella locale che sia nel PATH di sistema o che
   sia stata da voi aggiunta nel PATH (ad es. in .bashrc
   PATH=$PATH:~/.jmb-bin) una copia di tutte le `script da noi usate`_

   Ad esempio::

     mkdir -p ~/src/jmb
     cd ~/src/jmb
     hg clone http://read@hg.thundersystems.it/tools/thunder-buildout
     echo 'PATH=$PATH:~/src/jmb/thunder-buildout/bin' >> ~/.bashrc
     . ~/.bashrc

.. _`script da noi usate`: http://hg.thundersystems.it/tools/thunder-buildout/file/8aac78356773/bin
