Installation
Konzepte
- Buildout
- erlaubt, identische Entwicklungsumgebungen einfach aufzusetzen. Hierzu nutzt buildout die Fähigkeit der setuptools, automatisch Abhängigkeiten aufzulösen und Aktualisierungen durchzuführen (s.a.: Jim Fulton: Buildout Tutorial).
- Python Eggs
- sind ein Deploymentformat für Python-Packages. Sie enthalten ein setup.py-Skript mit Metainformationen (Lizenz, Abhängigkeiten, etc.) Mit der Python-Bibliothek Setuptools können solche Abhängigkeiten automatisch nachgeladen werden, wobei in Eggs spezifische Versionen angegeben werden können.
- Python Package Index PyPI (aka Cheese Shop)
- Index mit tausenden von Python-Paketen. Setuptools, easy_install und buildout nutzen diesen Index, um Eggs automatisch zu installieren.
- EasyInstall
- Python-Modul mit dem der Python Package Index durchsucht werden kann und das die Pakete in die globale Python-Umgebung installiert. Neben Buildout werden wir nur noch ZopeSkel mit EasyInstall installieren, alle weiteren Eggs werden von Buildout in das lokale Buildout-Projekt heruntergeladen, unter anderem um Versionskonflikte zu vermeiden.
Installation
Bevor zc.buildout installiert werden kann, sind folgende Schritte erforderlich:
Installation von Python.
Anforderungen
- bash oder eine andere Shell
- ein C- und C++-Compiler
- GNU make
- Zope setzt das Python-zlib-Modul voraus, das Python beim Kompilieren erstellt sofern zlib.h in /usr/include installiert ist.
Für diese Anforderungen müssten auf Debian- und Ubuntu-Systemen folgende Pakete installiert werden:
$ sudo apt-get install build-essential zlib1g-dev
Falls Sie die SSL-Bibliotheken benötigen, z.B. zum Verschicken von Mails mit TLS, sollten Sie auf Debian- und Ubuntu-Systemen das OpenSSL-Paket installieren:
$ sudo apt-get install libssl-dev
Mir der GNU Readline-Bibliothek können Sie im Python-Prompt die zuletzt eingegebenen Befehle erneut aufrufen:
$ sudo apt-get install libreadline6-dev
Für die Indizierung von Word- und PDF-Dokumenten werden darüberhinaus noch die folgenden Pakete benötigt:
$ sudo apt-get install wv poppler-utils
Erstellen und Installieren
Anmerkung: Im Folgenden wird Python 2.6 für Plone 4 installiert. Für Plone 3 benötigen Sie hingegen weiterhin Python 2.4. Die Installationsschritte sind jedoch weiterhin dieselben sodass Sie einfach 2.6 durch 2.4 ersetzen können.
Gehen Sie in das Verzeichnis, in dem Sie die aktuelle Python-Version installieren möchten, z.B. in /opt/. Anschließend laden Sie das Python-Paket herunter und entpacken es:
# wget http://www.python.org/ftp/python/2.6.7/Python-2.6.7.tgz # tar -xvzf Python-2.6.7.tgz
Installieren Sie das Python-2.6.7-Paket. Auf Ubuntu-Systemen kann hierfür eine explizit gesetzte Umgebungsvariable LDFLAGS erforderlich sein, damit die zlib von Pythons setup.py gefunden und verwendet wird:
# cd Python-2.6.7 # ./configure --prefix=/opt/python/2.6.7
- --prefix
Python-Installationspfad. Ohne Angabe wird Python in /usr/local erstellt.
Anschließend fahren Sie mit der Installation fort:
# make # make install
Dieser Python-Interpreter kann nun in PATH eingetragen werden. Hierzu wird folgendes in die ~/.bashrc (oder auf dem Mac in ~/.bash_profile) eingetragen:
export PATH=/opt/python/2.6.7/bin:$PATH
Danach kann die Konfiguration neu eingelesen werden mit:
$ source ~/.bashrc
Um ein Buildout-Projekt zu erstellen, wird darüberhinaus noch PasteScript benötigt, ein Werkzeug zum Erstellen eines Projektgerüsts oder eines Python-Pakets aus bestimmten Vorlagen. Für die Zope- und Plone-Entwicklung stellt ZopeSkel solche Vorlagen bereit. PasteScript, ZopeSkel und Buildout lassen sich einfach mit easy_install installieren:
# mkdir /opt/python/2.6.7/Extensions # cd /opt/python/2.6.7/Extensions # wget http://peak.telecommunity.com/dist/ez_setup.py # python ez_setup.py # easy_install ZopeSkel # easy_install zc.buildout
Welche Versionen dieser Python-Pakete mit easy_install installiert wurde, steht in der Datei /opt/python/2.6.7/lib/python2.6/site-packages/easy-install.pth.
Wollen Sie zu einem späteren Zeitpunkt eines dieser Python-Pakete aktualisieren, so können Sie dies mit der Option -U, also z.B.:
# easy_install -U ZopeSkel
Sie können auch spezifische Versionen angeben, z.B.:
# easy_install ZopeSkel==2.21.2
Anmerkung: Verwenden Sie z.B. Subversion 1.5 zusammen mit Buildout und erhalten folgende Fehlermeldung:
NameError: global name 'log' is not defined
dann benötigen Sie mindestens die dev06-Version der setuptools. Dies erhalten Sie mit:
# easy_install setuptools==dev06
Falls Sie folgende Fehlermeldung bekommen:
Running Markdown-2.0.1/setup.py -q bdist_egg --dist-dir /tmp/easy_install-Ne8fpa/Markdown-2.0.1/egg-dist-tmp-HjHi02 error: Setup script exited with error: Setup script exited with error: Setup script exited with error: Setup script exited with interrupted
dann können Sie zc.buildout auch ohne Abhängigkeiten installieren:
# easy_install -N zc.buildout
Mac OS X
Installieren der OSX development tools (XCode).
Installieren von Macports.
Installieren der folgenden Abhängigkeiten:
$ sudo port install python26 py26-pil py26-distribute wget $ easy_install ZopeSkel
Um bootstrap.py aufzurufen, sollte folgender Befehl verwendet werden um zu gewährleisten, dass der Python-Interpreter von Macports verwendet wird:
$ python2.6 bootstrap.py
Weitere Informationen
- Buildout hinter einem Proxy
Häufig kann Buildout nicht direkt auf die Quellen zugreifen um Python Eggs o.ä.herunterzuladen. In diesem Fall sollte der Proxy zunächst als Environment-Variable z.B. in der ~/.bashrc-Datei angegeben werden:
export http_proxy = http://localhost:8123/ export https_proxy = http://localhost:8123/
Alternativ kann auch über einen ssh-Tunnel auf den entfernten Server zugegriffen werden:
$ ssh -L 8123:localhost:8123 yourserver.com
- Setzen des LD_LIBRARY_PATH
LD_LIBRARY_PATH ist eine Unix-Environment-Variable, die angibt, aus welchem Verzeichnis dynamisch verlinkte Bibliotheken (*.so-Dateien) geladen werden sollen. Falls die systemweit verfügbaren Bibliotheken überschrieben werden sollen, kann dies mit environment-vars aus dem zope2instance-Rezept geschehen:
[instance] … # Use statically compiled libxml2 environment-vars = LD_LIBRARY_PATH ${buildout:directory}/parts/lxml/libxml2/lib:${buildout:directory}/parts/lxml/libxslt/lib